慕粉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语言入门
928215 学习 · 21546 问题
相似问题