第五章 循环结构课后反思

本章重点、难点:

  • 本章重点讲了3种循环语句:for语句、while语句和do-while语句,另外还了解了if语句和goto语句组合构成的循环。
  • 一般情况下,三种循环语句都可以用来处理同一类问题,但当循环次数是肯定的时候,for循环比较方便。
  • while循环和for循环都要先判断条件再执行循环语句,所以,有可能一次也不执行循环体语句,而do-while循环不论怎样都会先执行一次循环语句。
  • break语句既可用于switch语句结构,又可用于循环语句结构,其作用是跳出控制结构语句。而continue语句不会中止循环,而是在<循环语句体>没有执行完的情况下,结束当前循环,提前进入下一个循环。
  • break语句和continue语句都会破坏程序的结构化,使程序变成非结构化的程序,在解决问题时应该尽量避免使用这两种语句。
  • 循环体语句为复合语句,要加花括号。
  • 不能使程序发生无限循环发生数据溢出。
  • 不能混淆了break语句和continue语句的功能。

思考题:

1、

方法一:

#include<stdio.h>
main()
{
	int i,j,k,n=9;
	for(i=1;i<=5;i++)
	{
		for(j=1;j<=(2*i-1);j++)
		  printf("*");
		for(k=1;k<=5;k++)
		  printf(" ");
		  printf("\n");
	}
	for(i=1;i<=5;i++)
	{
		for(j=1;j<=(2*(5-i)-1);j++)
		    printf("*");
		for(k=1;k<=i+1;k++)
		    printf(" ");
		    printf("\n");
	}
}

方法二:

#include<stdio.h>
main()
{
	int i,j,k,n=9;
	for(i=1;i<=5;i++)
	{
		for(j=1;j<=2*i-1;j++)
		  printf("*");
		
		  printf("\n");
	}
	for(i=1;i<=4;i++)
	{
		for(j=1;j<=n-2*i;j++)
		    printf("*");
		    printf("\n");
	}
}

运行结果:


做这道题的时候因为刚上完课,脑子里都在想老师上课讲例题时教的空格和星号一起用的方法,所以我在做这个图案的时候一直在构思空格该用什么表达式来表示,后来推敲出了上面的部分应该用(2i-1),下面的部分用(n-2i)表示,室友看到了却说我想的太复杂了,其实用老师上课讲的第一第二个例子就可以解决了,完全不用考虑空格该怎么写表达式,转念一想好像有点道理,代码敲出来后一对比,我之前想的确实是过于复杂了。

2、

#include<stdio.h>
main()
{
	int i,j,k,n=11;
	for(i=1;i<=5;i++)
	{
		for(j=i;j<5;j++)
		  printf(" ");
		for(k=1;k<=7;k++)
		  printf("*");
		  printf("\n");
	}
	for(i=1;i<=4;i++)
	{
		for(j=1;j<i+1;j++)
		    printf(" ");
		for(k=1;k<=7;k++)
		    printf("*");
		    printf("\n");
	}
}

运行结果:


做这个图案的时候其实我本来想做另外一个图案的,打完代码运行出来发现它的下面一部分和这个图案一模一样,所以临时决定做这个图案了。这个图案前五行分别是由四个空格、三个空格、两个空格、一个空格、0个空格和七个星号组成,所以空格的表达式我是用(j=i;j<5)来表示空格的,星号每一行都是七个,所以用的是(k=1;k<=7)表示;最后四行是由一个空格、两个空格、三个空格、四个空格和七个星号组成,刚好和前四行相反,便用(j=1;j<i+1)表示空格,(k=1;k<=7)表示星号。

分享交流:

我认为对我最大帮助的是黄志乾和戴求的博客,因为他们一个每次都很快就交了作业,一个写的非常的清晰明了,看完他们的作业之后让我对如何写作业有了一个大致的了解。

posted @ 2019-04-13 13:41  longmeiluo  阅读(166)  评论(0编辑  收藏  举报