题目分析:
(1)输入(用户,成绩)序列,考虑用结构体数组,对于数组中字符类型的数据,用char c[100],这种
(2)成绩排序,考虑到用sort函数,又规定按先录入排列在前的规则,故用stable_sort,排序时注意定义排序规则
(3)注意结构体的输入,输出
定义结构体数组
typedef struct ss{
char name[30];
int score;
}num[1000];
使用 struct ss num[1000];
输入
for(int i=0;i<n;i++){
scanf("%s %d",num[i].name,&num[i].score);
}
输出
for(int j=0;j<n;j++){
printf("%s %d\n",num[j].name,num[j].score);
}
排序
if(tmp==0){
stable_sort(num,num+n,cmp1);
}
代码:
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
typedef struct ss{
char name[30];
int score;
}num[1000];
bool cmp1(ss a,ss b){
return a.score>b.score;
}
bool cmp2(ss a,ss b){
return a.score<b.score;
}
int main(){
int n,tmp;
struct ss num[1000];
while(scanf("%d",&n)!=EOF){
scanf("%d",&tmp);
for(int i=0;i<n;i++){
scanf("%s %d",num[i].name,&num[i].score);
}
if(tmp==0){
stable_sort(num,num+n,cmp1);
}
else if(tmp==1){
stable_sort(num,num+n,cmp2);
}
for(int j=0;j<n;j++){
printf("%s %d\n",num[j].name,num[j].score);
}
}
return 0;
}
输出示例:
这道题与小白鼠排队这道题类似,注意定义的结构体的数组排序