gpt4 book ai didi

c++ - 我该怎么做才能让我的代码寻找最少数量的硬币?

转载 作者:太空狗 更新时间:2023-10-29 21:37:24 28 4
gpt4 key购买 nike

我在 EDX:Computer Science 的 Pset1,我正处于“变革时刻”的末尾。在这里你应该编写一个代码,一旦给定一个数字,就应该找到你需要的最少数量的硬币。我已经制作了我的代码,但我似乎无法找到如何制作它以使其找到最小值。这是我的代码:

{
printf ("How much do I owe you?\n"); //Get a non-negative number
float change = GetFloat();

while (change < 0)
{
printf ("Please enter a non-negative number\n");
change = GetFloat();
}

int total = 0;

while (change >=.25)
{
change = change - .25;
total++;
}
while (change >=.1 && change <.25)
{
change = change - .1;
total++;
}
while (change >=.05 && change <.10)
{
change = change - .05;
total++;
}
while (change > 0 && change <.05)
{
printf ("%i\n", total);
}

当我输入 .15 时,它给出的答案是 3,但它应该说是 2。另外,我做的其他一些事情也给了我一个数字,但不是最小值。我怎样才能让它始终找到最小数量?

最佳答案

您应该做的第一件事是使用 float 来表示货币。涉及 float 的算术运算不够精确,无法用于货币。将其更改为 int。之后,您可以使用 /% 来计算硬币的数量。

int amountOwed = ...;      // Amount owed in cents

int total = amountOwed/25; // Number of quarters.
amountOwed = amountOwed % 25; // Amount after the number of quarters.

total += amountOwed/10; // Number of dimes.
amountOwed = amountOwed % 10; // Amount after the number of dimes.

total += amountOwed/5; // Number of nickels.
amountOwed = amountOwed % 5; // Amount after the number of nickels.

// Whatever is left is number of pennies.
total += amountOwed; // Number of pennies.

关于c++ - 我该怎么做才能让我的代码寻找最少数量的硬币?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37849719/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com