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

来源:4-12 循环结构之多重循环

风拂面

2015-08-12 11:11

为什么网页上显示的图形是正确的而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

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


写回答 关注

3回答

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

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

    风拂面

    非常感谢!

    2015-12-14 21:36:32

    共 2 条回复 >

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

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

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

    风拂面

    哎?这是为何呢?这样改确实是显示对了,但是我又有了一个问题了,开头定义int i,j,k=0;,后来循环中只有这样写即 for( k=1; k<=2*i-1 ; k++ )才是对的,这样k的初始值不是存在争议吗?求赐教

    2015-08-12 20:39:26

    共 1 条回复 >

  • 昨夜小楼泣东风
    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

    风拂面

    你还能解释一下我的这个程序是怎么运行的吗?

    2015-08-12 17:22:51

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926026 学习 · 20793 问题

查看课程

相似问题