#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;
}
问问题
12637 次
3 回答
5
i
将无法在第一个 for 循环中存活。您应该在执行任何操作之前声明它或在第二个循环中再次声明它。
要理解它,请使用带有“c”、“变量”、“范围”关键字的 google
于 2013-06-15T13:19:18.337 回答
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
在函数的开头定义。
于 2013-06-15T13:20:37.197 回答
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
循环中持续
于 2013-06-15T13:21:34.427 回答