2015-04-21 59 views
-9

我很努力地將「While」循環應用於以下問題:設計允許用戶輸入數字的程序的邏輯。顯示從一個到輸入數字中的每個數字的總和。C++「While」Loop

Start 
    int userNumber; 
    Declarations 
     int number = 1 
    while number <= userNumber 
     ++number 
    endwhile 
    output number 
Stop 

我知道我的代碼是不正確的,因爲它只是增加一個初始值,直到達到用戶的數量,從而使輸出的用戶的數量。我將如何添加每個後續值而不寫出它們,例如用戶數爲10,所以程序會加1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10,輸出總共55?

謝謝!

+0

'開始'/'停止'??!? –

+3

只需將它們累積成一筆。這有什麼難的? –

+2

你的代碼似乎不是C++,你確定你正確地標記了問題嗎?您也沒有收到用戶的號碼,也沒有累積,只計算1和給定號碼之間的數字。 – Guvante

回答

1

這是小費。你會想開始在用戶數量和倒計數到0.像這樣:

int finalNum = 0; 
int userNum; 
//This is where you need to get the user's number.... 
while(userNum > 0) 
{ 
    finalNum += userNum; 
    userNum--; 
} 
//Do whatever you need to finalNum.... 

編輯:它似乎你已經張貼僞碼;除非另有說明,這裏通常是一個很大的禁忌。最好發佈實際的代碼,因爲它更容易分辨究竟發生了什麼。

+0

感謝您的幫助。我認爲這是我嘗試這樣做的方式。對於僞代碼抱歉。我不記得閱讀任何警告它的東西。 – Anonymous

0

你需要看起來是這樣的C++函數:

#include <iostream> 

using namespace std; 

void calc(unsigned x) 
{ 
    unsigned t = 0;    // Assume the result to be 0 (zero) 
    for (i = 1; i <= x; i++) // Continue until i is greater than x 
    { 
     t += i;    // Accumulate, i.e. t = t +i 
    } 
    cout << "sum=" << t << endl; // Print the result 
} 

int main() 
{ 
    calc(10); 
    return 0; 
} 

另一種方法是:

#include <iostream> 

using namespace std; 

void calc(unsigned x) 
{ 
    cout << "sum=" << (x*(x+1)/2) << endl; // Print the result 
} 

int main() 
{ 
    calc(10); 
    return 0; 
} 

這工作,因爲所有整數從1到n的總和就是n *(N +1)/ 2