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

关于多维数组遍历求对角线之和,求教

#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++)

    { 

        int sum1=0;

        int sum2=0;

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

       

       {

          

           if(i==j)

           {

               sum1=sum1+arr[i][j];

        }

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

           {

               sum2=sum2+arr[i][j];

           }

           

       }

       

       sum=sum1+sum2;

    

    }

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

    return 0;    

}

不知道怎么改。求高手··谢谢

正在回答

3 回答

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


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

love1314 提问者

非常感谢!
2016-10-31 回复 有任何疑惑可以回复我~


#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 sum1=0;
    int sum2=0;//这里的sum1和sum2的赋值应在第一个for循环之外
    for(i=0;i<3;i++)
    {
       for(j=0;j<3;j++)
       {
           if(i==j)
           {
               sum1=sum1+arr[i][j];
            }
           else if(i+j==2&&i!=j)
           {
               sum2=sum2+arr[i][j];
           }
       }
       sum=sum1+sum2;
    }
    printf("对角线元素之和是:%d\n",sum);

   

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

love1314 提问者

非常感谢,您的代码解决了我的两个大问题,一个赋值位置,一个逻辑运算符,没选您是因为那个答案更简洁。已经用了条件else。估计您是怕我看不懂所以没简写。嘻嘻
2016-10-31 回复 有任何疑惑可以回复我~
#2

闲时弄月

为什么sum1和sum2赋值位置要在第一个for前面????、
2016-12-29 回复 有任何疑惑可以回复我~

有俩条对角线,你排出来就懂了,矩阵么,对角线和为(i+j)%2=0,像a[0][0]和a[0][2]都在对角线上,分别是正对角线和反对角线

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

举报

0/150
提交
取消

关于多维数组遍历求对角线之和,求教

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