打印图案改进:
我们将目标图案分为两个部分,前半部分设为1—n = a / 2 + 1;则后半部分可以相应的设为1—n-1。
首先用i遍历行数;
其次是在每行遍历需要打印的空格数,我们可以看到需要打印的空格数和行数的关系是:第i行打印n-i个空格;
其次是每行遍历要打印的星星的个数,我们可以看到需要打印的星星数和行数的关系是第i行打印2 * i - 1个星星;
我们在最外层的遍历完行数以后还应该打印换行符;
最后用同样的方法遍历下半部分即可;
最终打印出结果。
我们的程序只能计算得到奇数行的打印图案。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int i, j;
int n, a;
printf("请输入要打印的行数:\n");
scanf("%d",&a);
n = a / 2 + 1;
for (i = 1; i <= n; i++) {
for (j = 1; j <= n - i; j++) {
putchar(' ');
}
for (j = 1; j <= 2 * i - 1; j++) {
putchar('*');
}
putchar('\n');
}
for (i = n - 1; i >= 1; i--) {
for (j = n - i; j >= 1; j--) {
putchar(' ');
}
for (j = 2 * i - 1; j >= 1; j--) {
putchar('*');
}
putchar('\n');
}
system("pause");
return 0;
}