循环结构课后反思
课后思考题的第一个是一个由“*”号构成的菱形,图像如下:
代码如下:
1 #include<stdio.h> 2 main() 3 { 4 int i,j,k; 5 for(i=1;i<=5;i++) 6 { 7 for(j=i;j<5;j++) 8 printf(" "); 9 for(k=1;k<=(2*i-1);k++) 10 printf("*"); 11 printf("\n"); 12 } 13 for(i=6;i<=9;i++) 14 { 15 for(j=1;j<=(i-5);j++) 16 printf(" "); 17 for(k=1;k<=19-2*i;k++) 18 printf("*"); 19 printf("\n"); 20 } 21 }
可将此图形分为两部分来考虑,上部分是由5行“*”号构成的三角形,下部分是由4行“*”号构成的三角形,两个三角形一组合便成了图示的菱形。
上部分是正的三角形,是由少到多递增的;而下部分是倒的三角形,是由多到少递减的。
课后思考题的第二个是一个由“*”号构成的三角形,图像如下:
代码如下:
1 #include<stdio.h> 2 main() 3 { 4 int i,j; 5 for(i=1;i<=5;i++) 6 { 7 for(j=1;j<=2*i-1;j++) 8 printf("*"); 9 printf("\n"); 10 } 11 for(i=6;i<=9;i++) 12 { 13 for(j=1;j<=19-2*i;j++) 14 printf("*"); 15 printf("\n"); 16 } 17 }
这里只需要用到两个变量,因为输出是从左边开始的,左边没有空格,所以不需要去定义空格变量。这个三角形也可以拆分成两个三角形,一个正的三角形,一个倒的三角形。将其分为俩部分来输出。
课后思考题的第三个是第二题的镜像三角形,图像如下:
代码如下:
1 #include<stdio.h> 2 main() 3 { 4 int i,j,k; 5 for(i=1;i<=5;i++) 6 { 7 for(j=1;j<=10-2*i;j++) 8 printf(" "); 9 for(k=1;k<=2*i-1;k++) 10 printf("*"); 11 printf("\n"); 12 } 13 for(i=6;i<=9;i++) 14 { 15 for(j=1;j<=2*i-10;j++) 16 printf(" "); 17 for(k=1;k<=19-2*i;k++) 18 printf("*"); 19 printf("\n"); 20 } 21 }
这个比第二题多了一个空格变量,方法都差不多,多了一个空格变量就要多考虑一点,比第二题稍难
总结:遇到不会的或者看不懂的图案,就把此图案分解成自己能看懂的,一步一步的来做,要把难的题目分解,变成容易的,毕竟这些东西都是由最基础的演变组成而来的。