【发布时间】:2015-07-22 23:33:23
【问题描述】:
所以我在计算零钱,如果用户的输入是0.41,结果将是:1 quarter, 1 dime, 1 nickel, 1 penny。
代码运行良好,直到您提供负值。
我添加了一个 if 语句来检查这一点,之后我所能做的就是exit(0)。我想一次又一次地提示用户输入一个正值,我该怎么做?
#include <cs50.h>
#include <stdio.h>
int main (void) {
printf("How much change do you owe: ");
float amount = GetFloat();
float cents = 100.0 * amount;
float quarter = 0;
float dime = 0;
float nickel = 0;
float penny = 0;
if (amount < 0) {
printf("Please provide a positive value.");
exit(0);
}
while (cents > 0) {
if (cents >= 25.0) {
cents -= 25.0;
quarter += 1;
} else if (cents >= 10.0) {
cents -= 10.0;
dime += 1;
} else if (cents >= 5.0) {
cents -= 5.0;
nickel += 1;
} else if (cents >= 1.0) {
cents -= 1.0;
penny += 1;
}
}
printf("%f quarters, %f dimes, %f nickels, %f pennies, Total of %f coins.\n", quarter, dime, nickel, penny, quarter + dime + nickel + penny);
}
【问题讨论】:
-
那个
while循环你在你的代码中更进一步。尝试其中一种环绕您的输入序列。 -
使用 do-while 循环?顺便说一句,请不要将
float用于金钱和零钱问题,由于不精确的表示,您会收到奇怪的错误。最好使用int以美分工作。 -
使用
float计算金钱是bad idea。请改用整数类型。在显示美元时,请在显示时对其进行缩放。 -
这是我正在学习的课程的一部分,他们明确要求我们使用
float和来自#include <cs50.h>的GetFloat() -
当然,它在名称中,但重点是(当不受课程及其规定的摆布时)在需要精确比较时有充分的理由避免使用浮点类型。跨度>
标签: c if-statement while-loop cs50