我正在研究 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 定义为全局变量(尽管多次谷歌搜索正确地告诉我这是一个错误),即使它可以编译,它也是一个错误的问题解决方案。
我尝试了解是否存在某种变量定义原型,但无济于事。
现在,我已经没有想法了,不知道我想要的是否可以实现。 我知道我可以提交工作代码并完成它,但我正在努力彻底并在每个问题集中尽可能多地学习,探索所有选项并尝试编写看起来也不错的好代码。
执行此操作的方法是从函数返回数字:
#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;
}