共有2层抽象,先把小飞机抽象成一行一行的,再把每个对称行抽象成左右两个半边
这样就可以直接调用output_airplane进行输出了,只要规定好每行的宽度、标识符个数、最中间标识符的距离即可

#include <stdio.h>

//形参num用以控制该行的符号个数,gap用以控制最中间的符号的间隔,wide标识小飞机最宽的地方
//该函数用以打印小飞机的其中一行,打印过程分为两部分,先打印左半边,再打印右半边
int output_airplane(int num,int gap,int wide)
{
    int left_first_location =((wide/2)-(gap/2)-(num/2));//该行左半侧需要打印的第一个位置点
    int right_first_location = ((wide/2)+(gap/2));//该行右半侧需要打印的第一个位置点

    for(int i = 0;i < left_first_location;i++)
    {
        printf(" ");
    }

    for(int i = left_first_location;i < (left_first_location+num/2);i++)
    {
        printf("*");
    }

    for(int i = (left_first_location+num/2);i < right_first_location;i++)
    {
        printf(" ");
    }

     for(int i = right_first_location;i < (right_first_location+num/2);i++)
    {
        printf("*");
    }

    printf("\n");

    return 0 ;
}

int main() 
{
     output_airplane(2,0,12);
     output_airplane(2,0,12);
     output_airplane(12,0,12);
     output_airplane(12,0,12);
     output_airplane(2,2,12);
     output_airplane(2,2,12);
}