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
相关产品推荐
相关产品推荐

