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

C语言代码运行后输出始终为0,如何实现输入x=1000,y=100输出8000.00

问题原因
  • 变量初始化时机错误:代码中在执行scanf读取变量x的值之前,就将未初始化的局部变量x赋值给了result。C语言中未手动初始化的局部变量会携带内存中的随机垃圾值,你遇到的输出始终为0只是垃圾值刚好为0的特殊情况,本质属于未定义行为。
  • 百分比转换逻辑错误:你输入的y是百分比格式的数值(比如输入100代表100%),仅需要在循环开始前做一次y /= 100的转换即可,原代码把转换逻辑写在循环内部,会导致y逐轮指数级缩小,最终计算结果完全不符合预期。
修改后的可运行代码
#include<stdio.h>

int main()
{
    int x,i;
    double y, result;
    // 先读取x、y的输入值
    scanf("%d %lf",&x,&y);
    // 读取完成后再给result赋初始值
    result = x;
    // 百分比转换仅执行一次
    y /= 100;
    for(i=0; i<3; i++)
    {
        result = result + (result * y);
    }

    printf("%.2lf\n",result);
    return 0;   
}

输入1000 100.00时,上述代码会输出8000.00,与预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:09:00