我的while循环出错,首次执行后不再要求输入

时间:2017-10-15 21:46:34

标签: c++

// Program to loop results, and average them

#include "stdafx.h"
#include <iostream>


int main()
{
    const int Limit = 5;
    double Grades, ModuleNumber;


    for(double ModuleNumber = 0; ModuleNumber < Limit ; ++ModuleNumber)
    {
        std::cout << "Module Number:" << ModuleNumber + 1 << std::endl;
        std::cout << "Input your grades:" << std::endl;

        double sum = 0;
        int count = 0;

        while (std::cin >> Grades)
        {
            ++count;
            sum += Grades;
        }

        double AverageGrade = sum / count;

        std::cout << "The average Grade for Module: "<< ModuleNumber + 1 << " is "<< AverageGrade << std::endl;
        std::cout << std::endl;

    }

    return 0;
}

在我第一次执行代码后,它立即迭代了接下来的4个循环,并显示平均值的结果:

  

-NAN(IND)

我是编程领域的新手,并想知道为什么会这样。

1 个答案:

答案 0 :(得分:1)

NaN的浮点值(无论大小写)通常来自零除零。 (NaN代表非数字)。如果std::cin >> Grades第一次在循环中失败,则循环将立即结束,sumcount都将为零,AverageGrade的值将为NaN。因此,在提示时,您可能没有输入有效的浮点值。