【发布时间】:2014-06-09 04:23:17
【问题描述】:
我正在尝试构建一个简单的变化计算器。用户输入欠款金额,然后按回车键。他们输入的值应该先乘以 100(这样当我们四舍五入时,数字不会被截断)。四舍五入应该将浮点数转换为整数,然后应该执行所有数学运算(while 循环),最后打印出一个数字,表示给了他们多少硬币(即多少四分之一,一角硬币,等等......)代码编译正常,它提示用户输入一个值,但是当你按回车时,什么都不执行,命令行回到空白。
任何想法我做错了什么?我的猜测是 while 循环中的值没有被转移出循环,因此它们可以在下一个循环中使用。但是我是 C 语言的早期初学者,不确定循环的正确规则。我尝试查找 while 循环示例,但没有真正解释如何将值从一个 while 循环传递到另一个循环。如果,事实上,这就是问题所在。感谢您的帮助。
代码修订:
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main (void) {
float change;
int cents;
int quarter_count = 0;
int dime_count = 0;
int nickel_count = 0;
int pennies = 0;
int total_count;
do
{
printf("Enter the amount of change you are owed: ");
change = GetFloat();
cents = round(change * 100);
}
while (change < 0);
return cents;
int quarter = 25;
while (cents >= quarter)
{
cents = cents - quarter;
quarter_count++;
}
return cents;
int dime = 10;
while (cents >= dime)
{
cents = cents - dime;
dime_count++;
}
return cents;
int nickel = 5;
while (cents >= nickel)
{
pennies = cents - nickel;
nickel_count++;
}
return pennies;
total_count = quarter_count + dime_count + nickel_count + pennies;
printf("%d\n", total_count);
}
【问题讨论】:
-
我在这里看到很多未使用的变量??
-
getFloat()来自 cs50 库,基本上它接受用户的数字输入并将其标记为浮点变量,然后我可以在其余代码的其他地方使用它。 -
尝试将打印语句放入每个循环中,找出控制流到达的位置。
-
Henno,哪些没用?这并没有在编译中作为错误出现,它曾经出现过,但现在不再出现了。
-
如果我输入
change=10的值,第二个循环while (cents >= quarter)怎么样?会坏吗?
标签: c while-loop cs50