嵌套循环可以在单个循环上抓取

Can nested loop be grabbed on a single loop?

本文关键字:循环 抓取 单个 嵌套循环      更新时间:2023-10-16

这是代码:

#include <stdio.h>
int main() {
    int i, j;
    for(i = 0; i < 10; i++) {
        for (j = 0; j < i; j++){
            printf("*");
        }
        printf("n");
    }
    return 0;
}

上面的代码可以在底部像这样在单个循环上循环吗?(虽然这对我不起作用。

#include <stdio.h>
int main() {
    int i, j;
    for (i = 0, j = 0; i < 10, j < i; i++, j++){
        printf("*");
    }
    printf("n");
    return 0;
}

是的,这是可能的,但你应该查看不同的运算符做什么(并考虑你的代码应该做什么)。

for (int i = 10; i <= 100; i++) {
    if (i % 10 <= i / 10) {
        printf("*");
    }
    if (i % 10 == 0) {
        printf("n");
    }
}

不明智。您希望为每个值循环遍历 j 的每个值 i ,这意味着一个嵌套循环。第二个示例将在每次迭代后递增ij,这是非常不同的。

原则上,你可以从 0 循环一个变量到(至少)45,并做一些算术来找到 i 的值,并从中j;但这会很难理解,而且效率可能更低,所以我不会建议一种方法来做到这一点。

试一试,它会正常工作,无需任何额外的迭代。

int count=1,tmp=1;
for (int i = 1; i <= 10; i++) 
{
    printf("*");
    if (count == i) {
        printf("n");
        tmp++;
        count+=tmp;
    }
}
#include <stdio.h>
int main() {
    int i = 10, j = 0, k = 1; 
    while(j++ < i)
        (j == k && j <i) ? (printf("n"),k+=1,j=0):printf("*");
    return 0;
}

你可以这样写,但它不可读。

#include <stdio.h>
int main() {
  int i, j;
  for(i=0, j=0; j<i? :(printf("n"), j=0, i++, i<10); j++) {
    printf("*");
  }
  return 0;
}

您可以使用逗号运算符来处理此类事情,尽管您的条件部分不正确。

它应该是

for (i = 0, j = 0; i < 10 && /* perhaps || here*/ j < i; i++, j++){