文章目录
- 一、题目
- 二、思路
- 三、代码实现
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目
二、思路
本题目是要求打印菱形,对于这种打印的题目而言,我们能正确的写出代码,就得找到规律
第一步
我们先对整个菱形进行数行和列,在下面图中,我们可以看到整个菱形是由13行,13列组成的。
第二步
再次看到菱形,我们可以看到,整个菱形的组成元素只有两种,一种是空格,一种是星号。
第三步
我们可以根据打印菱形和空格的规律我们可以将整个菱形分为上下两部分分别打印
上面部分占7行,先打印空格,然后再打印星号,空格是逐渐递减的;下面部分占6行,先打印空格,然后再打印星号,不过空格是逐渐递增的。
上半部分
根据下列表格分析得到:从第0行开始往下到第6行,一共七行,空格数先打印6个每行逐渐递减1个,星号先打印一个,每行个数增加两个,个数可以得到规律:2✖第几行+1
空格数 | 星数 | 第几行 |
---|---|---|
6 | 1 | 0 |
5 | 3 | 1 |
4 | 5 | 2 |
3 | 7 | 3 |
2 | 9 | 4 |
1 | 11 | 5 |
0 | 13 | 6 |
下半部分
空格数从一个开始逐渐递增,打印规律为第几行+1;星星数量从11开始递减,星号数规律为2✖(line-1-i)-1
空格数 | 星数 | 第几行 |
---|---|---|
1 | 1 1 | 0 |
2 | 9 | 1 |
3 | 7 | 2 |
4 | 5 | 3 |
5 | 3 | 4 |
6 | 1 | 5 |
三、代码实现
//打印菱形
int main()
{int line = 7;int i = 0;//打印上半部分for (i = 0; i < line; i++){//打印一行//打印空格int j = 0;for (j = 0; j < line - 1 - i; j++){printf(" ");}//打印星号for (j = 0; j < 2 * i + 1; j++){printf("*");}//打印一行后进行换行printf("\n");}//打印下半部分for (i = 0; i < line - 1 ; i++){//打印一行//打印空格int j = 0;for (j = 0; j < i + 1; j++){printf(" ");}//打印星号for (j = 0; j < 2 * (line - i - 1) - 1; j++){printf("*");}printf("\n");}return 0;
}