C++ 我的while循环出错,第一次执行后不再要求输入 //编程以循环结果,并对其求平均值 #包括“stdafx.h” #包括 int main() { 常数int极限=5; 双级,模块化; for(双ModuleNumber=0;ModuleNumber>Grades第一次通过循环失败,循环将立即结束,sum和count都将为零,AverageGrade的值将为NaN。因此,提示时可能没有输入有效的浮点值。Makesum和count外部for loop,因为每次迭代都会将它们重置为0。非常确定他是针对具有多个等级的单个模块而不是所有模块执行此操作。Whenwhile(std::cin>>等级)将停止?仅当cin失败时才会停止。您在此处定义ModuleNumber双等级,ModuleNumber;和此处for(双ModuleNumber=0;ModuleNumber
NaN的浮点值(不考虑大小写)通常来自零除以零。(NaN代表非数字)。如果C++ 我的while循环出错,第一次执行后不再要求输入 //编程以循环结果,并对其求平均值 #包括“stdafx.h” #包括 int main() { 常数int极限=5; 双级,模块化; for(双ModuleNumber=0;ModuleNumber>Grades第一次通过循环失败,循环将立即结束,sum和count都将为零,AverageGrade的值将为NaN。因此,提示时可能没有输入有效的浮点值。Makesum和count外部for loop,因为每次迭代都会将它们重置为0。非常确定他是针对具有多个等级的单个模块而不是所有模块执行此操作。Whenwhile(std::cin>>等级)将停止?仅当cin失败时才会停止。您在此处定义ModuleNumber双等级,ModuleNumber;和此处for(双ModuleNumber=0;ModuleNumber,c++,C++,NaN的浮点值(不考虑大小写)通常来自零除以零。(NaN代表非数字)。如果std::cin>>Grades第一次通过循环失败,循环将立即结束,sum和count都将为零,AverageGrade的值将为NaN。因此,提示时可能没有输入有效的浮点值。Makesum和count外部for loop,因为每次迭代都会将它们重置为0。非常确定他是针对具有多个等级的单个模块而不是所有模块执行此操作。Whenwhile(std::cin>>等级)将停止?仅当cin失败时才会停止。您在此处定义ModuleNu
std::cin>>Grades
第一次通过循环失败,循环将立即结束,sum
和count
都将为零,AverageGrade
的值将为NaN。因此,提示时可能没有输入有效的浮点值。Makesum
和count代码>外部for loop
,因为每次迭代都会将它们重置为0。非常确定他是针对具有多个等级的单个模块而不是所有模块执行此操作。Whenwhile(std::cin>>等级)
将停止?仅当cin失败时才会停止。您在此处定义ModuleNumber
双等级,ModuleNumber;
和此处for(双ModuleNumber=0;ModuleNumber
。在任何给定的时间内,只有最内部的ModuleNumber
是活动的,但两者都存在且不同。这在本程序中不会造成伤害,但以后可能会咬到你。我如何才能使其在输入无效类型后退出,并继续循环?@Jack-将输入读取为字符串并尝试转换。如果转换失败,则你仍然在控制中。
// 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;
}