#include<stdio.h> int main() { double m; scanf("%d",&m); printf("%.2f",m*0.70); return 0; }输入200为什么输出为0
时间: 2024-10-05 22:01:34 浏览: 30
C语言程序设计—北京理工大学MOOC提交作业(43页).doc
这个C语言代码片段的目的是在用户输入一个整数后,将其乘以0.7并保留两位小数后输出。但是,存在一个小错误:`scanf`函数用于读取整数,但这里却使用`"%d"`格式说明符,这将导致当输入的是一个浮点数值(如200.0)时,`scanf`会尝试强制转换为整数,结果丢失了小数部分。
如果用户输入的是200(没有小数点),`scanf`实际上会读取到整数200,然后传递给`printf`作为浮点数。由于`m*0.70`计算的是200乘以0.7,结果应该接近140,但由于输入的原始值是整数,`printf`会直接打印出140而不是带有小数点的140.00。
修复这个问题,应使用`"%lf"`来匹配读取的双精度浮点数,而非`"%d"`。下面是正确的版本:
```c
#include<stdio.h>
int main()
{
double m;
scanf("%lf", &m); // 使用 %lf 来读取浮点数
printf("%.2f", m*0.70); // 正确地输出带小数的浮点数
return 0;
}
```
如果你现在使用上述修复后的代码,并输入200,应该能得到期望的输出140.00。然而,因为原题的输入条件是"200万",所以正确的代码应该是先读取整数然后再乘以0.7,如下面所示:
```c
#include<stdio.h>
int main()
{
long long int prize; // 更改为long long int来处理更大的数字
scanf("%lld", &prize);
double result = prize * 0.7;
printf("%.2f", result);
return 0;
}
```
此时,输入200万,输出将是1400000.00。
阅读全文