#include<iostream>
#include<conio.h>
int a[9][9], b[9][9];
int inputvalue(int x, int y, int value)
{
for (int i = 0; i < 9; i++) {
if (value == b[x][i] || value == b[i][y])
return 0;
}
for (i = (x / 3) * 3; i <= ((x / 3) * 3) + 2; i++)
for (int j = (y / 3) * 3; j <= ((y / 3) * 3) + 2; j++)
if (b[i][j] == value)
return 0;
return value;
}
答案 0 :(得分:5)
i
将无法在第一个for循环中存活。您应该在执行任何操作之前声明它,或者在第二个循环中再次声明它。
要理解它,请使用谷歌“c”,“变量”,“范围”关键字
答案 1 :(得分:4)
因为for
构造中定义的变量只能在for
循环中使用。
那就是
中的变量i
for (int i=0; i<9; i++){
if (value==b[x][i] || value==b[i][y])
return 0;
}
不能用于
for (i=(x/3)*3; i<=((x/3)*3)+2; i++)
for (int j=(y/3)*3; j<=((y/3)*3)+2; j++)
if (b[i][j]==value)
return 0;
要解决此问题,您可以在第二个循环中再次声明变量i
,而仅在第二个循环中声明变量for (i=(x/3)*3; i<=((x/3)*3)+2; i++)
。变化
for (int i=(x/3)*3; i<=((x/3)*3)+2; i++)
到
i
或者,您可以在函数的开头定义{{1}}。
答案 2 :(得分:0)
将for (i = (x / 3) * 3; i <= ((x / 3) * 3) + 2; i++)
更改为for (int i = (x / 3) * 3; i <= ((x / 3) * 3) + 2; i++)
,i
定义仅在第一个for
循环中持续