第五章 循环结构课后反思
第五章
思考有七个图形,观察发现前4个类型差不多,后两个又是一个类型,最后一个最难,最有挑战性。
因此我选择做了3个,然后其他的在这3个上做改变,得到结果。
1、第一个,可以看成分为上下两部分。
代码为:
#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"); } int n=7; for(i=1;i<=4;i++) { for(j=1;j<=i;j++) printf(" "); for(k=i;k<=n-i+1;k++) printf("*"); printf("\n"); } }
2、第二个,与第一个相同,也是上下两部分,区别在于每行的*个数的差异。
代码为:
#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=i;j<=4;j++) printf(" "); for(k=1;k<=7;k++) printf("*"); printf("\n"); } }
前二个没什么难度,与老师上课讲的内容一样,都是讲的6个内容的叠加起来就能得到。
3、第三个,一看就是要分为3个部分。
我首先做了上面两层,与前面二个相识。
代码为:
#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里面嵌套3个循环。
代码为:
#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<=4;i++) { for(k=1;k<=5-i;k++) printf(" *"); for(k=1;k<=2*i-1;k++) printf(" "); for(k=1;k<=5-i;k++) printf(" *"); printf("\n"); } }
反思:
1、对于图形类,不能先盲目去打代码,要先将图形理解清楚,将其划分为几个简单的部分,然后一个一个去完成。
2、经常会对细节把握不准,for里面的循环表达式会接“,”,而不是“;”,造成编译不成功。
3、for循环的嵌套理解不深,不太会往for里面嵌套循环。