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

