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

C语言实现天数转年周天时输入字符的判断条件如何编写

天数转换程序输入校验修复方案

问题原因

你当前代码的核心问题是未判断scanf("%d", &days)的返回值:当用户输入非数字字符时,%d格式符匹配失败,scanf会返回0且不会给days变量赋值,你原来仅判断if(days)的逻辑自然无法覆盖输入非数字的场景。

修改说明

  • 接收scanf的返回值判断是否成功匹配到整数
  • 额外增加days>0的判断,确保输入为正整数,覆盖输入0、负数的异常场景
  • 所有不合法场景统一输出要求的错误提示

修复后完整代码

#include<stdio.h>

int main(){
    int days, year, weeks, input_ret;
    printf("Enter days: ");
    input_ret = scanf("%d", &days);
    
    // 同时判断输入是否为有效整数、是否为正
    if(input_ret == 1 && days > 0)
    {
        year = days/365;
        printf("\nYears: %d\n", year);

        weeks = (days-(year*365)) / 7;
        printf("Weeks: %d\n", weeks);
        
        days = days-(year*365)-(weeks*7);
        printf("Days: %d\n", days);
    }
    else{
        printf("Only positive numeric is allowed.");
    }

    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:09:03