求助: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等代码访问这两个变量时,编译器会提示“未声明”。
修复步骤
- 调整变量声明位置:把
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; // 后续代码保持不变 }
- 移除重复的
srand调用:你已经在main里调用过srand(time(NULL)),这个函数里的srand(time(NULL))必须删掉。srand是用来初始化随机数种子的,只需要在程序启动时调用一次即可;多次调用会导致随机数重复(短时间内time(NULL)返回的时间戳相同,种子一致,生成的随机数序列就会重复)。
内容的提问来源于stack exchange,提问作者Elas
相关产品推荐
相关产品推荐

