如何跳过for循环中的某些数字?
How to skip certain numbers in a for-loop?
我开始在 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);
}
最简单的解决方案是使用 if 语句检查您不需要的任何值。
如果你有一条规则,比如不打印所有能被 4 整除的数字,你可以像这样制作你的 if 语句
if(i % 4 == 0)
{
//print
}
没有办法专门用 for 循环表达式来做。
如果你想做特定的数字,你只需在 if 语句中添加更多条件:
for(int i = 1; i < 12; i++)
{
if(i != 11 && i != 5 && i%3 != 0)
{
printf("%d", i);
}
}
最好的方法,特别是对于大量的不规则异常,是下面的方法。
#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);
}
}
你也可以在循环体内使用 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 );
}
如果您需要输出 space 字符而不是可被 4 整除的数字,您可以在循环体内使用 if-else 语句。例如
for ( int i = 1; i < 12; i++ )
{
if ( i % 4 != 0 )
{
printf( "%d ", i );
}
else
{
putchar( ' ' );
}
}
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);
}
我开始在 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);
}
最简单的解决方案是使用 if 语句检查您不需要的任何值。 如果你有一条规则,比如不打印所有能被 4 整除的数字,你可以像这样制作你的 if 语句
if(i % 4 == 0)
{
//print
}
没有办法专门用 for 循环表达式来做。
如果你想做特定的数字,你只需在 if 语句中添加更多条件:
for(int i = 1; i < 12; i++)
{
if(i != 11 && i != 5 && i%3 != 0)
{
printf("%d", i);
}
}
最好的方法,特别是对于大量的不规则异常,是下面的方法。
#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);
}
}
你也可以在循环体内使用 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 );
}
如果您需要输出 space 字符而不是可被 4 整除的数字,您可以在循环体内使用 if-else 语句。例如
for ( int i = 1; i < 12; i++ )
{
if ( i % 4 != 0 )
{
printf( "%d ", i );
}
else
{
putchar( ' ' );
}
}
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);
}