(PAT乙级)1055 集体照(C语言实现)

 

总结:

1、我的问题在于最后如何输出上找不到规律。输出之前的思路都是正确的。所以借鉴了柳婼小姐姐的C++代码的思路,然后写了C语言的程序。

2、总体思路如下:很明显这题肯定要用结构体去解决,但使用结构体让我疑虑的是因为名字是字符串,所以我需要定义一个字符数组,我并不清楚是否可以在结构体里定义字符数组,上网百度后是可以的。所以使用结构体进行成对的名字和身高输入。之后使用qsort函数对结构体进行二级排序。关于qsort中具体的比较函数cmp的书写见“德才论1015”题里的链接。到这里已经完成了身高的排序。之后的输出应该这样来:首先确定每排人数m(最后一排的特殊性,如果是最后一排,人数为n/k+n%k;其他排人数为n/k),定义一个二维字符数组来储存每排要输出的名字。以每排中间点为关键点,中间的人对应身高最高的人的名字,然后排左边从m/2-1开始--,对应的名字是+2的;排右边从m/2+1开始--,对应的名字是+2。便完成了一排的排序,然后进行当排的名字输出。

3、注意字符串大小的比较要使用strcmp函数。复制字符串要使用strcpy函数。

猜你喜欢

转载自blog.csdn.net/qq_40840749/article/details/82261159