如何在C中创建一个只提示用户输入正整数的函数,并在主函数中调用它?
这是我的密码。我未能在printf函数之后使用break关键字来中断循环。当我输入负数或零时,它不会再次提示我重新输入如何在C中创建一个只提示用户输入正整数的函数,并在主函数中调用它?,c,cs50,C,Cs50,这是我的密码。我未能在printf函数之后使用break关键字来中断循环。当我输入负数或零时,它不会再次提示我重新输入 #包括 #包括 int获得正的int(无效); 内部主(空) { 获取正整数(); } 整数获取正整数(无效) { int i; i=get_int(“整数:”); while(true) { 如果(i函数get\u positive\u int()中的算法错误: 您需要将i=get_int(“Integer:”);放置在while循环中 您的如果条件: 在调用后保持读
#包括
#包括
int获得正的int(无效);
内部主(空)
{
获取正整数();
}
整数获取正整数(无效)
{
int i;
i=get_int(“整数:”);
while(true)
{
如果(i函数get\u positive\u int()
中的算法错误:
您需要将i=get_int(“Integer:”);
放置在while
循环中
您的如果条件:
在调用后保持读取错误的发生。但是如果只想返回INT\u MAX
,则不需要这样做,并且可以忽略它,因为这将适用于条件语句``if(i>=0)`及其主体
代码是:
int get_positive_int(void)
{
int i;
while (true)
{
i = get_int("Integer: ");
if (i == INT_MAX)
{
// optional error handling.
return INT_MAX;
}
else if (i >= 0)
{
return i;
}
printf("%i", i);
}
}
旁注:如果不想将0
计算为正整数,则需要将i>=1
作为If
语句的条件
正如您在评论中所说,如果i
为正整数,您只想继续,如果i
为负字符或0
,则退出:
void get_positive_int(void)
{
int i;
while (true)
{
i = get_int("Integer: ");
if (i < 1)
{
return;
}
printf("%i\n", i);
}
}
void获取正整数(void)
{
int i;
while(true)
{
i=get_int(“整数:”);
if(i<1)
{
返回;
}
printf(“%i\n”,i);
}
}
请注意,在这种情况下,get\u positive\u int
的返回类型应为void
而不是int
,并且应忽略返回i
,因为不必从函数返回任何值。函数get\u positive\u int()
中的算法错误:
您需要将i=get_int(“Integer:”);
放置在while
循环中
您的如果条件:
在调用后保持读取错误的发生。但是如果只想返回INT\u MAX
,则不需要这样做,并且可以忽略它,因为这将适用于条件语句``if(i>=0)`及其主体
代码是:
int get_positive_int(void)
{
int i;
while (true)
{
i = get_int("Integer: ");
if (i == INT_MAX)
{
// optional error handling.
return INT_MAX;
}
else if (i >= 0)
{
return i;
}
printf("%i", i);
}
}
旁注:如果不想将0
计算为正整数,则需要将i>=1
作为If
语句的条件
正如您在评论中所说,如果i
为正整数,您只想继续,如果i
为负字符或0
,则退出:
void get_positive_int(void)
{
int i;
while (true)
{
i = get_int("Integer: ");
if (i < 1)
{
return;
}
printf("%i\n", i);
}
}
void获取正整数(void)
{
int i;
while(true)
{
i=get_int(“整数:”);
if(i<1)
{
返回;
}
printf(“%i\n”,i);
}
}
请注意,在这种情况下,get\u positive\u int
的返回类型应为void
而不是int
,并且应忽略返回i
,因为不必从函数返回任何值。您编写了代码,以便在数字小于1时退出函数。如果希望它再次询问,请你必须告诉它这样做。提示:你的while
放错了位置。基本上这就是你需要的算法:1.获取整数。2.如果它是正的,返回它。3.如果它是负的,进入步骤1。你已经编写了代码,当数字小于1时退出函数。如果你想让它再次询问,你必须告诉它这样做。提示:你的while
放错了位置。基本上这就是你需要的算法:1.获取整数。2.如果它是正的,则返回它。3.如果它是负的,则转到步骤1。如果(i==INT\u MAX)
块需要什么?看起来是可丢弃的。@chux无法读取,它返回INT\u MAX
。这是一个cs50-thing.interest。当读取的值为INT\u MAX
时,还返回INT\u MAX
。看起来像get\u INT()
不允许阅读有效的INT\u MAX
@chux,所以,现在应该全部修复了。我经常不介意/忽略一些事情,当我对另一个属性有了一个想法和关注点时。我的属性不好。@chux\n我忘记了:谢谢你的提示。如果(I==INT\u MAX)需要什么
block?看起来是可丢弃的。@chux如果get\u-int()
无法读取,它将返回int-MAX
。这是一个cs50的东西。很有趣。当读取的值为int\u-MAX
时,还会返回int-MAX
。看起来像get\u-int()
不允许读取有效的INT\u MAX
@chux。因此,现在应该全部修复。当我对另一个问题有了想法并将注意力集中在另一个问题上时,我通常不会介意/忽略这些事情。我的属性不好。@chux-MAX我忘记了:谢谢你的提示。
void get_positive_int(void)
{
int i;
while (true)
{
i = get_int("Integer: ");
if (i < 1)
{
return;
}
printf("%i\n", i);
}
}