【发布时间】:2021-01-12 00:36:45
【问题描述】:
编辑:在我的 IDE 中重写我的代码后,我今天第 8 次犯了菜鸟错误,即给我的输入一个错误的数据类型,这已得到修复,但我的输出仍然不正确。
关于我的目标的详细信息:在进行找零时,您可能希望尽量减少为每位客户分配的硬币数量。 好吧,假设收银员欠客户一些零钱,收银员的抽屉里有 25 美分 (25 美分)、1 美分 (10 美分)、5 美分 (5 美分) 和 1 美分 (1 美分)。要解决的问题是决定将哪些硬币以及每种硬币交给客户的数量。
预期结果:
欠款:0.41
4
实际结果:
欠款:0.41
3
#include <math.h>
#include <cs50.h>
#include <stdio.h>
int main (void)
{
float dollars;
int changeowed = 0;
do
{
dollars = get_float ("Change owed: ");
}
while (dollars < 0);
float cents = round(dollars * 100);
while (cents >= 25)
{
cents = cents - 25;
changeowed++;
}
while (cents > 10)
{
cents = cents - 10;
changeowed++;
}
while (cents > 5)
{
cents = cents - 5;
changeowed++;
}
while (cents > 1)
{
cents = cents - 1;
changeowed++;
}
printf("%i \n", changeowed);
}
【问题讨论】:
-
你希望
int dollar;如何存储0.41? -
int dollars = get_float ("Change owed: ");。类型不匹配... -
解决此问题的最简单方法是在调试器中运行并查看美元和美分等变量。如果您不愿意学习调试器,您可以通过在程序的各个点添加打印语句来更慢地执行相同的操作。
-
Tom,通过“将值保留为整数(美分数)”,您的意思是要将我的“硬币”变量声明为 int 数据类型,而不是现在的浮点数吗?我这样做了:int cents = round(dollars * 100);我的 0.41 输出仍然是 3 个硬币。我错过了什么吗?
-
@TomKarzes 虽然你所说的对于实际应用来说是正确的,但对于 cs50 课程来说并不重要
标签: c while-loop cs50