gpt4 book ai didi

c - 贪心算法 : "expression result unused"

转载 作者:行者123 更新时间:2023-11-30 18:10:34 34 4
gpt4 key购买 nike

我正在尝试为 CS50 做一个贪心算法,但由于某种原因,当我尝试将美分总和除以 25、10、5 等时,我不断收到错误,提示“表达式结果未使用”。有人可以吗找出我哪里出错了?预先非常感谢您。

#include <cs50.h>
#include <stdio.h>
#include <math.h>

int main(void)
{
float Change;
int quarters = 25;
int dimes = 10;
int nickels = 5;
int pennies = 1;
int count = 0;

do
{
Change = get_float("Change: ");
}
while (Change < 0);

int cents = round(Change * 100);

while (cents % 25 >= 25)
{
cents/25;
count = count + 1;
}


while (cents % 10 >= 10)
{
cents/10;
count = count + 1;
}


while (cents % 5 >= 5)
{
cents/5;
count = count + 1;
}


while (cents % 1 >= 1)
{
cents/1;
count = count + 1;
}


printf("%d coins", count);

}

最佳答案

比较错误

以下内容绝不是正确的。 cents % 25,除法后的余数,始终小于 25。

while (cents % 25 >= 25)

无用代码

下面的代码除以 25,然后丢弃商。 @Some programmer dude

cents/25;
<小时/>

而是在 25, 10, 5, 1 个地方

// while (cents % 25 >= 25)
while (cents >= 25)

// cents/25;
cents -= 25;
<小时/>

可以实现更高效的代码。提示:不需要 while 循环。

<小时/>

很适合将输入转换为整数。

更深入:

int cents = round(Change * 100);Change * 100 生成 float 乘积,然后转换为 double 调用round(double)。最后,它将结果转换为 int 作为赋值的一部分。

可以使用roundf(float)并跳过double转换。

对于学习者代码来说,这是一个好的开始。请注意,Change * 100 可能会导致舍入误差,在接近半美分的特定情况下会出现这种误差。建议回合(Change * 100.0)

也许可以使用long lround(double x)来完成从double到整数的最终转换。

请注意,过大的输入会导致溢出和未定义的行为

关于c - 贪心算法 : "expression result unused",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57302734/

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