0

我完成了为 cash.c 编写代码,但我无法编译它。我的每一个<//least amount of coins to make a certain amount of change部分都有一个“预期表达式”错误。我尝试更改它几次,甚至查看我做错了什么,但我找不到任何东西。有人可以帮帮我吗?另外,我很想听听有关我的代码的任何建议或反馈!代码在下面。

谢谢!阿莱娜 <3

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

int main(void)
{
    // prompt user for non-negative input & convert dollars to cents
    float change;
    int cents;
    do
    {
        change = get_float("How much change? ");
        cents = round(change * 100);
    }
    while (change < 0);

    //least amount of coins to make certain amount of change
    int coins;
    coins = 0;
    while (cents >= 0.25)
    {
        coins++;
        cents = cents - 25;
    }
    while (cents >= .1 && < 0.25)
    {
        coins++;
        cents = cents - 10;
    }
    while (cents >= .05 && < .1)
    {
        coins++;
        cents = cents - 5;

    }
    while (cents >= 0.01 && < .05)
    {
        coins++;
        cents = cents - 1;
    }
    printf("%i\n", coins);
}

我也想知道我在cs50上遇到困难是否正常?我理解讲座和短片中的所有内容,但问题集似乎花了我很长时间。我花了大约 3 周的时间才完成 mario.c,如果没有谷歌搜索,我就无法完成。这让我怀疑我是否应该在没有任何经验的情况下听这门课程。我真的很喜欢这门课程,但你认为我应该把它降低一个档次,从对初学者更友好的东西开始吗?

4

2 回答 2

1

您需要cents在每个“之间”比较中重复:

    // Wrong: while (cents >= .1 && < 0.25)
    while (cents >= .1 && cents < 0.25) ...
    // Wrong: while (cents >= .05 && < .1) ...
    while (cents >= .05 && cents < .1) ...
    // Wrong: while (cents >= 0.01 && < .05) ...
    while (cents >= 0.01 && cents < .05) ...
于 2021-03-09T11:14:00.040 回答
0

对于初学者这样的条件

 while (cents >= 0.25)

在任何情况下都没有意义,因为变量cents被声明为具有 type int

int cents;

看来你的意思

 while (cents >= 25 )

在其他 while 循环中,您会遇到语法错误,例如在此 while 循环中

while (cents >= .1 && < 0.25)

你至少需要写

while (cents >= 10 && cents < 25)

但是当控件到达这个 while 循环时,变量cents的值已经小于25前面的 while 循环。所以写就够了

while ( cents >= 10 )

所以你的循环看起来像

while ( cents >= 25 )
{
    coins++;
    cents = cents - 25;
}
while ( cents >= 10 )
{
    coins++;
    cents = cents - 10;
}
while ( cents >= 5 )
{
    coins++;
    cents = cents - 5;

}
while (cents >= 1 )
{
    coins++;
    cents = cents - 1;
}
于 2021-03-09T12:11:38.273 回答