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

#include <stdio.h> int main() { int x,y,z,REST,sum; 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` 应该从输入中获取,而不是作为输入的一部分。

- 变量 `REST` 既被读取又被赋值,这会造成混淆。应该先读取总金额,再计算各面额的数量。