分类：电脑/网络-程序设计-C/C++
问题：新手问题.main(){inta[5][5];inti,j,k; 
main()
{
int a[5][5];
int i,j,k;
a[i][j]=k;
for(i=0;i<5;i++);
for(j=0;j<5;j++);
if(i==j)k=0;
else k=1;
printf("%d\n",a[5][5]);
getch() ;
}
我本来想表达的是
0 1 1 1 1
1 0 1 1 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 0
显示编辑成功但是结果是-32.这是怎么回事?
回答：应该改成：main(){  int a[5][5];  int i,j;  for(i=0;i<5;i++)  {    for(j=0;j<5;j++)    {      if(i==j)        a[i][j]=0;      else        a[i][j]=1;      printf("%d",a[i][j]);        }    printf("\n");  }  getch();}原来的中，变量k是多余的，没有用。a[i][j]=k;是有问题的，因为i，j，k都没有初始化，这这样的结果是不可预期的。printf;要放在循环里面打印，而楼主放到了循环外面，所以只会打一个数字。再有，printf("%d\n",a[5][5]);中，a[5][5]已经越界，因为整个数组是5*5的，最大只能是a[4][4];所以输出的结果不可预知。可能楼主是想用printf("%d\n",a[5][5]);把整个数组打印出来，这是不队的，这里打a[5][5]只是代表一个数字而已。要想打印整个数组，必须把这个数字遍历一变，逐项打出。实际上，这个例子中的数组也是不必要的，可以把程序改成：main(){  int i,j, k;  for(i=0;i<5;i++)  {    for(j=0;j<5;j++)    {      if(i==j)        k=0;      else        k=1;      printf("%d",k);        }    printf("\n");  }  getch();}