为了账号安全,请及时绑定邮箱和手机立即绑定

哪位大佬可以看看哪里错了

# 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;

}

}

}


正在回答

4 回答

你的for循环没有打{}这个符号!

0 回复 有任何疑惑可以回复我~
#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; 
}


//不知道你想完成的是不是这个


0 回复 有任何疑惑可以回复我~

好的好的,我试下。

0 回复 有任何疑惑可以回复我~

第一:你为什么把printf("please input :"); 放在for循环中,它不会反复打印吗?把这个提到循环之外去。

第二:你的地址符没有打上去,就是scanf中的&。


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

哪位大佬可以看看哪里错了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信