平均循环,for循环不执行

时间:2013-11-23 00:29:14

标签: c++

方向是:设计和编码一个程序,询问用户确定平均值的数量。然后提示用户输入整数值并将它们加总。使用适当的随附文本显示数字和计算平均值的总和。平均值应显示为小数点后1位。重复此过程,直到用户输入零(0)作为要平均的值的数量。您可以为主程序循环使用“while”循环或“do ... while”循环。

使用一个函数读取和求和值,使用另一个函数显示总和和平均值。使用“for”循环来读取和求和值。

for循环似乎没有执行,但我无法弄清楚原因。

#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;

int sumNums(int amount, int, int, int);
void displaySum(int sum, int avg);

main()
{
      int amount = 0;
      cout <<"How many numbers do you wish to average? ";
      cin >> amount;
      int avg = 0, sum = 0;

      while (amount != 0)
      {

            for (int lim = 0; lim == amount; lim++)
            {
                int number = 0;
                cout <<"Enter a value"<< endl;
                cin >> number;
                sumNums(amount, number, sum, avg);
                displaySum (sum, avg);

            }


      }
}

int sumNums (int amount, int number, int sum, int avg)
{
    sum = sum + number;
    avg = sum / amount;
    return sum, avg;    
}

void displaySum (int sum, int avg)
{
     cout <<"The sum is "<< sum <<" and the average is "<< avg << endl;     
}

2 个答案:

答案 0 :(得分:2)

for (int lim = 0; lim == amount; lim++)

这里你将lim设置为0,只有当amount不是0时才运行代码。在你的for中,只有当lim等于从未发生的数量时才执行。

无论您的条件是什么,对于您想要进行的每次迭代,它都必须评估为真。

最有可能的是,你需要执行直到lim等于金额,这意味着你希望它在lim低于金额的每次迭代中执行。

for(int lim = 0; i < amount; lim++)

答案 1 :(得分:0)

 for (int lim = 0; lim == amount; lim++) // so wrong...

更改为

for (int lim = 0; lim < amount; lim++)