C++ 如何检查是否未以字母形式输入双精度数

C++ How to check if double number is not entered as an alphabet

本文关键字:输入 双精度 何检查 检查 是否 C++      更新时间:2023-10-16

这是一个用户输入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;
}

这是一个简单的解决方案。我相信你可以稍微调整一下以提高速度。

#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;
}

基于这个答案,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) );