如果不按照常规思路,分块该怎么写呢,纯属闲得无聊哈哈哈
把图形看成是上中下三部分,单数有中间部分,负数没有。
接着先答应前面的空格,接着打印*,继续空格,接着*
为了区分单复数,可以用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; }