
成绩排序 描述 给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有
描述给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。关于输入第一行为n(0关于输出把成绩单按分数从高到低的顺序进行排序并...
描述
给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
关于输入
第一行为n (0
关于输出
把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格
例子输入
4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
例子输出
Joey 92
Hanmeimei 90
Kitty 80
Tim 28
提示
可以用struct来保存姓名和分数 展开
给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
关于输入
第一行为n (0
关于输出
把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格
例子输入
4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
例子输出
Joey 92
Hanmeimei 90
Kitty 80
Tim 28
提示
可以用struct来保存姓名和分数 展开
3个回答
展开全部
不知你是否需要C的,这里提供一段代码供参考:
#include "stdafx.h"
#include "stdio.h"//
#include "stdlib.h"//
struct student{
char Name[16];
int Score;
};
void main(void){/*主程序*/
struct student *pstu,**px,*temp;
int nRec,i,j;
printf("请输入录入数...\nnRec=");
scanf("%d",&nRec);
pstu=(struct student *)malloc(nRec*sizeof(struct student));
px=(struct student **)malloc(nRec*sizeof(struct student *));
if(!pstu || !px){
printf("内存分配失败...");
exit(0);
}
printf("请录入姓名和成绩(间隔隔开)...\n");
for(i=0;i<nRec;i++){
printf("记录%d:",i+1);
scanf("%s%d",&(pstu+i)->Name,&(pstu+i)->Score);
px[i]=pstu+i;
}
for(i=0;i<nRec;i++)
for(j=i+1;j<nRec;j++)
if(px[i]->Score<px[j]->Score){
temp=px[j];
px[j]=px[i];
px[i]=temp;
}
for(i=0;i<nRec;i++)
printf("%s %d\n",px[i]->Name,px[i]->Score);
free(pstu);
free(px);
printf("\n");
}
#include "stdafx.h"
#include "stdio.h"//
#include "stdlib.h"//
struct student{
char Name[16];
int Score;
};
void main(void){/*主程序*/
struct student *pstu,**px,*temp;
int nRec,i,j;
printf("请输入录入数...\nnRec=");
scanf("%d",&nRec);
pstu=(struct student *)malloc(nRec*sizeof(struct student));
px=(struct student **)malloc(nRec*sizeof(struct student *));
if(!pstu || !px){
printf("内存分配失败...");
exit(0);
}
printf("请录入姓名和成绩(间隔隔开)...\n");
for(i=0;i<nRec;i++){
printf("记录%d:",i+1);
scanf("%s%d",&(pstu+i)->Name,&(pstu+i)->Score);
px[i]=pstu+i;
}
for(i=0;i<nRec;i++)
for(j=i+1;j<nRec;j++)
if(px[i]->Score<px[j]->Score){
temp=px[j];
px[j]=px[i];
px[i]=temp;
}
for(i=0;i<nRec;i++)
printf("%s %d\n",px[i]->Name,px[i]->Score);
free(pstu);
free(px);
printf("\n");
}
展开全部
提供C++的代码与注释:
#include <iostream>
#include <algorithm>//使用快排函数sort
using namespace std;
struct student{//定义结构体
int score;//为第i个学生的成绩
string name;//为第i个学生的名字
};
int n;//人数
bool cmp(const student a,const student b){//因为每次比较有两个学生,所以要用两次结构体得到a学生和b学生
if(a.score != b.score) return a.score > b.score;//比较两个学生的分数
return a.name < b.name;//如果分数相同就按字典序排,由于‘y’的ASCII码比‘z’的ASCII码小所以用<号
}
int main(){
cin >> n;
student a[n];//有n个学生就有n个成绩和名字,
for(int i = 0;i < n;i ++) cin >> a[i].name >> a[i].score;
sort(a,a + n,cmp);//排序
for(int i = 0;i < n;i ++) cout << a[i].name << " " << a[i].score << endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-07-16
展开全部
#include<bits/stdc++.h> using namespace std;const int maxn=100001;int n;struct node {
string name;
int fs; }a[maxn]; // bool comp(node a,node b) { //
if (a.fs==b.fs) return a.name<b.name;
else return a.fs>b.fs; }void sca() {
cin>>n;
for (int i=0;i<n;i++)
cin>>a[i].name>>a[i].fs; }int main(){
sca();
sort(a,a+n,comp);
for (int i=0;i<n;i++)
cout<<a[i].name<<" "<<a[i].fs<<endl;
return 0;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询