c++的一个编辑问题

来源:百度知道 编辑:UC知道 时间:2024/07/15 21:55:04
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int N[100],a,b,c[9][9],d,e,f,m;

cout<<"N=";
cin>>b;//20
for(a=1;a<=b;a++)
cin>>N[a];//赋值N[1]-N[20]

for(m=0;m<=9;m++)//0 1 2 3 4 5 6 7 8 9
for(f=0;f<=9;f++)//0 1 2 3 4 5 6 7 8 9
{c[m][f]=0;cout<<"1";}
system("PAUSE");
return EXIT_SUCCESS;
}

这在第2个FOR的时候不是死循环,但将第2个FOR循环的m变成a,那么这就是个死循环(开始执行的时候1是无限),不知道为什么,不应该在for的(;;)第一个分号前我已经将a给重新定义了么...为什么会出现这种情况,求助....

没仔细看,不过c的数组大小是9x9
你两个for都是从0-9,已然超界了

for(a=0;a<=9;a++) 这样应该是没问题的

注意到你定义的数组是c[9][9],下标的合法范围是0-8,而你的循环
for(m=0;m<=9;m++)//0 1 2 3 4 5 6 7 8 9
for(f=0;f<=9;f++)//0 1 2 3 4 5 6 7 8 9
超过了这个范围,出现了非法访问,可能由于你使用的是debug模式编译的,程序还可以运行,也不报错,但是结果是不对的。