我应该写一个程序,询问用户一个正整数值。程序应该使用循环来获得总和 从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;
}
我现在感到很茫然为什么它不能正常工作。
答案 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;