2014-10-07 115 views
-2

該程序旨在將所有數字從1加到我輸入的數字上。如果我只輸入一個數字,答案將是正確的,但如果我不停止並重新打開我的程序,我輸入的第二個數字的答案也將添加第一個數字的結果。我錯過了什麼?請幫忙。讓計算機在打印後清除答案

#include<iostream> 

using namespace std; 

int main() 
{ 
int inNum; 
int loopCount = 1; 
int count; 
int sum = 0; 

cout << "Enter a number greater than 0 (less than 1 to quit): " << endl; 
cin >> inNum; 

while (inNum >= loopCount) { 
    for (count=0 ; count <= inNum ; count++){ 
     sum = sum + count * count; 
    } 

    cout << "The sum of the squares from 1 to " << inNum << " is " << sum << endl; 

    cout << "Enter a number greater than 0 (less than 1 to quit): " << endl; 
    cin >> inNum; 
} 
} 
+4

把'sum = 0;'放在你的最後'cin'後 – 2014-10-07 18:14:40

+0

非常感謝!!!!解決方案非常明顯,我仍然無法弄清楚!真的很感謝你的幫助! – 2014-10-07 18:17:41

+2

實際上,如果你不在while循環外面使用'sum',我會把'int sum = 0'移到while循環的開頭。換句話說,儘可能地聲明變量以便首次使用。 – crashmstr 2014-10-07 18:20:18

回答

0

一種解決方案是的sum聲明進入你而塊,

// int sum = 0; 
while (inNum >= loopCount) { 
    int sum = 0; // <-- or just sum = 0; and keep the declaration outside the loop 

另一個(如在評論提及)是在循環體的端重置sum

+0

謝謝你的幫助Elliott,我想知道如果我這樣做,它會使程序運行得更快一點。每當我啓動程序時,我都會注意到一個延遲。 (運行速度不是這項任務的關注點,但我只是想創建一個高效的程序。) – 2014-10-07 18:28:02

+0

@WilsonYu可能不是,這是一個解決錯誤的微不足道的改變;算法沒有嚴重的變化。 – 2014-10-07 18:58:15