输入一个数字表示华氏度,可能是一个整数或者包含一位小数
时间: 2024-10-14 12:08:47 浏览: 79
python程序设计-嵩天慕课第一章笔记.md
在 C++ 中,你可以使用 `std::cin` 和 `try-catch` 结合格式化输入来接收华氏温度,包括整数和小数。下面是一个示例:
```cpp
#include <iostream>
#include <exception>
double convertFahrenheitToCelcius(double fahrenheit) {
return (fahrenheit - 32) * 5 / 9; // 华氏转摄氏公式
}
int main() {
double fahrenheit;
bool is_valid_input = true;
std::cout << "请输入华氏温度(整数或带一位小数): ";
try {
std::cin >> fahrenheit; // 尝试从输入获取数值
if (std::cin.fail()) { // 检查是否输入有效
throw std::runtime_error("Invalid input! Please enter a valid temperature in Fahrenheit.");
}
double celsius = convertFahrenheitToCelcius(fahrenheit);
std::cout << "华氏 " << fahrenheit << " 度等于摄氏 " << celsius << " 度。\n";
} catch (const std::exception& e) {
std::cerr << "错误: " << e.what() << '\n';
is_valid_input = false; // 清除输入流以便再次输入
std::cin.clear(); // 清除错误标志
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略剩余输入
}
while (is_valid_input) {
std::cout << "请再输入一次: ";
try {
std::cin >> fahrenheit;
// 重复之前的转换和检查过程
} catch (const std::exception& e) {
std::cerr << "错误: " << e.what() << '\n';
}
}
return 0;
}
```
这个程序首先尝试读取输入,如果输入不是有效的数字,就会抛出异常并提示用户。用户可以选择再次输入直到输入有效为止。
阅读全文