【问题标题】:How to skip certain numbers in a for-loop?如何在for循环中跳过某些数字?
【发布时间】:2020-10-02 17:53:29
【问题描述】:

我开始在 C 中练习 for 循环,到目前为止,我了解了它背后的主要原理。但我不知道如何获得以下输出:

1 2 3  5 6 7  9 10 11 ...

我设法使用以下 for 循环打印了 1 到 12,但我如何跳过 4 和 8 或者一般如何跳过任何数字?

for(int i = 1; i < 12; i++)
{
    printf("%d", i);
}

【问题讨论】:

  • 喜欢for(int i = 1; i &lt; 12; i++) { if (i == 4 || i == 8) continue; printf("%d", i); } ?
  • if(i != 4 &amp;&amp; i != 8) printf("%d", i);?

标签: c for-loop numbers output skip


【解决方案1】:

您可以在循环体中使用 if 语句,例如

for ( int i = 1; i < 12; i++ )
{
    if ( i % 4 != 0 )
    {
        printf( "%d ", i );
    }
}

或者你可以避免在 for 循环的第三个表达式中被 4 整除的数字,比如

for ( int i = 1; i < 12; i += ( i + 1 ) % 4 == 0 ? 2 : 1 )  
{
    printf( "%d ", i );
}

如果您需要输出空格字符而不是可被 4 整除的数字,您可以在循环体中使用 if-else 语句。例如

for ( int i = 1; i < 12; i++ )
{
    if ( i % 4 != 0 )
    {
        printf( "%d ", i );
    }
    else
    {
        putchar( ' ' );
    }
}

【讨论】:

    【解决方案2】:

    最简单的解决方案是使用 if 语句检查您不想要的任何值。 如果你有一个规则,比如不打印所有能被 4 整除的数字,你可以像这样制作你的 if 语句

    if(i % 4 == 0)
    {
       //print
    }
    

    没有办法专门用 for 循环表达式来做到这一点。

    【讨论】:

      【解决方案3】:

      如果你想做特定的数字,你只需在 if 语句中添加更多条件:

          for(int i = 1; i < 12; i++)
          {
              if(i != 11 && i != 5 && i%3 != 0)
              {
                  printf("%d", i);
              }
          }
      

      【讨论】:

        【解决方案4】:

        做到这一点的最佳方式,尤其是对于大量不规则异常,是以下方式。

        #include <stdio.h>
        
        int main(int argc, char *argv[])
        {
            int exceptionsv[] = {4, 8};
            int exceptionsc = sizeof(exceptionsv)/sizeof(exceptionsv[0]);
            
            for(int i = 1; i < 12; i++)
            {
                for(int j = 0; j < exceptionsc; j++)
                {
                    if(exceptionsv[j] == i) i++;
                }
                printf("%d ", i);
            }
        }
        

        【讨论】:

          【解决方案5】:
          for (char i=0; i<12; i++) { if (i%4 != 0) printf("%d", i); }
          

          或者您可以隔离模式并使用嵌套循环复制它:

          char patternCount = 3;
          for (char i=0; i<patternCount; i++) { 
              for (char j=1; j<4; j++) printf("%d", i*4 + j); 
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-11-05
            • 2015-08-16
            • 1970-01-01
            • 2015-05-21
            • 1970-01-01
            • 2016-02-05
            • 1970-01-01
            相关资源
            最近更新 更多