一.本章重点、难点:
- 本章主要讨论了3种循环结构语句:for语句、while语句和do-while语句,还了解了if语句和goto语句组合构成的循环。
- for语句的一般形式:
for(;;)
{
} - while语句的一般形式:
while()
{
循环语句
循环变量表达式
} - do-while语句的一般形式:
do
{
}while(); - break语句既可用于switch语句结构,又可用于循环语句结构,其作用是跳出控制结构语句。而continue语句不会中止循环,而是在没有执行完的情况下,结束当前循环,提前进入下一个循环。
- break语句和continue语句都会破坏程序的结构化,使程序变成非结构化的程序,在解决问题时应该尽量避免使用这两种语句。
- 循环体语句为复合语句,要加花括号。
- 不能使程序发生无限循环发生数据溢出。
- 不能混淆了break语句和continue语句的功能。
- 重点内容是3种循环语句的结构和使用条件。
- 难点是确定循环结构中的条件,有时候一些细微的差别也会导致运行不出结果。
二.课内反思:
- 3种循环都可嵌套以构成各种混合嵌套结构。while循环和for循环都要先判断条件再执行循环体语句,有可能一次也不执行循环体语句,而do-while循环不论怎样都会先执行一次循环体语句。
- 使用循环结构时要注意避免以下几个方面的问题:1.循环体语句为复合语句,但没有使用花括号;2.使程序发生无限循环;3.混淆了break语句与continue语句的功能。
- 经过这章的学习,我掌握了一些几何图案的输出,但是有时还是会搞不清楚一些条件值的设定,还需要再多加练习。
三.几何图案输出:
1.程序代码:
# include<stdio.h> main() { int i,j,k,n=7; for (i=1;i<=5;i++) { for (j=i;j<5;j++) printf(" "); for (k=1;k<=(2*i-1);k++) printf("*"); printf("\n"); } for(i=1;i<=4;i++) { for(j=1;j<=i;j++) printf(" "); for(k=i;k<=(n-i+1);k++) printf("*"); printf("\n"); } }
运行结果:
分析:
我把这个图形分成了上五行与下四行两个三角形,并参照书中92页的程序进行编写代码。我一开始没有打出空格,还把n的值写成了9,所以没有运行出正确的图案。再看了几遍之后,才发现了问题所在。
2.程序代码:
#include<stdio.h> main() { int i,j; 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<=(9-2*i);j++) printf("*"); printf("\n"); } }
运行结果:
分析:
把这个图形分成上五行与下四行两个直角三角形,可以仿照书上代码去写,值得注意的是下面的直角三角形中应该是“j<=(9-2*i)”,其中2(5-i)-1=9-2i。
3.程序代码:
#include<stdio.h> main() { int i,j,k; for (i=1;i<=5;i++) { for (j=1;j<=(10-2*i);j++) printf(" "); for (k=1;k<=(2*i-1);k++) printf("*"); printf("\n"); } for (i=1;i<=4;i++) { for (j=1;j<=2*i;j++) printf(" "); for (k=1;k<=(9-2*i);k++) printf("*"); printf("\n"); } }
运行结果:
分析:
- 条件值的设定:9-2(2i-1)=10-2i;奇数:2i-1;偶数:2i;2(5-i)-1=9-2i。
- 代码中应该是“j=1”,而不是“j=i”(不能运行出正确图案)。
4.程序代码:
# include<stdio.h> main() { int i,j,k,n=9; for (i=1;i<=5;i++) { for (j=1;j<i;j++) printf(" "); for (k=i;k<=(n-i+1);k++) printf("*"); printf("\n"); } for(i=2;i<=5;i++) { for(j=i;j<5;j++) printf(" "); for(k=1;k<=(2*i-1);k++) printf("*"); printf("\n"); } }
运行结果:
分析:
把图案分成上五行的等腰三角形和下四行的等腰梯形。下部分梯形中的i从2开始,且小于等于5、而且"j=i"而不是"j=1"。
5.程序代码:
#include<stdio.h> main() { int i,j,k; for(i=1;i<=5;i++) { for(j=1;j<=i;j++) printf(" "); for(k=1;k<=7;k++) printf("*"); printf("\n"); } for(i=1;i<=4;i++) { for(j=1;j<=(5-i);j++) printf(" "); for(k=1;k<=7;k++) printf("*"); printf("\n"); } }
运行结果:
分析:
把图案分成上五行与下四行两个平行四边形,根据输出空格与星号的数量确定规律。每行都输出7个星号,而空格数是从1到4。下面的平行四边形中应该是“5-i”。
6.程序代码:
#include<stdio.h> main() { int i,j,k; for(i=1;i<=5;i++) { for(j=1;j<=(5-i);j++) printf(" "); for(k=1;k<=7;k++) printf("*"); printf("\n"); } for(i=1;i<=4;i++) { for(j=1;j<=i;j++) printf(" "); for(k=1;k<=7;k++) printf("*"); printf("\n"); } }
运行结果:
分析:
这道题与上一道题类似,可以直接改变条件表达式的值。
7.程序代码:
#include<stdio.h> main() { int i,j,k; for (i=1;i<=5;i++) { for (j=1;j<=5-i;j++) printf(" "); //前五行的三角形 for (k=1;k<=2*i-1;k++) printf(" * "); printf("\n"); } for (i=1;i<=2;i++) { for(j=1;j<=9;j++) //中间两行*号 printf(" * "); printf("\n"); } for (i=1;i<=5;i++) { for(j=1; j<=(5-i);j++) // 下面左边三角形 printf(" * "); for(k=1;k<=(2*i-1);k++) printf(" "); for(j=1;j<=(5-i);j++) printf(" * "); //下面右边三角形 printf("\n"); } }
运行结果:
把图案分成四个部分,上五行的三角形、矩形、下面左边的三角形和下面右边的三角形,再分块编写代码。
四.分享交流:
做了一些输出几何图案的练习后,我对于这种问题更熟练了些,但是有些细节方面还是不太懂。比如,有些题目中是i赋值给j,而有的却是把1赋值给j,如果不是这样的话,还不能运行出正确的图案。我觉得多动手操作还是很有帮助的,许多之前难以理解的部分现在感觉更理解了些,也发现很多地方可以用同样的方法去写代码。而且,很多同学的博客写得很好,看了他们的博客之后我学到了很多东西。
来源:https://www.cnblogs.com/youthyee/p/10701416.html