我需要解决以下问题:
编写一个程序,要求用户输入美元金额,并显示如何使用最少的20美元,10美元,5美元和1美元的钞票付款。
我不知道如何将第一个分割票据的找零金额提取为20,然后再提取10、5和1。
我编写了以下代码,但没有解决我的问题:
#include <stdio.h>
int main(void)
{
int value1, value2, value3, value4, bill, change;
printf("Put the bill value: ");
scanf_s("%d", &bill);
value1 = bill/ 20;
rest = bill- (bill/ 20);
value2 = bill /10 // Tried with this but not working:(bill-(bill/20))/10;
value3 = bill/ 5;
value4 = bill/ 1;
printf("The amount is: %d$. \n", bill);
printf("change=%d", change);
/*printf(" $20 Bill: \n", value1);
printf("$10 Bill: \n", value2);
printf("$5 Bill: \n", value3);
printf("$1 Bill: \n", value4);*/
return 0;
}
如果您能向我解释如何正确解决此问题,将会对我有很大帮助。
答案 0 :(得分:0)
您在计算rest
值时遇到问题。因此,请使用以下解决方案:
rest = bill;
value1 = rest / 20;
rest = rest % 20;
value2 = rest /10 ;
rest = rest % 10;
value3 = rest / 5;
rest = rest % 5;
value4 = rest / 1;
答案 1 :(得分:0)
类似的东西
#include <stdio.h>
int main()
{
int v;
if ((scanf("%d", &v) == 1) && (v > 0)) {
int bills[] = { 20, 10, 5, 1 };
size_t i;
for (i = 0; i != sizeof(bills) / sizeof(int); ++i) {
int n = v/bills[i];
if (n != 0) {
printf("%d*%d$ ", n, bills[i]);
v %= bills[i];
}
}
putchar('\n');
}
}
编译和执行:
pi@raspberrypi:/tmp $ gcc -Wextra r.c
pi@raspberrypi:/tmp $ ./a.out
123
6*20$ 3*1$
pi@raspberrypi:/tmp $ ./a.out
1234
61*20$ 1*10$ 4*1$