我见过很多人提到过这个特定的 C 程序,尽管形式不同。但是,我似乎无法确定问题的根源,也无法找到其他有帮助的答案。程序编译,甚至执行正确,除了一个单一的输入:4.2
该程序似乎计算了将零钱输入为输入所需的最小硬币数量,4.2 除外。它输出 22 而不是应有的 18(16 个季度,2 个角钱)。有什么想法吗?我正在审核一门在线课程,没有学分/没有学术不诚实问题。
#include <stdio.h>
#include <cs50.h>
int main(void)
{
//quarters, dimes, nickels, and total number of coins. a is float input for exact change.
float a;
int q=0;
int d=0;
int n=0;
int p=0;
int i;
//petitioning input
do
{
printf("Hello, how much change do I owe you?\n");
a = GetFloat();
}
while(a<=0);
//converting float a to an integer i
i= a*100;
//four 'while' loops checking quarters nickels dimes pennies and adding to coin count while
while(i>=25)
{
i=i-25;
q++;
}
while(i>=10 && i<25)
{
i=i-10;
d++;
}
while(i>=5 && i<10)
{
i=i-5;
n++;
}
while(i>0 && i<5)
{
i= i-1;
p++;
}
//printing sum of each coin type
{
printf("%d\n", q+d+n+p);
}
return 0;
}