在线编译器 C

#include <stdio.h> int main() { int M,a,b,c,REST; scanf("%d",M); a = M/1000; b = (M%1000)/500; c = (M%500)/100; REST = M - a - b - c printf("%d%d%d%d",a,b,c,REST) return 0; }
这段代码试图将输入的金额M分解为1000元、500元、100元面额的数量,并计算剩余金额。但代码存在几个问题。

- 第4行 `scanf("%d",M);` 缺少取地址符号 `&`,应该写成 `&M`。
- 第8行 `REST = M - a - b - c` 缺少分号结尾。
- 第9行 `printf(...)` 也缺少分号。
- 变量 `REST` 的计算逻辑有误:`a`、`b`、`c` 是张数,不能直接用金额减去张数,应该减去对应的面额值(例如 `M - a*1000 - b*500 - c*100`)。