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

C++月份天数程序添加非法输入判断后异常终止问题求助

问题分析与修复方案

嘿,我一眼就揪出你代码里的问题啦——第一个if语句的逻辑运算符用错了,这就是为啥程序不管输入啥都会直接终止的核心原因!

核心问题:逻辑运算符误用

你写的判断条件是:

if (month != 1 || month != 2 || ... || month != 12 )

这里用了逻辑或(||),但逻辑或的规则是:只要有一个条件为真,整个表达式就为真。你琢磨下:不管输入的month是多少,它肯定不可能同时等于1到12所有数字,比如输入1,month !=2就是真的,所以这个条件永远成立,程序直接触发提示并退出了。

正确的逻辑应该是:当month不在1-12范围内时才提示,要么用**逻辑与(&&)**逐个判断“不等于所有合法月份”,要么更简洁地直接判断范围,后者代码可读性更高。

修复后的代码

#include <iostream>
using namespace std;
int main() {
    int month = 0;
    int days;
    cout << "Month: ";
    cin >> month;
    
    // 改成范围判断,逻辑更清晰简洁
    if (month < 1 || month > 12) {
        cout << "not a number for a month";
        return 0;
    }
    
    if (month == 4 || month == 6 || month == 9 || month == 11)
        days = 30;
    // 额外建议:补上二月的判断,让程序更完整
    else if (month == 2)
        days = 28; // 后续可以扩展闰年判断逻辑
    else
        days = 31;
    
    cout << days << endl;
    return 0;
}

额外小提示

  1. 用month <1 || month>12代替逐个判断,不仅代码更短,还能避免漏写月份的失误;
  2. 我额外加了二月的判断,毕竟它的天数和其他月份不一样,你要是想完善功能,可以再加个闰年判断的逻辑;
  3. 输出天数时加个endl,能让结果换行显示,看起来更舒服。

内容的提问来源于stack exchange,提问作者matt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:18:25