不知道哪里错了。。。运行不出来,什么也没显示

来源:6-11 多维数组的遍历

礼X

2019-02-01 10:16

https://img4.mukewang.com/5c53aba000012f4f07350611.jpg求大神解答

写回答 关注

3回答

  • 白腿小隼熊猫鸟
    2019-02-22 19:04:58

    可以观察对角线元素的下标的特点,一个是行等于列,一个是行加列等于2,所以可以把if()语句写成这样:

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

    没有必要去关心元素本身的值。

  • weixin_慕九州9513709
    2019-02-15 11:25:56

    首先你应该明确对角线元素的下标具有什么特征:

    1. 从左上往右下的那条对角线的元素的特征:行列下标相等,如arr[0][0], arr[1][1];

    2. 从右上往左下的那条对角线的元素的特征:行列下标之和为2,如arr[0][2], arr[1][1];

      你应该根据这个设置判断条件,你可以用两个for循环,一个对i,一个对j。

      你可以在纸上画画:

      1    2    3

      4    5    6

      7    8    9

      还有你可能有这样的疑问: 1 + 5 +9 +3 +5+7 = 30, 为什么答案是25?

      因为题目问的是对角线元素之和,你这样就算多了1次5, 而我们的程序之所以算出的是25,是因为系统一个一个地检验元素是否满足i == j 或者i + j ==2,遇到5时发现两个条件均满足,但只算一次,满足条件。

    你的程序中的=有误,表赋值,==才是相等,

  • 修裾欲溯空
    2019-02-01 11:38:51
    #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++)
        {
           sum+=arr[i][i];
        }
        for(i=2;i>=0;i--)
        {
            sum+=arr[i][2-i];
        }
        printf("对角线元素之和是:%d\n",sum-5);
        return 0;    
    }

    这是我的代码,你看看吧,还有就是==是表判断,=是赋值

C语言入门

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

926027 学习 · 20793 问题

查看课程

相似问题