数字之和C ++

时间:2011-09-18 18:33:00

标签: c++ for-loop sum

我应该写一个程序,询问用户一个正整数值。程序应该使用循环来获得总和 从1到输入数字的所有整数。例如,如果用户输入50,则循环将找到总和 1,2,3,4 ...... 50。

但由于某些原因它无法正常工作,我的for循环遇到了麻烦,但到目前为止这是我的原因。

#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;

}

我现在感到很茫然为什么它不能正常工作。

8 个答案:

答案 0 :(得分:11)

循环很棒;这是循环内部的错误。您需要一个名为sum的变量,并在每一步中将i+1添加到sum。在循环结束时,sum将具有正确的值,因此请将其打印出来。

答案 1 :(得分: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 :(得分: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

答案 3 :(得分:1)

我有以下公式,无需循环。我在试图寻找阶乘的公式时发现了它:

#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;
}

答案 4 :(得分: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;
}

答案 5 :(得分:0)

int result = 0;


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

答案 6 :(得分:0)

首先,您有两个同名变量i。这需要混淆。

其次,您应该声明一个名为sum的变量,该变量最初为零。然后,在循环中,您应该添加从1到最高的数字,包括positiveInteger。之后,您应该输出sum

答案 7 :(得分:0)

您只是在循环中更新i的值。每次都应添加i的值。

i循环中更新for的值绝不是一个好主意。 for循环索引只能用作计数器。在您的情况下,更改循环内i的值将导致各种混淆。

创建变量total,其中包含最多i的数字之和。

所以

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