如果不按照常规思路,分块该怎么写呢,纯属闲得无聊哈哈哈

把图形看成是上中下三部分,单数有中间部分,负数没有。

接着先答应前面的空格,接着打印*,继续空格,接着*

为了区分单复数,可以用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;
}