【发布时间】:2021-10-22 17:33:38
【问题描述】:
我不明白是什么使输出为零。
我想把 1000 作为x 和 100.00 作为y,我希望输出是8000.00 而不是00。
#include<stdio.h>
int main()
{
int x,i;
double y, result= x;
scanf("%d %lf",&x,&y);
for(i=0; i<3; i++)
{
y/=100;
result = result+(result*y);
}
printf("%.2lf\n",result);
return 0;
}
【问题讨论】:
-
当
result被分配x时,x未初始化。然后将一些东西添加到result,因此它没有可预测的价值。因此,未定义的行为。 -
您将
result初始化为x给它一个未定义的值,因为此时x本身是未定义的。将作业移到scanf之后。 -
那么解决方案是什么...
-
在@TomKarzes 提到的更正之后,输出不是
8000.00,而是2020.20。如果您删除小数位限制,则为2020.202000。 -
代码从上到下执行。
x在scanf上方的每一行都有一个垃圾值
标签: c