问题:
解答:
#include <iostream>
using namespace std;
#define LONG_TO_MA 220
int main()
{
double distance = 0;
cout << "请输入距离(单位为long):";
while (true)
{
cin >> distance;
if (cin.fail())
{
cout << "输入有误!请输入数字:";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
else
{
break;
}
}
double res = distance * LONG_TO_MA;
cout << distance << "long=" << res << "码"<<endl;
return 0;
}
运行结果:
考查点:
- 变量
- 宏定义的符号常量
- 数据类型
- 死循环
- break
- 输入错误标志
- *运算符
注意:
- 当输入错误时,会产生错误标志,变量就读不到输入缓冲区的数据了,我们需要先清除错误标准用
cin.claer()
.
但是输入缓冲区的数据肯定不是我们想要的,不然不会出现错误标志,所以我们要清理缓冲区用cin.ignore()
,numeric_limits< streamsize >::max()
的意思是尽可能的清理,直到运到\n
也就是回车符,相当于缓冲区全部清空.
- 宏定义的符号常量在预处理的时候就会将其替换成后面的内容
2024年8月22日20:00:01