vb 求编程 找零问题 要求找出钱币最少(只有1,5,10,20,50元),请设计函数change输出找零方案

拜托了~
2025-04-16 15:42:27
推荐回答(2个)
回答1:

给个思路吧.
你这个题的意思写的不明确,我想这个函数大概是需要一个价格,和一个给的金额.
设定变量, num50,num20,num10,num5,num1 需要找的零钱的数量.
首先 ,金额-价格=找零,如果找零=0 就不用说了.
然后, 找零/50 ,得出需不需要50的.用找零mod/50 得出还需要找多少. 这里可以做判断,如果找零>0 并且 找零/50>0 ,并且 找零 mod 50 =0 ,也就是说找一张50的就可以了,那就结束函数
以此类推
找零余额/20 ,找零余额 mod 20 .... 判断是否找够....

回答2:

只有C++的、你可以参考
#include
#include
void calc(int);
void main()
{
int cash,pay;
while(1){
printf("请输入0到100之内货物的价格X= ");
scanf("%d", &cash);
printf("请输入0到100之内顾客的现金Y= ");
scanf("%d", &pay);
cash = pay - cash;
if (cash < 0){
printf("错误输入 \n");
continue;
}
else if (cash == 0)
{
printf("没有找零记录! \n");
continue;
}
if (cash > 100 || cash <= 0)
printf("错误输入 \n");
if (pay > 100 || pay <= 0)
printf("错误输入 \n");
else {
printf("\n");
calc(cash);
printf("\n");
}
}
}
void calc(int cash)
{
int R50, R20, R10, R5, R1;
R50 = R20 = R10 = R5 = R1 = 0;
printf("找零Z= %d\n", cash);
while(cash - 50 >= 0){
R50 += 1;
cash -= 50;
}
while(cash - 20 >= 0){
R20 += 1;
cash -= 20;
}
while(cash - 10 >= 0){
R10 += 1;
cash -= 10;
}
while(cash - 5 >= 0){
R5 += 1;
cash -= 5;
}
while(cash - 1 >= 0){
R1 += 1;
cash -= 1;
}
printf(" -----------\n");
printf(" R50 x %d\n", R50);
printf(" R20 x %d\n", R20);
printf(" R10 x %d\n", R10);
printf(" R 5 x %d\n", R5);
printf(" R 1 x %d\n", R1);
printf(" -----------\n");
printf("总张数: %d\n", R50 + R20 + R10 + R5 + R1);
}