这是一个程序,用户输入5个标记,程序计算平均标记和等级。 但是,当用户输入字符串(字母)而不是数字时,它应该显示错误。我该怎么做?
#include <iostream>
using namespace std;
int main()
{
double dblMarkOne;
double dblMarkTwo;
double dblMarkThree;
double dblMarkFour;
double dblMarkFive;
double dblAverage;
string strGrade;
cout<<"Enter your first mark: ";
cin>>dblMarkOne;
while (dblMarkOne < 0 || dblMarkOne > 100)
{
cout << "Enter a valid test score within 1 to 100. ";
cout << "Enter your first mark: ";
cin >> dblMarkOne;
}
答案 0 :(得分:0)
这是一个简单的解决方案。我相信你可以调整一下以提高速度。
#include <iostream>
#include <stdlib.h> /* atoi */
using namespace std;
bool isDouble(char a[]);
int main()
{
double dblMarkOne;
char a[10];
cout<<"Enter your first mark: ";
cin >> a; /* read it as a char array */
if(isDouble(a)){
dblMarkOne = atof(a);
cout << dblMarkOne;
}
else
{
cout << "not a double";
}
}
bool isDouble(char a[])
{
int i = 0;
while(a[i] != 0)
{
if(!(isdigit(a[i]) || a[i] == '.'))
{
return false;
}
i++;
}
return true;
}
答案 1 :(得分:0)
根据这个答案,https://stackoverflow.com/a/3274025/1903116
do
{
cout << "Enter a valid test score within 1 to 100. ";
cout << "Enter your first mark: ";
} while (! (cin >> dblMarkOne) );