这是一个生活实际问题,当你购买了不到100元的商品,却交给了售货员一张100元的货币…售货员就得考虑如何组合给你找钱。
题目:找零钱最佳组合
假设商店货品价格皆不大于100元(且为整数),若顾客付款在100元,求找给顾客之最少货币张数?
(货币面值50元,10元,5元,1元四种)
代码:
#include<stdio.h>
int main()
{ int m50, m20, m10, m5, m1, i6, i7, x, y, z; float price, b, c; printf("输入购买商品价格(单位:元):"); scanf("%f", &price); b = ((int)(10.0*price+0.5))/10.0; c = 100.0 - b; if(b<=0.0||b>=100.0)printf("请重新输入\n"); else { x=((int)(10*c))%10; y=((int)(10*c))%100/10; z=10*c/100; if(x>=5)i6=1,i7=x-5; else i6=0,i7=x; if(y>=5)m5=1,m1=y-5; else m5=0,m1=y; m50=z/5; m20=(z%5)/2; m10=(z%5)%2; printf("共找零%.1f元:\n50元%d张,20元%d张,10元%d张,5元%d张,1元%d张",c,m50,m20,m10,m5,m1); }
}