问答详情
源自:4-12 循环结构之多重循环

为什么网页上显示的图形是正确的而codeblocks上显示的却不对呢?

为什么网页上显示的图形是正确的而codeblocks上显示的却不对呢?

#include <stdio.h>

int main()

{

    int i, j, k;

    for(i=1; i<5; i++)

    {

        /* 观察每行的空格数量,补全循环条件 */

        for(j=1 ; j<=i-k+2; j++  )

        {

            printf(" ");    //输出空格

        }

        /* 观察每行*号的数量,补全循环条件 */

        for( k=1 ;  k<=2*i-1 ;  k++    )

        {

            printf("*");   //每行输出的*号

        }

        printf("\n");     //每次循环换行

    }

    return 0;

}

55cab8e400015b9b02650239.jpg

55cab8e5000194cd04740209.jpg

是程序编错了吗?求赐教,错在哪里,最好是解释一下这个程序是如何运行的,为什么会出现这种状况,谢谢


提问者:风拂面 2015-08-12 11:11

个回答

  • 昨夜小楼泣东风
    2015-08-12 20:43:27
    已采纳

    这并不矛盾。开头定义int i,j,k=0;这个k是全局变量。而后面的for( k=1;  k<=2*i-1 ;  k++    )是局部变量

  • 昨夜小楼泣东风
    2015-08-12 20:09:56

     int i, j, k;--------------你只需要在这句中为k赋值为0即可   

    将其改为 int i, j, k=0;

  • 昨夜小楼泣东风
    2015-08-12 17:02:14

    #include <stdio.h>
    int main()
    {
        int i, j, k;
        for(i=1;i<5;i++)
      {
          /* 观察每行的空格数量,补全循环条件 */
          for(j=1 ;j<=4-i;j++  )
          {
             printf(" ");    //输出空格
          }
          /* 观察每行*号的数量,补全循环条件 */
          for( k=1;k<=2*(i-1)+1;k++    )
          {
              printf("*");   //每行输出的*号
          }
              printf("\n");     //每次循环换行
       }
     return 0;
    }
    空格为倒序等差3,2,1----------所以得an=3+(n-1)*(-1)
    *差为2的等差数列---------------所以得an=1+(n-1)*2