如何在 C 中创建一个仅提示用户输入正整数并在主函数中调用它的函数?
How to create a function in C that prompts the user for positive integers only and call it in the main function?
这是我的代码。我没有在 printf 函数后使用 break 关键字来跳出循环。当我输入负数或零时,它不会再次提示我重新输入。
#include <stdio.h>
#include <cs50.h>
int get_positive_int(void);
int main (void)
{
get_positive_int();
}
int get_positive_int(void)
{
int i;
i = get_int("Integer: ");
while (true)
{
if (i<1)
{
return i;
}
else
{
printf("%i", i);
}
}
}
函数get_positive_int()
中的算法错误:
您需要将 i = get_int("Integer: ");
放在 while
循环中。
您的if
条件:
if (i < 1)
是错误的,因为 return i
如果 i
是负整数或 0
。如果你想 return i
当 i
是一个正整数或 0
你应该使用 if(i >= 0)
.
- 请注意,您还可以放置:
if (i == INT_MAX)
{
// optional error handling.
return INT_MAX;
}
调用维护后发生读取错误。但是如果你只想 return INT_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);
}
}
请注意,在这种情况下,get_positive_int
的 return 类型应为 void
而不是 int
并且应省略 return i
因为没有必要 return 函数中的任何值。
这是我的代码。我没有在 printf 函数后使用 break 关键字来跳出循环。当我输入负数或零时,它不会再次提示我重新输入。
#include <stdio.h>
#include <cs50.h>
int get_positive_int(void);
int main (void)
{
get_positive_int();
}
int get_positive_int(void)
{
int i;
i = get_int("Integer: ");
while (true)
{
if (i<1)
{
return i;
}
else
{
printf("%i", i);
}
}
}
函数get_positive_int()
中的算法错误:
您需要将
i = get_int("Integer: ");
放在while
循环中。您的
if
条件:
if (i < 1)
是错误的,因为 return i
如果 i
是负整数或 0
。如果你想 return i
当 i
是一个正整数或 0
你应该使用 if(i >= 0)
.
- 请注意,您还可以放置:
if (i == INT_MAX)
{
// optional error handling.
return INT_MAX;
}
调用维护后发生读取错误。但是如果你只想 return INT_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);
}
}
请注意,在这种情况下,get_positive_int
的 return 类型应为 void
而不是 int
并且应省略 return i
因为没有必要 return 函数中的任何值。