慕粉1637296256
2018-11-17 09:58
# include <stdio.h>
int main()
{
int i,j,s1=0,s2=0;
int a[5][5];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
printf("please input :");
scanf("%d",a[i][j]);
for(i=0;i<5;i++)// 判断每行元素之和是否相等
{
int s=0;
for(j=0;j<5;j++)
{
s+=a[i][j];
}
for(j=0;j<5;j++)// 判断每列元素之和是否相等
{
int s=0;
for(i=0;i<5;i++)
{
s+=a[i][j];
}
for(i=0;i<5;i++)
{ s1+=a[i++][i++];
}
for(i=0;i<5;i++)
{
s2+=a[i][4-i];
}
if(s==s1&&s1==s2)
printf("这是幻方阵\n");
else
printf("这不是幻方阵\n");
printf("%-3d",a[i][j]);
printf("\n");
return 0;
}
}
}
你的for循环没有打{}这个符号!
#include <stdio.h> #define m 5 #define n 5 int main() { int i,j,s1=0,s2=0,l_s = 0,h_s = 0; int a[m][n]; for(i=0;i<m;i++) { for(j=0;j<n;j++) { printf(" please input :"); scanf("%d",&a[i][j]); if(i == 0) l_s += a[0][j]; getchar(); } h_s += a[i][0]; } for(i=0;i<m;i++)// 判断每行之和是否相等 { for(j = 0;j < n;j++) { s1 += a[i][j]; // 判断每列之和是否相等 s2 += a[j][i]; } if(s1 != l_s || s2 != h_s) // 有不等于 直接结束程序 { printf("不是幻方阵!\n"); return 0; // 结束程序; } else { s1=0; s2=0; //重新接收和 } } printf("是幻方阵\n"); //printf("%-3d",a[i][j]); //这句 不太看得懂什么意思我就不改了 //printf("\n"); return 0; } //不知道你想完成的是不是这个
好的好的,我试下。
第一:你为什么把printf("please input :"); 放在for循环中,它不会反复打印吗?把这个提到循环之外去。
第二:你的地址符没有打上去,就是scanf中的&。
C语言入门
926207 学习 · 20797 问题
相似问题