CS50 llama lab中计算年份的问题

edqdpe6u  于 2023-02-18  发布在  其他
关注(0)|答案(1)|浏览(141)
#include <cs50.h>
#include <stdio.h>
int main(void)
{
    int pop_start;
    int pop_end;
    int year = 0;
    int pop_val = 0;

    do
    {
        pop_start = get_int("Population start size: ");
    }
    while (pop_start < 9);
    // Prompt for end size
    do
    {
        pop_end = get_int("Population end size: ");
    }
    while (pop_end < pop_start);
    //calculate

    while (pop_end < pop_val)
    ;
    {
        pop_val = pop_val + (pop_val / 3) - (pop_val / 4);
        year++;
    }

    printf("years:%i\n", year);

}

我希望这个程序能按预期工作,并根据计算结果输出年份值。然而,不管输入值(pop_start)和(pop_end)如何,输出值(year)总是1,而它应该是一个更大的数字。我觉得我必须在这里遗漏一些东西,但我不太确定是什么。

nom7f22z

nom7f22z1#

我试用了你的代码,发现你的代码中有一些问题让你犯了错误。当你的问题得到上面的评论时,我做了一些重构,但是他们也指出了你的基本问题,即从来没有将“pop_瓦尔”变量初始化为零以外的任何值。我提供了下面的重构代码。

#include <stdio.h>

int main()
{
    int pop_start;
    int pop_end;
    int year = 0;
    int pop_val = 0;

    do
    {
        printf("Population start size: ");
        scanf("%d", &pop_start);
        //pop_start = get_int("Population start size: ");
    }
    while (pop_start < 9);

    pop_val = pop_start;    /* pop_val needs to be initialized to the starting size */
    // Prompt for end size
    do
    {
        //pop_end = get_int("Population end size: ");
        printf("Population end size: ");
        scanf("%d", &pop_end);
    }
    while (pop_end < pop_start);
    //calculate

    while (pop_end > pop_val)   /* Comparison needs to use ">" in lieu of "<" */
    {
        printf("pop_val: %d\n", pop_val);
        pop_val = pop_val + (pop_val / 3) - (pop_val / 4);
        year++;
    }

    printf("Years:%i\n", year);

    return 0;

}

有一些有趣的地方要指出。

  • 首先,我的系统中没有cs50.h文件和库,所以我用“printf”和“scanf”语句的标准组合来接收用户输入-如果需要,您可以将其改回“get_int”函数。
  • 接下来,需要将“pop_瓦尔”变量初始化为“pop_start”变量中接收的起始值。
  • 就在你最后一个while语句后面有一个多余的分号,所以它被删除了(不知道这是否只是一个打字错误)。
  • 最后,最后一个“while”语句中的比较运算符从“〉”改为“〈";否则,程序将退出循环。

根据这些变更,以下是终端输出的测试运行。

@Vera:~/C_Programs/Console/Year/bin/Release$ ./Year 
Population start size: 1000
Population end size: 10000
pop_val: 1000
pop_val: 1083
pop_val: 1174
pop_val: 1272
pop_val: 1378
pop_val: 1493
pop_val: 1617
pop_val: 1752
pop_val: 1898
pop_val: 2056
pop_val: 2227
pop_val: 2413
pop_val: 2614
pop_val: 2832
pop_val: 3068
pop_val: 3323
pop_val: 3600
pop_val: 3900
pop_val: 4225
pop_val: 4577
pop_val: 4958
pop_val: 5371
pop_val: 5819
pop_val: 6304
pop_val: 6829
pop_val: 7398
pop_val: 8015
pop_val: 8683
pop_val: 9407
Years:29

给予这些重构的代码更改,看看它是否符合项目的精神。

相关问题