打印以下图案:
*
***
*****
*******
*********
***********
*********
*******
*****
***
*
解题思路:把整个图形分成3部分来处理:(1)上半部分(2)最中间一行(3)下半部分;分别利用循环和print_sp函数来输出空格和*,这样避免了复杂的循环嵌套,使程序更见简洁,可读性强。
对于上述菱形我们可以观察到规律:
源代码:
#include<stdio.h>
#include<stdlib.h>
int main() {
void print_sp(int sp, int star);
int n = 0, i = 0;
scanf_s("%d", &n);
for (i = 1; i < n; i++) {
print_sp(n - i, 2 * i - 1);
}
print_sp(0, 2 * n - 1); //将最中间一行单独调用函数打印出来
for (i = n - 1; i > 0; i--) {
print_sp(n - i, 2 * i - 1);
}
system("pause");
return 0;
}
void print_sp(int sp, int star) {
int i=0;
for (i = 1; i <= sp; i++) { //打印空格
printf(" ");
}
for (i = 1; i <= star; i++) { //打印*
printf("*");
}
printf("\n");
}