这个C语言程序哪里错误?为什么输出总是0?

#include<stdio.h>
#define N 11
main()
{int x,y,n,i;
float s=0,a[N][N];
scanf("%d",&n);
for(y=1;y<=n;y++)
{for(x=1;x<=n;x++)
{scanf("%d",&a[x][y]);
}
}
for(i=1;i<=n;i=i++)
s=s+a[i][i]+a[i][n+1-i];
if(n%2==1){s=s-a[(n+1)/2][(n+1)/2];}
printf("%d\n",s);
getch();
}
这个程序是用来计算10*10以内方阵的对角线各数之和的,应该怎样修改才能得到正确的程序呢?

第1个回答  2010-04-28
scanf("%d",&a[x][y]);

改为

scanf("%f",&a[x][y]);

printf("%d\n",s);

改为

printf("%f\n",s);本回答被提问者采纳
第2个回答  2010-04-28
#include<stdio.h>
#define N 11
main()
{int x,y,n,i;
float s=0,a[N][N];
printf("输入n值(n<%d):",N);
scanf("%d",&n);
for(y=0;y<=n;y++)
{for(x=0;x<=n;x++)
{
printf("输入a[%d][%d]值:",y,x);
scanf("%f",&a[x][y]);
}

}
for(i=1;i<=n;i++)
s=s+a[i][i]+a[i][n+1-i];

if(n%2==1)
{
s=s-a[(n+1)/2][(n+1)/2];
}

printf("%f\n",s);

}
第3个回答  2010-04-28
c数组不是从0开始的么?
相似回答