问题:
解答:
#include <iostream>
using namespace std;#define LONG_TO_MA 220int 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