如何在不使用if语句时避免C语言天数转周数程序输出0天结果
问题解决:无IF语句实现天数转周数程序的优化
原程序存在两个问题:一是变量days未初始化就进入循环,属于未定义行为;二是输入0时仍会输出转换结果,不符合需求。以下是不使用IF语句的修改方案:
修改后的代码
#include <stdio.h> int main() { int days = 1; // 初始化变量,确保首次进入循环 while (days >= 1) { printf("*** 天数转周数程序 ***\n" "请输入天数(输入0退出):"); scanf("%d", &days); int days_rem, weeks; const int days_per_week = 7; weeks = days / days_per_week; days_rem = days % days_per_week; // 利用逻辑与的短路求值特性,仅当days>0时执行输出 days > 0 && printf("%d 天转换为:%d 周,%d 天。\n", days, weeks, days_rem); } printf("感谢使用!"); return 0; }
修改说明
- 初始化变量:给
days赋初始值1,避免未定义行为,保证程序能正常进入第一次循环。 - 短路求值控制输出:使用
days > 0 && printf(...)替代原独立的printf语句。逻辑与运算符&&具有短路特性——当左侧表达式days > 0为假(即输入0或负数)时,右侧的printf语句不会被执行,自然跳过了不需要的输出,且完全未使用IF语句。 - 界面中文本地化:将所有英文提示文本翻译成中文,更符合中文用户使用习惯。
内容的提问来源于stack exchange,提问作者Jschaffer
相关产品推荐
相关产品推荐

