11 6 [错误]'i'的名称查找为ISO'更改'范围[-fpermissive]

时间:2013-06-15 13:16:21

标签: c++

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

3 个答案:

答案 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循环中持续