2016-02-02 56 views
-4

我想在一個數組中添加100個數字這是我的代碼: 從17到117的數字應該加起來更多。爲什麼不是正確添加我的號碼

#include <stdio.h> 
#include <stdlib.h> 

int main(){ 
int* number = malloc(101*sizeof(int)); 
int num = 0;  

while (num != 101){ 
    number[num] = 17 + num; 
    num = num + 1; 
}; 


num = 0; 

while(num != 101){ 
    printf(" %d \n", number[num]); 
    num = num + 1; 
} 

num = 0; 
int sum = 0; 
while (num != 101){ 
    number[num] = 17; 
    sum = sum + number[num]; 
    num = num + 1; 

} 

printf(" %d \n ", sum); 

return 0; 
} 

底部print語句給我的1717的值

+0

你認爲結果應該是什麼? –

+7

101次17等於1717,你看到什麼錯誤? – rodrigo

+1

要清楚'number [num] = 17;'覆蓋以前的設定值。 –

回答

1
while (num != 101){ 
    number[num] = 17; 
    sum = sum + number[num]; 

刪除已到17

0

錯就錯在此附加行重置一切下聯:

number[num] = 17; 

其中無條件替換數組中的正確數字17.刪除該行來解決您的問題。

當然,你並不需要一個數組或一個循環做到這一點,因爲它是一個arithmetic progression的總和:

int sum = (start - end)(start + end)/2; 

而且,它是更正確的投void*int*在分配聲明:

int* number = (int*)malloc(101*sizeof(int)); 

事實上,用gcc它甚至不編譯沒有投。

0

你加入101個號碼,不是100:

試想一下,而不是:

int num = 0; 
while (num != 101) 

你寫:

int num = 0; 
while (num != 11) 

你會加入0,1,2, 3,4,5,6,7,8,9,10。這些是總共10個數字。

在C是地道的編寫與< LIMIT上限來解決這個問題:

int num = 0; 
while (num < 100) 

需要注意的是,也慣用的第一個值是數字0

也許你有一個的VisualBasic背景,這就是爲什麼你覺得需要創建一個101個元素的數組來添加100個數字。在C中,你不需要這樣的廢話。 C寫這個循環的方式是:

int* number = malloc(100*sizeof(int)); 
for (num = 0; num < 100; ++num) 
{ 
    number[num] = ...; 
} 
相關問題