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

如何在不使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:50:06