C++天气程序:气温输入(-60~60)范围验证实现求助
气温范围验证实现方案
针对你的天气程序,只需在气温输入环节添加循环验证逻辑,确保输入值处于-60到60之间,同时处理非数字输入的异常情况。修改后的代码片段如下:
#include <iostream> #include <limits> // 需包含此头文件处理输入缓冲区 // 补充城市信息结构体(若未定义需添加) struct CityWeather { std::string name; int degrees; // 若需支持小数可改为double类型 }; int main() { int n; std::cout << "输入城市数量:"; std::cin >> n; CityWeather s_array[n]; // 或用动态内存分配:CityWeather* s_array = new CityWeather[n]; std::cout << "输入城市名称和气温\n"; for(int i = 0; i < n; i++){ std::cout << "---------\n"; std::cout << "请输入城市名称:"; std::cin >> s_array[i].name; bool validTemp = false; while(!validTemp){ std::cout << "请输入气温(范围:-60 至 60):"; // 检查输入是否为有效数字 if(std::cin >> s_array[i].degrees){ // 验证气温范围 if(s_array[i].degrees >= -60 && s_array[i].degrees <= 60){ validTemp = true; } else { std::cout << "错误:气温超出-60到60的范围,请重新输入\n"; } } else { // 处理非数字输入的异常 std::cout << "错误:请输入有效数字\n"; std::cin.clear(); // 重置输入流错误状态 // 清空缓冲区中剩余的无效内容 std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } } } // 后续按气温排序的逻辑可在此处补充(省略示例代码) return 0; }
关键说明:
- 范围验证:通过条件判断锁定气温区间,不合法则持续提示重新输入。
- 异常处理:当输入非数字内容时,重置输入流状态并清空缓冲区,避免后续输入陷入死循环。
- 类型适配:若需要支持小数气温,只需将
degrees的类型从int改为double,范围判断逻辑无需改动。
内容的提问来源于stack exchange,提问作者sebastian Lionell
相关产品推荐
相关产品推荐

