-8
#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;
}
4

3 回答 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 回答