菱形形状输出带`for`循环

时间:2013-12-19 01:10:31

标签: c loops

该程序只是在用户输入行数时创建钻石的形状,因此它只有6个for循环; 3个循环创建第一个三角形,3个循环创建另一个三角形,这两个三角形和6个循环我们有一个钻石,这是整个程序的图像:

Image

我对第5个for循环感到有点困惑,为第二个三角形创建空间的循环,循环首先添加第一个空格然后循环结束,程序继续到第6个循环并返回到进行第5次和第4次循环全部第6个循环,5个循环正在添加1,2,3,..空格,我们可以从spaces++看到,问题是这是如何工作的?计数器c每次都变得越来越高,c++,所以(空格和c)之间的差异每次仍然是1,因此它假设每次只添加一个空格,对于那些理解我是什么的人来说说你能解释一下吗

int n, c, k, space = 1;

  printf("Enter number of rows\n");
  scanf("%d", &n);

  space = n - 1;

  for (k = 1; k <= n; k++)
  {
    for (c = 1; c <= space; c++)
      printf(" ");

    space--;

    for (c = 1; c <= 2*k-1; c++)
      printf("*");

    printf("\n");
  }

  space = 1;

  for (k = 1; k <= n - 1; k++)
  {
    for (c = 1; c <= space; c++)
      printf(" ");

   space++;

    for (c = 1 ; c <= 2*(n-k)-1; c++)
      printf("*");

    printf("\n");
  }

2 个答案:

答案 0 :(得分:0)

  

计数器c每次都越来越高,c ++,所以   (空格和c)之间的差异每次仍为1

不,space++不是增加c的循环的一部分。该循环打印space个空格;完成后,空间会增加,所以下次再打印1个空格。

答案 1 :(得分:0)

在第5个for循环之后你应该添加空格++;否则钻石将不是正确的形状。