题解 | #箭形图案#
箭形图案
https://www.nowcoder.com/practice/a6d1081e0c9a42f19e42ed6cd91556c1
#include <stdio.h>
int main() {
int n;
while (scanf("%d", &n) != EOF) {
//输出上半部分
//定义循环,以3为例,这个循环总共输出四行
for (int i = 1; i <= n + 1; i++) {
//输出空格部分
for (int j = 1; j <= 2 * (n - i + 1); j++) {
printf(" ");
}
//输出*
for (int k = 1; k <= i; k++) {
printf("*");
}
//每一行结束后输出换行符
printf("\n");
}
//输出下半部分,因为上半部分包含输出最多的情况,但仍输出n行
for (int a = n; a > 0; a--) {
//输出空格,下半部分的第一行就有两个空格,所以要加一,每次移位两个空格所以乘以2,上面for循环定义的int a减少的,所以每换行时2*(n-a+1)增加两个
for (int b = 1; b <= 2 * (n - a + 1); b++) {
printf(" ");
}
//输出*
for (int c = a; c > 0 ; c--) {
printf("*");
}
//输出换行符
printf("\n");
}
}
return 0;
}

