I want to solve a question like this:
Enter a specified amount (in units of yuan, such as 345.78) from the keyboard, and then display the amount of RMB in various denominations that pay the amount, and ask to display 100 yuan, 50 yuan, 10 yuan, 5 yuan, 2 yuan, 1 yuan, 5 angles, 1 point, 5 points, 1 point each.
like 345.78=100*3+10*4+5*1+0.5*1+0.1*2+0.01*8
Here are the codes:
#include<stdio.h>
int main()
{int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0;
float m;
printf("enter money:");
scanf("%f",&m);
while(m>100.0)
{m=m-100;
a1++;}
while(m>50.0)
{m=m-50;
a2++;}
while(m>10.0)
{m=m-10;
a3++;}
while(m>5.0)
{m=m-5;
a4++;}
while(m>2.0)
{m=m-2;
a5++;}
while(m>1.0)
{m=m-1;
a6++;}
while(m>0.1)
{m=m-0.1;
a7++;}
while(m>0.05)
{m=m-0.05;
a8++;}
while(m>0.01)
{m=m-0.01;
a9++;}
printf("a1=%d,a2=%d,a3=%d,a4=%d,a5=%d,a6=%d,a7=%d,a8=%d,a9=%d\n",a1,a2,a3,a4,a5,a6,a7,a8,a9);
return 0;
}
#include<stdio.h>
int main()
{
double n,r[8];
int k;
scanf("n=%lf",&n);
int a=n/100;
r[0]=n-a*100;
int b=r[0]/50;
r[1]=r[0]-b*50;
int c=r[1]/10;
r[2]=r[1]-c*10;
int d=r[2]/5;
r[3]=r[2]-d*5;
int e=r[3]/2;
r[4]=r[3]-e*2;
int f=r[4];
r[5]=r[4]-f*1;
int g=r[5]*10.00;
r[6]=r[5]-g*0.1;
int h=r[6]*20.00;
r[7]=r[6]-h*0.05;
int i=r[7]*100.00;
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);
printf("%d\n",d);
printf("%d\n",e);
printf("%d\n",f);
printf("%d\n",g);
printf("%d\n",h);
printf("%d\n",i);
return 0;
}
However, while entering the numbers like 0.78, 0.98, 0.99, the value i
is ALWAYS one less.
How does this happen?