如果“int i = 0”写在函数外部,我可以在函数内部“i++”吗?

问题描述 投票:0回答:1

我正在研究 Problem Set 1 2024,我编写了一个可以回答问题的功能文件。 尽管如此,我决定尝试稍微“清理”它并使其更具可读性。

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

void coin(int value, int n);

int main(void)
{

    // prompt user for a change value
    int change = get_int("Change owed: ");

    // force prompt for positive integer
    while (change <= 0)
    {
        change = get_int("Change owed: ");
    }

    int i = 0;
    //repeat below line for each coin
    coin(change, 25);
    
    printf("%i\n", i);
}

//returns number of coins for the change value
void coin(int value, int n)
{
    while(value / n >= 1)
    {
        value = value - n;
        i++;
    }
}

问题就在这里:

“i”是在 main 中定义的,在 coin() 之外,所以当我尝试编译时,我在 coin() 函数中收到无法识别的变量错误。

如何定义 int i = 0 以便在我的 coin() 函数中使用它并正确递增?

我尝试在 coin() 内部定义 int i = 0 ,但是然后我的 printf("&s ") main 中的 i 无法识别,因为它位于 coin() 内部。

我尝试将 int i = 0 定义为全局变量(尽管多次谷歌搜索正确地告诉我这是一个错误),即使它可以编译,它也是一个错误的问题解决方案。

我尝试了解是否存在某种变量定义原型,但无济于事。

现在,我已经没有想法了,不知道我想要的是否可以实现。 我知道我可以提交工作代码并完成它,但我正在努力彻底并在每个问题集中尽可能多地学习,探索所有选项并尝试编写看起来也不错的好代码。

c cs50
1个回答
0
投票

执行此操作的方法是从函数返回数字:

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

int coin(int value, int n);

int main(void)
{

    // prompt user for a change value
    int change = get_int("Change owed: ");

    // force prompt for positive integer
    while (change <= 0)
    {
        change = get_int("Change owed: ");
    }

    //repeat below line for each coin
    int i = coin(change, 25);
    printf("%d\n", i);
}

//returns number of coins for the change value
int coin(int value, int n)
{
    int i = 0;
    while(value / n >= 1)
    {
        value = value - n;
        i++;
    }
    return i;
}
© www.soinside.com 2019 - 2024. All rights reserved.