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

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

#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 回答

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

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

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

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


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

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

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

海问香00 提问者

把if里面的去掉就能运行了 不过结果是45 为什么不是25呢
2019-02-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

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