试题描述
大名鼎鼎的某文学城网站系统要更新升级。假定所有书的关联数据为下面这几项:
1)书名,不含空白符的字符串,不超过59个字符。
2)作者,不含空白符的字符串,不超过19个字符。
3)本月月票数,整型数。
4)本月点击数,整型数。
5)完成字数,整型数。
请你定义书的结构体类型,内含上述数据成员。
然后给该文学城网站编写月度月票排行榜的程序,根据本月月票数将N本书从高到低排序(建议利用指针数组进行排序),若某两本书的月票数相同时,则根据本月点击数从高到低排序。最后输出排序后的书名。
假定不存在月票数和点击数均相同的书。
输入
输入包含N + 1行:
第一行是正整数N。
第二行到第N + 1行,每行都有五个数据,邻近两数用一个空格隔开。这五个数据分别是某本书的书名、作者、本月月票数、本月点击数和完成字数。
输出
输出N行,分别是根据本月月票数从高到低排序后的书名。若某两本书的月票数相同时,则根据本月点击数从高到低排序。
输入示例
4
C++Programming Tom 917 5467 70000
CloudComputing Jack 1321 4590 60000
TheArtandScienceofC Amy 726 3994 2000
DataStructuresandAlgorithmAnalysinC White 1321 5387 40000
输出示例
DataStructuresandAlgorithmAnalysinC
CloudComputing
C++Programming
TheArtandScienceofC
数据范围
输入为int范围内的整数和字符串,输出为字符串,对于100%的数据,1 < N < 20
参考代码(qsort)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct ip
{
char stra[60];
char strb[20];
int a,b,c;
}m[99999];
int cmp(const void *a,const void *b)
{
ip m,n;
m=*(ip*)a;
n=*(ip*)b;
if(m.a==n.a)
return n.b-m.b;
else
return n.a-m.a;
}
int main()
{
int N;
scanf("%d",&N);
for(int i=0;i<N;i++)
{
scanf("%s%s%d%d%d",m[i].stra,m[i].strb,&m[i].a,&m[i].b,&m[i].c);
}
qsort(m,N,sizeof(m[0]),cmp);
for(int i=0;i<N;i++)
{
printf("%s\n",m[i].stra);
}
return 0;
}
Code language: PHP (php)
本文标题:月度排行榜问题
本文链接:https://manwish.cn/article/%e6%9c%88%e5%ba%a6%e6%8e%92%e8%a1%8c%e6%a6%9c%e9%97%ae%e9%a2%98.html