2016-09-01 21 views
-2

我試圖從Youtube上的「thenewboston」使用教程來查找5個數字(用C語言編寫)的總和。我的代碼是:當循環訪問數組時,C程序沒有正確添加

int main(int argc, char *argv[]) { 
    int a, b, c, d, e; 
    int array[5]={a, b, c, d, e}; 
    int sum=0; 
    int i; 
    int j; 

    printf("Enter your 5 numbers: "); 
    scanf("%d, %d, %d, %d, %d", &a, &b, &c, &d, &e); 

    for (i = 0; i < 5; i++){ 
     sum+=array[i]; 
    } 

    printf("The sum of 5 numbers is:%d",sum); 
    return 0; 
} 

但奇怪的是,不管是什麼我進入5號,我總是得到的總和爲48

+1

你試過調試? 'a','b','array [0]'等等的值是多少? – John3136

+0

請不要咬學習者。學習指針很難。 –

+0

如何使用相同的格式將它們存儲在該陣列中?我看到Bucky在他的教程中採用了相同的方式,但是他將數字而不是變量放入數字 –

回答

0

你是不是存儲abcd,或e插入陣列array。您需要將它們存儲在陣列中。

您聲明的array不會爲您的變量創建一個指針數組 - 它會創建一個指向包含五個整數字段的連續塊的單個指針。你不能通過使用a等地址來更新這些數組字段,因爲你的數組並不指向它們。

將它們存儲陣列(我建議)中最明顯的,明確的,簡單的方法是:

array[0]=a; 
array[1]=b; 
array[2]=c; 
array[3]=d; 
array[4]=e; 

只是你for循環開始之前執行此操作。

+0

如何使用相同的格式將它們存儲在該陣列中? –

+0

我編輯了我的答案,以解釋如何。 –

+0

我做過了,但它仍然返回相同的值 –

1

要麼放棄你的第一個printf變量a, b, c, d, earray遺體或反之亦然

刪除變量:

print("Enter 5 numbers: "); 

不要把變量時,你我以前不使用它們。

當你把scanf函數爲scanf("%d, %d", &var1, &var2);,還必須輸入相同的格式

Enter 5 numbers: 10, 20 

工作示例(更有效的與陣列):

int main() { 
    int input[5]; 
    int sum; 

    printf("Enter 5 numbers: "); 
    scanf("%d, %d, %d, %d, %d", &input[0], &input[1], &input[2], &input[3], &input[4]); 

    int i; 
    for (i = 0; i < 5; i++) { 
     sum += input[i]; 
    } 

    printf("The sum is %d", sum); 
    return 0; 
}