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

#include <stdio.h> int main() { int amount,a,b,c,REST; scanf("%d",&amount); a=amount/1000; b=amount/100; c=amount/10; REST=amount%10; printf("1000=%d\n500=%d\n100=%d\nREST=%d\n",a,b,c,REST); return 0; }
这段代码试图将输入的金额分解为1000元、500元、100元面额的数量,但计算逻辑有误。

- 变量b和c的计算没有减去已分解的高面额部分,导致重复计算。例如,如果输入1500,a=1(1000元),但b=15(错误地认为有15张100元),实际上应该只有5张100元。
- 变量REST只取了个位数,但实际剩余金额可能包含十位和百位,比如输入1234,REST=4,但实际剩余是234元。

提示:
- 分解金额时,每次减去已取出的面额部分,再计算下一面额的数量。
- 最后剩余的金额不是个位数,而是所有面额分解后剩下的全部金额。