c语言求十美元中各种金额的数量


/*  如果在饭馆的消费额为check美元,向其支付的金额为paid美元,则应找回的金额(按美元计)可以用如下的C语言语句计算:

计算零钱中美分的数量

change = (paia - check) *

100;

计算零钱中美元的数量

dollars = change / 100;

根据上面的语句编写一个C语言程序,计算用10美元支付6.07美元的消费额之后找回的零钱中的1美元钞票以及2角5分、1角、5分和1分硬币的数量。


*/





#include <stdio.h>

int main()
{
    float cheek,paid;   //声明支付金额(paid)与花费金额(cheek) 
    int dollars,change,ejwf,yj,wf,yf;   //声明对应面值的数量 ,美元,美分,贰角伍分,一角,五分,一分 
    
    paid=10;          //交付金额 
    cheek=6.07;        //应收金额 
    
    change=(paid-cheek)*100;   //将找回金额全部换为分 
    dollars=change/100;       //全部金额中美元的数量 
    ejwf=(change-100*dollars)/25;    //剩余金额中贰角伍分的数量 
    yj=(change-100*dollars-25*ejwf)/10;   //剩余金额中一角的数量 
    wf=(change-100*dollars-25*ejwf-10*yj)/5;    //剩余金额中五分的数量 
    yf=(change-100*dollars-25*ejwf-10*yj-5*wf);    //剩余金额中一分的数量 
    
    printf("找回零钱中美元的数量为%d\n",dollars);
    printf("贰角伍分的数量为%d\n",ejwf);
    printf("一角的数量为%d\n",yj);
    printf("五分的数量为%d\n",wf);
    printf("一分的数量为%d\n",yf);
     
    return 0;
}

c语言纯新手,求大佬们给一个更好的算法。
还有,这个算法输出数据的时候一分的数量时对时错,求大佬们帮忙看看是哪里出问题了。

这个题就直接算就行:

#include <stdio.h>
int main ()
{
int dollar, d2j5f, d1j, d5f, d1f, change;
float check, paid;
check = 6.07f;
paid = 10.00f;
change = (paid - check) * 100;
dollar = change / 100;
printf ("需要一美元数量%d,\n", dollar);
d2j5f = change % 100 / 25;
printf ("需要二角五分数量%d,\n", d2j5f);
d1j = change % 100 % 25 / 10;
printf ("需要一角数量%d,\n", d1j);
d5f = change % 100 % 25 % 10 / 5;
printf ("需要五分数量%d,\n", d5f);
d1f = change % 100 % 25 % 10 % 5;
printf ("需要1分数量%d.\n", d1f);
return 0;
}

img

一分转换逻辑就不对呗。也可能因为浮点型精度丢失。