问答详情
源自:6-11 多维数组的遍历

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

#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;    

}

哪里错了 我搞不明白呀

提问者:海问香00 2019-02-19 15:53

个回答

  • 白腿小隼熊猫鸟
    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应该是等号==而不是赋值号=