编程帮助循环添加

时间:2010-03-28 21:30:37

标签: c++

我知道这可能很简单,但我不确定我做错了什么......

作业说明:

对于本实验的第二个程序,您要让用户输入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;

}

我只是不确定我到底做错了什么......我总是得到错误的总额......

7 个答案:

答案 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之间的所有数字。