题解 | #小飞机#
小飞机
https://www.nowcoder.com/practice/5cd9598f28f74521805d2069ce4a108a
共有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); }