第五章 循环结构课后反思
课后练习:
第一个练习的代码如下:
#include"stdio.h"
main()
{
int i,j,k; //定义整形变量
for(i=1;i<=9;i++) //用i定义总行数
{
if(i<=5) //使用if语句判断i是否大于等于5
{
for(j=5-i;j>0;j--) //使用j循环输出图案前的空格
{
printf(" ");
}
for(k=i*2-1;k>0;k--) //使用k循环输出图案*
{
printf("*");
}
printf("\n"); //在执行完一遍循环后换行
}
else
{
for(j=i-5;j>0;j--) //在i大于5时,j循环输出空格
{
printf(" ");
}
for(k=(10-i)*2-1;k>0;k--) //i》5时,k循环输出图案*
{
printf("*");
}
printf("\n"); //在执行完一遍循环后换行
}
}
}
第一个练习的图案如下:
![](https://img2018.cnblogs.com/blog/1616360/201904/1616360-20190414122947311-193568516.png)
代码解析:第一次练习的代码,主要是靠循环语句实现图案的输出,通过将整个图案的分块来分别实现相应的图案安输出,
再进行组合,并且使用if语句来辅助判断不同的模块,虽然增加了代码的复杂性,但是可以使思路更加清晰。
实验难点与反思:我认为实验中的难点就在于将图案进行分块,在图案分块之后,就可以分开实现相应的图案了,难度会
降低很多的。对于图案的分析很重要,其次,循环语句的正确使用也很重要。
前六个实验均可用同一套路实现,在此不多加描述。
第七个课后练习代码如下:
#include"stdio.h"
main()
{
int i,j,k,z; //定义整形变量
for(i=1;i<=11;i++) //使用i确定总行数
{
if(i<=5) //判断i是否小于等于5来区别输出图案,分块输出
{
for(j=1;j<=20-4*i;j++) //使用j输出第一部分的空格
{
printf(" ");
}
for(k=21-4*i;k<=13+4*i;k=k+4) //使用k输出第二部分的*与空格相间的图案
{
printf("*");
printf(" ");
}
printf("\n"); //执行完一遍循环后换行
}
else
{
if(i<=7) //再判断i是否小于等于7来再次将图案分块
{
for(k=1;k<=33;k=k+4) //使用k输出该模块的图案
{
printf("*");
printf(" ");
}
printf("\n"); //执行完一遍循环后换行
}
else
{
for(j=0;j<=16-(i-7)*4;j=j+4) //在i大于7时,使用j输出第一部分的图案
{
printf("*");
printf(" ");
}
for(k=1;k<=1+(i-8)*8;k++) //在i大于7时,使用k输出第二部分的图案
{
printf(" ");
}
for(z=17+(i-7)*4;z<=33;z=z+4) //在i大于7时,使用z输出第三部分的图案
{
printf(" ");
printf("*");
}
printf("\n"); //执行完一次循环后换行
}
}
}
}
第七个课后练习图案如下:
![](https://img2018.cnblogs.com/blog/1616360/201904/1616360-20190414122959274-1389463245.png)
代码解析:第七次练习的代码依然是主要依靠for语句的循环来输出图案,将整个图案进行分块,分成六块,再进行拼接即可
得到需要输出的图案。
实验难点与反思:第七次练习的主要难点是将图案分为六块,并且每一块的输出都要进行分析与计算,会显得比较繁杂,很
可能会出错。我们应该要耐心地进行代码的分析,不要着急,一步一步来。
实验总体感悟:我觉得循环语句是目前学到的最具有灵活性的语句,可以实现很多功能,但同时也会有更多需要注意的点在
里面,我认为,学习循环结构,最重要的是要有耐心,并且细心,很多时候一个细节可能导致整个代码的错误,很容易使人心烦
气燥,所以我会尽我所能地去学好循环结构这一节课的。