#include<stdio.h> int main(){ int n=0; while(scanf("%d",&n) !=EOF){ //上半 for(int i=0;i<n+1;i++){ for(int j=0;j<2*(n-i);j++){ printf(" "); } for(int j=0;j<i+1;j++){ printf("*"); } printf("\n"); } //下半 for(int i=0;i<n;i++){ for(int j=0;j<2*(i+1);j++){ printf(" "); } for(int j=0;j<n-i;j++){ printf("*"); } printf("\n"); } } return 0; }将箭型分为两半,上半比下半多一行,然后考虑其中空格和*的打印