题解 | #小飞机#
小飞机
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);
}
查看9道真题和解析
