问题标题: 酷町堂:1172

0
0

0
已采纳
赵航宇
赵航宇
资深守护
资深守护

Hi~~~(为啥开头总是这样,我也不知道)

咳咳,朕要开始讲了!!!

首先,这题要定义!!!

需要定义一个名字,和一个得分,(注意:string类型的)(你应该知道怎样定义结构体吧!!!不说了)

这里还要定义一个n,一个数组,一个cmp函数(举个例子:int cmp(const game&a,const game&b))//你学过结构体,就应该能看懂;

然后你可以在cmp函数里写条件,

思路如下:

a.得分的长度>b.得分的长度,return 1

否则

如果a.得分的长度<b.得分的长度,return 0

否则

如果a.得分<b.得分,return 1

否则

如果a.得分>b.得分,return 0

否则

如果a.名字>b.名字,return 0

否则

如果a.名字<b.名字,return 1

return 1

(以上为cmp函数的思路)

最后

我们先输入n

然后来个循环输入名字和得分(循环会吧!!!不说了)

然后需要一个sort排序(like this:sort(a+0,a+n,cmp)//纯属举例子哦!!!

再来一个循环

输出名字(注意换行哦!!!)

最后,祝你AC!!!

望采纳!!!

1
张岳恒
张岳恒
资深光能
资深光能

这题还好

定义结构体

万能sort

cmp函数疯狂些条件

(就是成绩层高到底,名字从小到大(字典序))

输出

easy;

1
江齐悦
江齐悦
高级光能
高级光能

首先,用记录型数组存储输入内容,第一个字符串表示游戏者姓名,第二个表示得分。

再写个记录型快排函数(可调用STL库里的sort函数,如用,需加上compare,例:sort(a+1,a+n+1,compare);)。

在compare判断中,首先判断两个字符串(得分)的长度,长度长者优先;在这之后直接用>和<判断字符串,大者优先(如果两者得分完全相同,姓名字典序小者优先)。

最后按顺序输出所有游戏者姓名就可以了。

0
0
我要回答