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