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

大家知道哪里有问题吗

http://img1.sycdn.imooc.com//5e675252000162d603470300.jpg大家看看哪里有问题


正在回答

7 回答

你的J没有进行循环遍历

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

你少了个对j的遍历,也就是这样

#include <stdio.h>
int main(){    
    int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};    
    int i,j;    
    int sum=0;    
    for(i=0;i<3;i++) {        
        for(j=0;j<3;j++){            
            if(i==j){                
                sum += arr[i][i];            
                }            
            if(i-j==2||i-j==-2){                
                sum += arr[i][j];             
                }        
        }           
    }    
    printf("对角线元素之和是:%d\n",sum);    
    return 0;    
}


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

从设计角度上来说更容易扩展,当length不固定时,对于正矩形来说这种方法更合适。%2这个可能就被限制在length=3的死角了。附上正矩形对角线之和的代码:

#include <stdio.h>

int main()

{

    int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};

    int i,j;

    int sum=0;

    int length = 3;

    for(i=0;i<length;i++)

    {

       for(j=0;j<length;j++) {

           if(i == j || i == length-1-j) {

               sum += arr[i][j];

           }else {

               continue;

           }

       }

    }

    printf("对角线元素之和是:%d\n",sum);

    return 0;    

}



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

另外分享本人自写正确代码:

#include <stdio.h>

int main()

{

    int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};

    int i,j;

    int sum=0;

    int a;

    for(i=0;i<3;i++)

    {

     for(j=0;j<3;j++)

      {

         if(arr[i][j]%2!=0)

         sum+=arr[i][j];

      }

      

    }

    printf("对角线元素之和是:%d\n",sum);

    return 0;    

}


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

我发现2个问题。

1:你的j一直定义为0,并没有出现j自增,从始至终没有变化j始终为0.所有不对。

2:第九行的if(i=j)写错。要表达自身应出现两个。正确为if(i==j).

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

if(i+j==2 || i==j)

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

我看不出来你的问题

但是我提供一下我的思路  就是  (i+j)%2=0

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

举报

0/150
提交
取消
C语言入门
  • 参与学习       926210    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

大家知道哪里有问题吗

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