Online Compiler C

#include <stdio.h> int main(void) { int price,quantity,discount; scanf("%d %d %D",&price,&quantity,&discount); double total=price*quantity*(100-discount)/100; printf("C=%.2f\n",total); return 0; }
这段代码试图计算商品打折后的总价,但存在几个问题。

- 在 `scanf` 中,`%D` 是大写字母 D,而正确的格式说明符应该是小写 `%d`。大写 `%D` 不是标准用法,会导致输入读取失败。
- 计算 `total` 时,`price*quantity*(100-discount)/100` 中所有变量都是 `int` 类型,整数除法会截断小数部分,导致结果不准确。

- 检查 `scanf` 中的格式说明符,确保所有整数输入都使用小写 `%d`。
- 思考如何让除法保留小数部分,例如将其中一个操作数转换为 `double` 类型。