无需很多if-else情况即可简化for循环

时间:2018-11-05 08:18:29

标签: c for-loop

我应该输出:

******
*****
****
***
**
*

我确实输出了,但是我的代码对于这种练习来说太复杂了:

for (int i = 6; i > 0; i--) {
  if (i == 6) {
    printf("******\n");
  } else {
    if (i == 5) {
      printf("*****\n");
    } else {
      if (i == 4) {
        printf("****\n");
      } else {
        if (i == 3) {
          printf("***\n");
        } else {
          if (i == 2) {
            printf("**\n");
          } else {
            if (i == 1) {
              printf("*\n");
            }
          }
        }
      }
    }
  }
}

如您所见,有很多if-else情况可以查看i包含哪个值,然后决定每行应输出多少个符号,但是该代码只是大量的代码块我认为这不是必需的。所以我来这里问,如何以相同的结果简化代码。

代码应该看起来更具可读性。知道如何更改我的代码吗?

2 个答案:

答案 0 :(得分:5)

您正在寻找嵌套循环。那是一个循环中的一个循环。要获得所需的输出,请尝试以下操作:

int main()
{
    for (int i = 0; i < 6; i++) {
        for (int j = 0; j < 6 - i; j++) {
            printf("*");
        }
        printf("\n");
    }
}

在这里,i循环负责行(您可以看到每次运行的printf("\n");),而j循环负责打印适当数量的{ {1}}。

答案 1 :(得分:3)

如果您使用另一个for循环,它将更加简单:

for(int i = 6; i > 0;i--) {
    for(int j = 0; j < i; j++) {  
     printf("*");
    }  
    printf("\n");
   }