2012-09-13 62 views
0

我想做一個程序,允許用戶輸入一個正整數,並且程序將輸出每個數字加在一起的總和。例如,如果用戶輸入54,程序將輸出9。出於某種原因,該計劃正在輸出巨大的數字。當輸入爲54時,輸出將讀取類似51654512191235的內容。我是新的C++編程,但我沒有看到一個單一的東西錯這個代碼..爲什麼我通過這個程序獲得大量的輸出?

//This program takes a positive integer 
//from the user, and adds all the digits 
//of the number together. 

#include <stdio.h> 

int main() { 
    system("clear"); 
    int given, add, hold, i; 

    printf("Enter a positive integer (up to 10 digits): "); 
    scanf("%d", &given);      //User input 

    for (i = 0; i < 10; i++) {    //Loop to add digits 
    hold = (given % 10); 
    given = (given/10); 
    add = (add + hold); 
    } 
    printf("Sum of the digits is %d\n", add); //Output 
} 
+4

你沒有初始化'add'。 – cnicutar

+0

這可能是我的,但我從來沒有聽說過「明確」是一個命令。也許你正在那裏尋找'cls'。 – chris

+0

我的直覺告訴我這是因爲你還沒有將'add'初始化爲0.編輯:哎呦,太慢 –

回答

0
int given, add, hold, i; 

您還沒有初始化add,所以它包含不確定的數據,又名垃圾。在未指定時使用它的值是未定義的行爲。

0

在循環之前插入add = 0;以查看是否有幫助。

+0

對不起 - 你的回覆是5分49.52235秒太晚:) – paulsm4

+2

我不知道我被定時。 – John

+2

我們都*計時。分類,分類,分類,判斷,評估,觀察,評分,輪詢,加蓋,歸檔和索引。所有的時間:)不要讓它讓你偏執,但;)只是不要讓他們知道你知道他們正在觀察你。 – paulsm4

0

我認爲for循環是錯誤的
循環將運行10次,而scanf函數將只需要輸入高達int數據類型的上限即32768
你應該給出一個長數據類型。 ,使for循環

for(;given!=0;) 
    { 
     hold = (given % 10); 
     given = (given/10); 
     add = (add + hold); 
    } 

當然初始化相加爲零。

相關問題