为了账号安全,请及时绑定邮箱和手机立即绑定

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

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


正在回答

3 回答

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

0 回复 有任何疑惑可以回复我~
#1

风拂面 提问者

我似懂非懂呢,回头我再琢磨琢磨,谢谢你哈
2015-08-12 回复 有任何疑惑可以回复我~
#2

风拂面 提问者

非常感谢!
2015-12-14 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~
#1

风拂面 提问者

哎?这是为何呢?这样改确实是显示对了,但是我又有了一个问题了,开头定义int i,j,k=0;,后来循环中只有这样写即 for( k=1; k<=2*i-1 ; k++ )才是对的,这样k的初始值不是存在争议吗?求赐教
2015-08-12 回复 有任何疑惑可以回复我~
#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

0 回复 有任何疑惑可以回复我~
#1

风拂面 提问者

你还能解释一下我的这个程序是怎么运行的吗?
2015-08-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信