You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:00:06