Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中创建一个只提示用户输入正整数的函数,并在主函数中调用它?_C_Cs50 - Fatal编程技术网

如何在C中创建一个只提示用户输入正整数的函数,并在主函数中调用它?

如何在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循环中 您的如果条件: 在调用后保持读

这是我的密码。我未能在printf函数之后使用break关键字来中断循环。当我输入负数或零时,它不会再次提示我重新输入


#包括
#包括
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);  
      }
    }