c语言竞赛成绩排序,比赛排名 (C++代码)

解题思路:

定义一个结构体,保存学号和总分。

1.按要求输入数据,并把总分求出保存到结构体变量中

2.然后把总分不低于分数线的放入到向量容器中。

3.对向量排序,然后再输出向量中的元素个数,以及全部元素即可。

参考代码:#include

using namespace std;

typedef struct    //定义一个结构体,保存学号和总分

{

char num[22];

int score;

}Student;

bool cmp(Student s1,Student s2)  //定义比较规则

{

if(s1.score!=s2.score)     //总分不同,按总分从高到低

return s1.score>s2.score;

return strcmp(s1.num,s2.num)<0;  //总分相同,按学号从低到高

}

int main()

{

int N,M,G;

int value[11];

while(cin>>N && N)

{

cin>>M>>G;

for(int i=1;i<=M;i++)

cin>>value[i];

vector v1;  //定义学生向量容器保存不低于分数线的学生

Student stu;

for(int i=0;i

{

int count,answer;

cin>>stu.num;

cin>>count;

stu.score=0;

for(int j=0;j

{

cin>>answer;

stu.score+=value[answer];

}

if(stu.score>=G)//如果总分不低于分数线,放入向量容器中

v1.insert(v1.end(),stu);

}

sort(v1.begin(),v1.end(),cmp);  //排序

cout<

for(int i=0;i

cout<

}

return 0;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值