Онлайн компилятор C

#include <stdio.h> int main() { int sum,x,y,z,REST; scanf("%d %d %d %d", &x,&y,&z,&REST); x=sum/1000; y=(sum%1000)/500; z=(sum%500)/100; REST=(sum%100); printf("x=%d\n,y=%d\n,z=%d\n,REST=%d\n", x,y,z,REST); return 0; }
这段代码试图将一笔金额拆分成不同面额的钞票,但逻辑顺序完全反了。代码先读取了四个整数,然后又把它们当作计算结果覆盖掉,导致输入的值被丢弃。

- 你读取了四个变量,但紧接着用未初始化的 `sum` 去计算 `x`、`y`、`z`、`REST`,这会导致未定义行为。应该先读取金额到 `sum`,而不是读取四个变量。
- 计算顺序反了:应该先计算大面额(如1000元),再用余数计算下一面额。目前代码中 `x`、`y`、`z` 的计算公式是正确的,但需要先正确获取 `sum` 的值。