如果不按照常规思路,分块该怎么写呢,纯属闲得无聊哈哈哈
把图形看成是上中下三部分,单数有中间部分,负数没有。
接着先答应前面的空格,接着打印*,继续空格,接着*
为了区分单复数,可以用n%2作为区分标志。
找其中的规律累死我了,大家就当看着图一乐。
#include <stdio.h>
int main() {
int n;
while (scanf("%d", &n) != EOF) {
int n1 = n / 2 + n % 2;
for (int i = 0; i < n1 - n % 2; i++) {
for (int j = 0; j < i; j++) {
printf(" ");
}
printf("*");
for (int k = 0; k < 2 * (n1 - i - 1) - n % 2; k++) {
printf(" ");
}
printf("*\n");
}
if (n % 2) {
for (int i = 0; i < n1 - 1; i++) {
printf(" ");
}
printf("*\n");
}
for (int i = 0; i < n1 - n % 2; i++) {
for (int j = 0; j < n1 - i - 1 - n % 2; j++) {
printf(" ");
}
printf("*");
for (int k = 0; k < 2 * i + n % 2; k++) {
printf(" ");
}
printf("*");
printf("\n");
}
}
return 0;
}

京公网安备 11010502036488号