1. 题目
题目:打印菱形
要求:写一个函数,接收一个整型参数n,n表示菱形的行数且n为大于2的奇数
示例1:
输入:5
输出:
*
***
*****
***
*
示例2:
输入:7
输出:
*
***
*****
*******
*****
***
*
2. 分析
通过示例2可以看到,如果输入7,则菱形打印7行,前四行的 *
的个数分别为 1、3、5、7,左边空格的个数分别为 3、2、1、0;后三行的 *
的个数分别为 5、3、1,左边空格的个数分别为 1、2、3。
3. 代码
int print_rhombus(int n) { // n = 7
// 上半部分菱形的行数
int line = (n + 1) / 2; // 4
int i = 0;
int j = 0;
// 打印上半部分 line 行
for (i = 0; i < line; i++) {// 0 1 2 3
// 打印空格 n-1/2 (n-i-3)/2
for (j = 0; j < line - i - 1; j++) { // 3 2 1 0
putchar(' ');
}
// 打印 *
for (j = 0; j < i * 2 + 1 ; j++) { // 1 3 5 7
putchar('*');
}
putchar('\n');
}
// 打印下半部分 line - 1 行
for (i = 0; i < line - 1; i++) {// 0 1 2
// 打印 空格
for (j = 0; j < i + 1; j++) { // 1 2 3
putchar(' ');
}
// 打印 *
for (j = 0; j < (line - 1 - i) * 2 - 1 ; j ++) { // 5 3 1
putchar('*');
}
putchar('\n');
}
}
【注意】
该程序的最大一个难点在于找到空格和
*
的打印规律,这和我们中学的找规律是一样的。
文章索引
后记
我水平有限,错误难免,还望各位加以指正。
本文内容到此结束,感谢您的阅读!!!如果内容对你有帮助的话,记得给我三连丫(点赞、收藏、关注)
本人博客所有文章,均为原创。部分文章中或引用相关资料,但均已著明来源出处。可随意转载、分享,但需加本文链接,以及版权说明。