新手问题.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(); }