某人购买物品一共花了x元(x<=100),用100元现金去支付,售货员需要找零,请设计程序给出一个找零方案,并使找零的张数最少。设现有人民币面值包括:100元、50元、20元、10元、5元、1元、5角和1角。
当x包含1角以下的金额时,按照四舍五入到角之后再进行找零。
#include<stdio.h>
int main() {
int i1,i2,i3,i4,i5,i6,i7,x,y,z;//x角,y个,z十
float a,b,c;
printf("输入(单位 元):");
scanf("%f",&a);
b=((int)(10.0*a+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)i4=1,i5=y-5;
else i4=0,i5=y;
//x/5 x%5 y/5 y%5
i1=z/5;
i2=(z%5)/2;
i3=(z%5)%2;
printf("共找零%.1f元:\n50元%d张,20元%d张,10元%d张,5元%d张,1元%d张,5角%d张,1角%d张",c,i1,i2,i3,i4,i5,i6,i7);
}
}