为什么会运行失败 哪里错了

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

海问香00

2019-02-19 15:53

#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(arr[0][0]||arr[0][2]||arr=[1][1]||arr=[2][0]||arr=[2][2])

                {

                    sum+=arr[i][j];

                }

        }

       

       

       

       

    }

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

    return 0;    

}

哪里错了 我搞不明白呀

写回答 关注

2回答

  • 白腿小隼熊猫鸟
    2019-02-22 19:00:50

    ?同样的问题么?那我也把刚刚的回答再发一遍吧。

    判断语句if()括号里的条件表达式写得不对。你想的是把你全部列出来的元素累加起来,但是实际上if()语句执行的情况是,判断括号里的表达式的结果是真还是假,因为你写的是逻辑或,所以只要有一个值不为0那么表达式的结果就是真,那么就会执行if()后面的语句,所以你这样写的结果是把所有的数组元素都累加了一遍。

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

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


  • 大伟GG
    2019-02-19 22:44:24

    if应该是等号==而不是赋值号=

    海问香00

    把if里面的去掉就能运行了 不过结果是45 为什么不是25呢

    2019-02-20 15:38:07

    共 1 条回复 >

C语言入门

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

926020 学习 · 20793 问题

查看课程

相似问题