CS50使用voters_count的复数

dced5bon  于 2022-12-11  发布在  其他
关注(0)|答案(1)|浏览(129)

我认为把main函数中的int voter_count也用在我的print_winners函数中是很实用的,但是由于int voter_count没有像i nt candidates_count那样在main函数之前引入,所以我不能使用voter_count int
当我在main函数中的main之前引入int,并在main函数被调用时删除voters_count之前的int时,我的代码可以正常工作,我尝试的所有场景都可以正常工作。
但是我知道我们不应该更改main函数中的代码,即使更改了main函数,我的代码仍然没有通过检查50。
有人知道为什么我的代码没有通过check50吗?

void print_winner(void)
{
    for (int c = voter_count; (c > 0); c--)
    {
        int u = 0;

        for (int j = 0; (j < candidate_count); j++)
        {
            if (candidates[j].votes == c)
            {
                u++;
                printf("%s \n", candidates[j].name);
            }
        }

        if (u != 0)
        {
            return;
        }
    }
}

检查响应:

voter_count = get_int("Number of voters: ");

这里我通过删除voter_count之前的int来更改main函数,因为

//Numver of votes
int voter_count;

我把程序介绍到int上面的头文件中。

am46iovg

am46iovg1#

C中的函数可以使用全局变量(但请不要使用)、局部变量或它们的参数。一个函数中的局部变量不能在另一个函数中访问。
例如:

void foo(void);

int main(void) {
  int bar = 42;

  foo();

  return 0;
}

void foo(void) {
  printf("%d\n", bar);
}

但是,我们可以将bar作为参数传递给foo

void foo(int bar);

int main(void) {
  int bar = 42;

  foo(bar);

  return 0;
}

void foo(int bar) {
  printf("%d\n", bar);
}

以下方法可以使用,但您 * 不应该 * 使用它。

int bar;

void foo(void);

int main(void) {
  bar = 42;

  foo();

  return 0;
}

void foo(void) {
  printf("%d\n", bar);
}

相关问题