2011-09-18 60 views
4

我應該編寫一個程序,詢問用戶正整數值。程序應該使用一個循環來獲得從1到輸入的數字的所有整數的總和 。例如,如果用戶輸入50,循環會發現 1,2,3,4總和,... 50總和數字C++

但由於某種原因,它不工作,我無法用我的循環,但這是我迄今爲止。

#include <iostream> 
using namespace std; 

int main() 
{ 
    int positiveInteger; 
    int startingNumber = 1; 
    int i = 0; 

    cout << "Please input an integer up to 100." << endl; 

    cin >> positiveInteger; 

    for (int i=0; i < positiveInteger; i++) 
    { 
     i = startingNumber + 1; 
     cout << i; 
    } 

    return 0; 

} 

我現在只是虧本,爲什麼它不能正常工作。

+3

你認爲'i = startingNumber +1;'部分是爲了什麼? – PlasmaHH

+0

只是一個提示:留意你的變量:startsNumber被使用兩次,一次在聲明中爲1,第二次你添加1(..so'i'將始終設置爲2!) –

+0

I使用'sum'來添加'i + 1',但它只是打印我想添加的所有這些數字,它打印的數字,這就是我在虧損的地方。 – mystycs

回答

4

試試這個:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int positiveInteger; 
    int startingNumber = 1; 

    cout << "Please input an integer upto 100." << endl; 

    cin >> positiveInteger; 

    int result = 0; 
    for (int i=startingNumber; i <= positiveInteger; i++) 
    { 
     result += i; 
     cout << result; 
    } 

    cout << result; 

    return 0; 

} 
+2

給出明顯的作業問題的答案最終對海報沒有幫助;儘量幫助他們下次學習。 –

+0

未來,在給家庭作業提供幫助時,試着引導OP回答問題,而不是直接提供答案。 –

+0

這工作完美,至少我能夠看到我現在做錯了什麼。謝謝!雖然答案是哈哈。 – mystycs

11

循環很棒;這是循環內部的錯誤。您需要一個名爲sum的變量,並且在每個步驟中,將i+1添加到sum。在循環結束時,sum將具有正確的值,因此將其打印出來。

+6

+1提示的好答案,沒有整個解決方案。 –

+0

是迄今爲止工作,但我需要它打印的所有這些數字的總和。 – mystycs

0

mystycs,您使用的是可變i來控制你的循環,你正在編輯的循環中的i然而

for (int i=0; i < positiveInteger; i++) 
{ 
    i = startingNumber + 1; 
    cout << i; 
} 

試試這個相反:

int sum = 0; 

for (int i=0; i < positiveInteger; i++) 
{ 
    sum = sum + i; 
    cout << sum << " " << i; 
} 
0
int result = 0; 


for (int i=0; i < positiveInteger; i++) 
    { 
     result = startingNumber + 1; 
     cout << result; 
    } 
+0

這應該是'result + = startingNumber + 1'。 – rohit89

1

你可以試試:

int sum = startingNumber; 
for (int i=0; i < positiveInteger; i++) {  
    sum += i; 
} 
cout << sum; 

但更容易是要注意的總和1+2+...+n = n*(n+1)/2,所以你並不需要一個循環可言,只是用公式n*(n+1)/2

0

首先,你有兩個變量的同名i。這需要混淆。

其次,您應該聲明一個名爲sum的變量,該變量最初爲零。然後,在循環中,您應該添加從1到包括positiveInteger的數字。之後,您應輸出sum

0

您只是更新循環中的i的值。每次還應該添加i的值。

for循環內更新i的值永遠不是一個好主意。 for循環索引只能用作計數器。在你的情況下,在循環內改變i的值會引起各種混淆。

創建變量total,其中保存的數字總和爲i

所以

for (int i = 0; i < positiveInteger; i++) 
     total += i; 
0

我有以下的公式,沒有循環工作。我發現它,同時試圖找到階乘的公式:

#include <iostream> 
using namespace std; 

int main() { 
    unsigned int positiveInteger; 
    cout << "Please input an integer up to 100." << endl; 
    cin >> positiveInteger; 

    cout << (positiveInteger * (positiveInteger + 1))/2; 
    return 0; 
}