我知道这可能很简单,但我不确定我做错了什么......
作业说明:
对于本实验的第二个程序,您要让用户输入10到50范围内的整数值。您要验证用户是否输入了该范围内的值,并继续提示他直到他确实给你一个这个范围内的价值。
用户成功输入该范围内的值后,您将显示从1到输入值的所有整数之和。
到目前为止,我有这个:
#include <iostream.h>
int main () {
int num, sum;
cout << "do-while Loop Example 2"
<< endl << endl;
do {
cout << "Enter a value from 10 to 50: ";
cin >> num;
if (num < 10 || num > 50)
cout << "Out of range; Please try again..."
<< endl;
} while (num < 10 || num > 50);
{
int i;
int sum = 0;
for (num = 1; num <= 50; num ++)
sum = sum + num;
}
cout << endl << "The sum is " << sum << endl;
return 0;
}
我只是不确定我到底做错了什么......我总是得到错误的总额......
答案 0 :(得分:2)
您的循环条件错误。
首先,你应该使用一个单独的变量作为你的索引(实际上你已经在前面使用“int i”声明了一个)。
其次,你的上限不应该是50,这是用户输入的内容。
所以你想把循环中的所有“nums”改为“i”,将“50”改为“num”。
答案 1 :(得分:2)
实际上,您可以将for循环简化为:
sum = ((num+1)*num)/2;
向Carl Friederich Gauss致信。 :d
答案 2 :(得分:1)
让我确保我理解正确,您的作业要求输入给定数字的用户,并将其存储在num
中,然后显示1到num
的运行总和?
如果是这种情况,在您的循环中,当您致电num
时,覆盖用户输入的num = 1
。你只需每次计算1-50的运行总和。
要纠正这一点,您需要使用另一个变量来保持递增,即count
或变量i
,因为它已经被声明。然后,只要i
,就应该从num
循环到i <= num
。
除此之外,我看不出任何问题,它应该正常工作。
看看您正在开发的IDE是否有debugger可以使用,这肯定是值得的。调试是一个很好的工具,可以帮助找出代码未按预期执行的原因。
如果没有调试器(会让我感到惊讶),我可以通过{{建议我的首选替代方法踩踏 1}}在一张纸上循环并将for
与已解决的另一个手写解决方案进行比较,即sum
num = 5
希望这有帮助。
答案 3 :(得分:1)
更正后的代码是
#include <iostream.h>
int main () {
int num;
cout << "do-while Loop Example 2"
<< endl << endl;
do {
cout << "Enter a value from 10 to 50: ";
cin >> num;
if (num < 10 || num > 50)
cout << "Out of range; Please try again..."
<< endl;
} while (num < 10 || num > 50);
//<----Removed the extra set of {}
int i,sum=0;//<---- Changed the declaration here
for (i= 1; i <= num; i++) //<----Change Here
sum += i;
cout << endl << "The sum is " << sum << endl;
return 0;
}
答案 4 :(得分:0)
for循环应该是:
for (int x = 1; x <= num; x++)
{
sum += x;
}
答案 5 :(得分:0)
#include <iostream.h>
int main () {
int num, sum; // here you define (but don't initialize) one variable named sum.
[ ... ]
{ // here you start an inner scope.
int i;
int sum = 0; // here you define *another* `sum`, local to the inner scope.
for (num = 1; num <= 50; num ++)
sum = sum + num; // here you add the numbers to the *second* sum.
} // here the second sum goes out of scope.
// and here you print out the first (still un-initialized) sum.
cout << endl << "The sum is " << sum << endl;
答案 6 :(得分:0)
您的上限不是50,而是您输入的数字。 因此,您的总和是1 t0,包括您输入的数字。
假设你输入10, 逻辑将是。 您可以添加1到10之间的所有数字。