首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遇到CS50 Greedy.c问题

遇到CS50 Greedy.c问题
EN

Stack Overflow用户
提问于 2018-12-02 22:31:07
回答 2查看 62关注 0票数 1

我最近注册了EDx.com提供的CS50课程。我现在遇到了greedy.c的问题是pset1。我觉得问题在于我的do-while循环实际上并没有循环。不管我给程序的输入是什么,我每次都会得到4个硬币。请告诉我我做错了什么。

代码语言:javascript
复制
#include <cs50.h>
#include <stdio.h>
#include <math.h>

int main(void)
{
int n = 0;
int count = 0;
int cents = 0;
do
{
    printf("How much change is owed?\n");
    get_int();

}
while(n > 0);

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

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

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

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


printf("Here is %i coins\n", count);

}
EN

回答 2

Stack Overflow用户

发布于 2018-12-02 22:47:21

代码中的这一行:

代码语言:javascript
复制
get_int();

什么也不做。get_int将获取并返回一个整数,但是您从未真正将该值放入变量中,这就是输入不会改变程序行为的原因。

也许你想写这样的东西:

代码语言:javascript
复制
n = get_int();
票数 0
EN

Stack Overflow用户

发布于 2018-12-05 16:27:27

do while循环总是执行一次,这就是为什么你总是得到4个硬币,然后你也没有将输入值赋给n。

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

代码语言:javascript
复制
do {
    printf("How much change is owed?\n");
    n = get_int();
} while (n == 0);

下一步,你做的事情会增加到计数,即使它们不应该,下面应该是更好的。

代码语言:javascript
复制
while (n >= 25) {
    count++;
    n -= 25;
}

祝你使用CS50好运,这也是我开始的地方,它很难,但真的能让你学会思考。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53581222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档