关于小数的问题
题目:从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各多少张。 (输出面额最大值:比如345.78=100*3+10*4+5*1+0.5*1+0.1*2+0.01*8)
#include "stdafx.h"
#include "stdio.h"
void compute(float Num)
{
float S=Num;
float unit[10]={100,50,10,5,2,1,0.5,0.1,0.05,0.01};
int a[10];
int i,j;
for(i=0;i<10;i++)
{
a[i]=0;
}
for(i=0,j=0;i<10;i++)
{
a[i]=S/unit[i];
S-=unit[i]*a[i];
j+=a[i];
if(S==0)
{
break;
}
}
printf("%.2f=",Num);
for(i=0;i<10;i++)
{
if(a[i]!=0)
{
if(unit[i]>=1)
{
printf("%.0f*%d",unit[i],a[i]);
}
else if(unit[i]<1&&unit[i]>0.05)
{
printf("%.1f*%d",unit[i],a[i]);
}
else
{
printf("%.2f*%d",unit[i],a[i]);
}
j-=a[i];
if(j!=0)
{
printf(" + ");
}
}
}
printf("\n");
return;
}
int main(int argc, char* argv[])
{
float Num;
int rtval;
while(1)
{
printf("Please input the money:\n");
rtval=scanf("%f",&Num);
if(rtval!=1)
{
getchar();
printf("Input error,please input again!\n");
continue;
}
compute(Num);
}
return 0;
}