[英]Diagonal Difference in c
考慮以下代碼。 我必須在 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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.