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

我觉得这多维数代码有问题

54e13e7a0001976703610311.jpg

       【0】【1】【2】

【0】1        2       3

【1】4        5       6      

【2】7         8       9

首先对角线之和就应该包括{【0,0】【1,1】【2,2】【0,2】【2,2】

但那代码中的i%2==0且j%2==0只能求出【0,0】【2,2】再加上for外的【1,1】,求得的sum应该是15,那问题来了【0,2】【2,2】去哪了?sum的结果还能等于25?

&&这个应该是且不是或吧?

求解答

正在回答

6 回答

你可以参考一下我写的,换成4*4或者5*5任意方形的矩阵都可以,比如arr[4][4] = {{1,2,3,4},{5,6,7,8},{1,2,3,4},{5,6,7,8}};  然后row=column=4;你试试看

0 回复 有任何疑惑可以回复我~
#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 row,column;
    row = column =3;    
    for(i=0;i<row;i++){       
        sum += (i==column-i-1)?(arr[i][i]):(arr[i][i]+arr[i][column-i-1]);
    }    
    printf("对角线元素之和是:%d\n",sum);    
    return 0;    
}


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

这代码是写的不好,我看了很多答案里的代码都是只能求这道题的3*3矩阵,换成4*4,5*5就不行了,不过这个在这道题来说还是对的,i%2==0&&j%2==0,第一行满足条件的是arr[0][0],arr[0][2],第二行没有,第三行arr[2][0],arr[2][2],最后加上中心的arr[1][1],没错,但这样的写法是很差的,稍微换一下,换成4*4的矩阵,这个代码全废了。

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

n*n矩阵,对角线元素应该有2n-1个,因为正反两条对角线。第i行的对角线元素是每行里的正数第i个和倒数第i个,也就是a[i][i]和a[i][n-1-i]。把这些加起来,一重循环就够了。最后别忘了减一次最中心的,因为这一元素被加了两遍

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

同理i=2且j=0的时候也是

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

i=0 且 j=2的时候也符合的 你想想

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

举报

0/150
提交
取消

我觉得这多维数代码有问题

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