假设收银员欠顾客一些零钱,收银员的抽屉里有 25 美分 (25 美分)、10 美分 (10 美分)、5 美分 (5 美分) 和 1 美分 (1 美分)。要解决的问题是决定将哪些硬币以及每种硬币的数量交给顾客
如果某位顾客欠了 41 美分,那么第一口最大可以拿的就是 25 美分 41 - 25 = 16 再咬25美分就太大了 收银员会继续购买 10 美分的一口,留下 6 美分的问题 此时,收银员要求一口 5 美分,然后一口 1 美分
#include <cs50.h>
#include <stdio.h>
int main(void)
{
float f = get_float("Enter Cash: ");
int q;
int d;
int n;
int p;
float quarter = 0.25;
float dimes = 0.10;
float nickels = 0.05;
float pennies = 0.01;
while ( f != 0)
{
if (f >= quarter){
f = f - quarter;
q = q + 1;
} else if (f >= dimes && f < quarter) {
f = f - dimes;
d = d + 1;
} else if (f >= nickels && f < dimes) {
f = f - nickels;
n = n + 1;
} else {
f = f - pennies;
p = p + 1;
}
printf ("Quarter: %d \n Dimes %d \n Nickels %d \n Pennies %d \n", q,
d, n, p);
}
}
$ ./cash
Enter Cash: 6
Quarter: 32768
Dimes -1230737968
Nickels 0
Pennies 4205168
Quarter: 32769
Dimes -1230737968
Nickels 0
Pennies 4205168
Quarter: 32770
Dimes -1230737968
Nickels 0
Pennies 4205168
Quarter: 32771
Dimes -1230737968
Nickels 0
Pennies 4205168
Quarter: 32772
最佳答案
您需要初始化变量
int q = 0;
int d = 0;
int n = 0;
int p = 0;
否则它们的值不可预测
关于c - 这段代码计算不正确,有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56221578/