CS50 Greedy.c问题遇到麻烦

时间:2018-12-02 14:31:07

标签: c cs50 greedy

我最近参加了EDx.com提供的CS50课程。我目前在greedy.c上遇到麻烦,问题是pset1。我觉得问题在于我的do-while循环实际上并未循环。不管输入什么,我每次给程序我都会得到4个硬币。请让我知道我在做什么错。

public function actionCreate()
{
    $model = new Brands();

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['view', 'id' => $model->id]);
    } elseif (Yii::$app->request->isAjax) {
        return $this->renderAjax('create', [
            'model' => $model
        ]);
    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}

2 个答案:

答案 0 :(得分:0)

您的代码中的这一行:

get_int();

什么都不做。 get_int将获取并返回一个int,但是您实际上从未将该值放入变量中,这就是输入不会改变程序行为的原因。

也许您打算写这样的东西:

n = get_int();

答案 1 :(得分:0)

do while循环将始终执行一次,这就是为什么您总是获得4个硬币,然后又没有将输入值分配给n的原因。

如果n> 0,则第一次做while将无限运行,因此将其更改为:

do {
    printf("How much change is owed?\n");
    n = get_int();
} while (n == 0);

即使您不这样做,下一次您的工作时间也会增加,下面的内容应该更好。

while (n >= 25) {
    count++;
    n -= 25;
}

CS50祝您好运,那也是我刚开始的地方,这很困难,但实际上会让您学会思考。