请记住,
在CS50中处理贪婪/现金后。今天我很兴奋,因为它运行正常。我回去测试了它建议的-1.00、0.00、foo的值,然后当我尝试一个正整数(如.80(时,计数器不正确,给它添加了额外的数字。我猜,在测试负值、零和字符之间,我一定在代码中做了一些事情来再次更改它,我运行了5个或更多正确运行的代码。我已经一遍又一遍地梳理了我的代码,不知道是什么让我的计数器脱落了。有人能给我指个方向吗?
目标是说在给定的零钱数量下可以使用的最小硬币数量。按65美分计算,将是4,(两个季度,一角硬币,一个五分硬币(
我的代码如下:
#include <cs50.h>
#include <stdio.h>
#include <math.h>
int main(void)
{
float change;
do {
change = get_float("Change owed:n");
} while (change <= 0);
float cents;
cents = round(change * 100);
printf("%f cents n", cents);
int counter = 0;
do {
cents = cents - 25;
counter = counter + 1;
} while (cents >= 25);
do {
cents = cents - 10;
counter = counter + 1;
} while (cents >= 10);
do {
cents = cents - 5;
counter = counter + 1;
}
while (cents >= 5);
do {
cents = cents - 1;
counter = counter + 1;
} while (cents >= 1);
printf("%i n" , counter);
}
任何见解都值得赞赏!
do..while
至少执行一次。65美分就是一个很好的例子,它将计算两个季度,一角硬币,尼克硬币。CCD_ 2为0。但是接下来会发生什么呢?它会数一分钱!因为它在while测试之前执行循环。