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