从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、1角、5分、1分各多少张。
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
double x;
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;
scanf("%lf",&x);
while(1)
{
if(x>=100)
{
a++;
x=x-100;
}
else if(x>=50)
{
b++;
x=x-50;
}
else if(x>=10)
{
c++;
x=x-10;
}
else if(x>=5)
{
d++;
x=x-5;
}
else if(x>=2)
{
e++;
x=x-2;
}
else if(x>=1)
{
f++;
x=x-1;
}
else if(x>=0.1)
{
g++;
x=x-0.1;
}
else if(x>=0.05)
{
h++;
x=x-0.05;
}
else if(x>=0.02)
{
i++;
x=x-0.02;
}
else if(x>=0.01)
{
j++;
x=x-0.01;
}
else if(x<=fabs(1e-6))
break;
}
printf(“100元的一共有%d张\n”,a);
printf(“50元的一共有%d张\n”,b);
printf(“10元的一共有%d张\n”,c);
printf(“5元的一共有%d张\n”,d);
printf(“2元的一共有%d张\n”,e);
printf(“1元的一共有%d张\n”,f);
printf(“1角的一共有%d张\n”,g);
printf(“5分的一共有%d张\n”,h);
printf(“2分的一共有%d张\n”,i);
printf(“1分的一共有%d张\n”,j);
return 0;
}
假如有float a,floatb,比较a和b的大小,会有精度的差别,所以需要用1e-6来作为桥梁来比较。
d=a-b;
d>(1e-6);//表示的是a>b
d<-(1e-6);//表示的是a<b
d<fabs(1e-6);//表示的是a=b
或者是d<1e-6也可以表示a=b