You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:C语言函数中l和col变量未声明报错及rand相关疑问

C语言函数变量未声明错误及修复方案

变量未声明的核心原因

你在do-while循环的do代码块内声明了l和col:

do {
  int l = rand() % 9;
  int col = rand() % 9;
} while (matrice[l][col] == '.');

C语言遵循块级作用域规则,块内定义的变量只能在当前大括号范围内生效。出了do的大括号后,l和col就会被销毁,因此后续的while条件判断、matrice[l][col] = jeton等代码访问这两个变量时,编译器会提示“未声明”。

修复步骤

  1. 调整变量声明位置:把l和col移到do-while循环外部声明,让整个函数都能访问这两个变量:
void joueur_ordinateur(char jeton, int *a) {
  int l, col; // 移到循环外部声明
  do {
    l = rand() % 9;
    col = rand() % 9;
  } while (matrice[l][col] == '.');

  matrice[l][col] = jeton;
  // 后续代码保持不变
}
  1. 移除重复的srand调用:你已经在main里调用过srand(time(NULL)),这个函数里的srand(time(NULL))必须删掉。srand是用来初始化随机数种子的,只需要在程序启动时调用一次即可;多次调用会导致随机数重复(短时间内time(NULL)返回的时间戳相同,种子一致,生成的随机数序列就会重复)。

内容的提问来源于stack exchange,提问作者Elas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:20:28