我制作了一个运行“贪婪”算法的程序 - 一个要求所欠变更输入值的程序,并返回在使用尽可能少的硬币时返回该变更所需的最小硬币数量。可以使用的唯一硬币是四分之一,硬币,镍和便士。请查看我的代码并告诉我如何解决显示的错误。
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main(void)
{
float change;
int counter;
counter = 0;
do
{
printf("Please imput how much change is owed: ");
change = GetFloat();
}
while (change<=0);
int centv;
{
centv = round(change*100);
}
int quarter, dime, nickel, penny;
quarter= 25;
dime= 10;
nickel= 5;
penny= 1;
{
while( centv>=quarter )
{
(centv-25);
counter++;
}
while( centv>=dime )
{
(centv-10);
counter++;
}
while( centv>=nickel )
{
(centv-5);
counter++;
}
while( centv>=penny)
{
(centv-1);
counter++;
}
if(centv == 0)
{
printf("%i \n", counter);
}
}
}
我得到的错误包括行(centv-25)
,(centv-10)
,(centv-5)
和(cent-1)
。
错误消息是所有这些消息的“表达式结果未使用”。 我该如何解决这个问题?
答案 0 :(得分:4)
如果您要更改centv
的值,则需要centv = centv - 25;
centv - 25
应替换为centv = centv - 25
,其他行也应如此。
答案 1 :(得分:0)
正如Jens的评论中所提到的,(centv-25)
计算了centv - 25的值,但后来却没有做任何事情。 Simarly与(centv-10)
,(centv-5)
和(centv-1)
。在这四种情况中,您需要将减法结果分配给centv
。
centv = centv-25;
...
centv = centv-10;
...
centv = centv-5;
...
centv = centv-1;
答案 2 :(得分:0)
您可能打算从25
中减去centv
等。用compound assignment替换表达式:
centv -= 25;
etc.