【问题标题】:C++ How to check if double number is not entered as an alphabet [duplicate]C ++如何检查双数是否没有作为字母输入[重复]
【发布时间】:2013-09-11 00:47:39
【问题描述】:
这是一个用户输入 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;
}
【问题讨论】:
标签:
c++
integer
double
average
【解决方案1】:
这是一个简单的解决方案。我相信你可以稍微调整一下以提高速度。
#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;
}