C++ 如何检查是否未以字母形式输入双精度数
C++ How to check if double number is not entered as an alphabet
这是一个用户输入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) );
相关文章:
- 将标准输入中的双精度存储在矢量中
- 如果我在 C++ 中为 int 提供双精度,输入缓冲区中存储了什么?
- 我怎样才能接受输入作为双精度值并执行 IF ELSE 语句
- 对需要双精度数组和结构作为输入C++ DLL 函数的 C# 调用
- C++ 在 CIN 双精度时挂起,但如果输入整数,则继续
- 如何检查字符串输入是否为有效的双精度
- 如何在将双精度作为输入后将整行作为字符串变量的输入
- 如何查找输入的双精度是否为0.05的倍数
- 模板:如何泛化输入以接收整数、双精度或特定(模板)容器的向量
- 如何接受字符串或双精度作为输入?C++
- 如何让用户输入正双精度变量
- 试图在C++中验证双精度有效输入的循环错误
- 如果输入没有双精度,则停止输入
- 从C++中的文本文件中逐行读取,如何确保输入是双精度的
- 将输入文件中的子字符串转换为双精度值
- 将输入字符串转换为浮点/双精度C++
- 从输入中获取一个数字和一个单位作为双精度和字符串——编程:使用c++的原则和实践
- 在c++中是否有一种方法可以将这种格式的输入限制为整数/双精度
- 将输入验证为双精度/整数的函数
- 在程序中稍后传递一个双精度-使用对话框进行输入