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

C语言程序运行输出始终为0.0000,请问代码哪里存在问题?

问题定位

  • 核心错误为printf格式控制符与变量类型不匹配:代码中seconds被定义为int整型变量,但输出时使用了仅支持浮点型的%f格式符,C语言中该类类型不匹配操作属于未定义行为,输出0.0000是此错误的典型表现。
  • 逻辑计算错误:天转秒的换算系数错误,1天对应秒数为24*60*60=86400,代码中使用的36400会导致计算结果本身错误。
  • 逻辑顺序缺陷:代码先执行秒数计算,再校验输入天数是否合法,即使输入负数也会执行无意义的计算逻辑。
  • 非标准写法:void main(void)不属于C语言标准的主函数写法,标准写法为int main(void),执行结束后返回0代表程序正常退出。

修复后代码

#include <stdio.h>
int main (void)    
{
    int days;
    long long seconds; // 改用长整型避免天数较大时出现整型溢出
    
    printf("Enter the no. of days: ");
    scanf("%d", &days);
    
    // 输入校验前置,非法输入直接退出
    if (days < 0)
    {
        printf("Invalid input!");
        return 1;
    }

    seconds = days * 86400LL; // 加LL后缀保证运算按长整型执行
    // 强制转换为double类型匹配%f格式符要求
    printf("It is equal to %.5f seconds", (double)seconds);
    return 0;
}

修复说明

  • 输出时将seconds强制转换为double类型,匹配%f格式符的使用要求;如果不需要小数输出,可直接使用%lld格式符输出long long类型的seconds变量
  • 替换为正确的天转秒换算系数86400
  • 调整输入校验逻辑到计算之前,避免无效计算
  • 将seconds类型改为long long,避免输入天数过大时int类型容量不足溢出
  • 替换为C语言标准的int main主函数写法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 17:45:07