gpt4 book ai didi

c - c 对角线差

转载 作者:行者123 更新时间:2023-11-30 21:09:59 28 4
gpt4 key购买 nike

考虑以下代码。我必须找出 C 中两条对角线的差。

#include <stdio.h>
int main() {

int n,a[100][100],sum1=0,sum2=0;
scanf("%d",&n);
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j){

scanf("%d",&a[i][j]);
if(i==j) sum1+=a[i][j];
else if((i+j)==(n-1)) sum2+=a[i][j];

}
}
if(sum1>sum2) printf("%d",(sum1-sum2));
else printf("%d",(sum2-sum1));


return 0;
}

当我将 else if 更改为 if 时,代码可以正常工作。为什么?

最佳答案

我想我明白了你想知道的:

if(i==j) sum1+=a[i][j];
if((i+j)==(n-1)) sum2+=a[i][j];

意味着这两种情况都可能有效,因为您对它们都进行了测试。

另一方面,如果你写

if(i==j) sum1+=a[i][j];
else if((i+j)==(n-1)) sum2+=a[i][j];

您假设这些条件中只有一个可以运行,或者都不能运行,但绝不能同时运行。所以如果第一项(i==j)true第二个将不再进行测试。但您需要对两者进行测试以确定您想要计算的内容。事实上else if永远属于if ,所以最多只能满足一个条件,而在另一个版本中你只有两个独立的 ifs .

关于c - c 对角线差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798228/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com