0

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

2 回答 2

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) );
于 2013-09-11T02:20:00.470 回答
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;
}
于 2013-09-11T01:25:03.367 回答