簡體   English   中英

c 中的對角差

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM