C语言程序设计:寻找最高分学生姓名

题目描述

输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。

输入描述

第一行输入一个正整数N(N <= 100),表示学生人数。接着输入N行,每行格式如下:

分数 姓名

分数是一个非负整数,且小于等于100; 姓名为一个连续的字符串,中间没有空格,长度不超过20。

数据保证最高分只有一位同学。

输出描述

获得最高分数同学的姓名。

样例1

输入复制

5
87 lilei
99 hanmeimei
97 lily
96 lucy
77 jim

输出

hanmeimei

C语言内容

#include<cstdio>
#include<algorithm>
using namespace std;
struct node{ //定义一个结构体
    int score;
    char name[25];
}stu[105]; //最多100个
bool cmp(node a,node b){ //重载运算符,按分数从大到小排序,分数相等按姓名字典顺序排序
    if(a.score!=b.score) return a.score>b.score;
    else return strcmp(a.name,b.name)<0;
}
int main(){
    int n;
    scanf('%d',&n);
    for(int i=0;i<n;i++)
        scanf('%d %s',&stu[i].score,stu[i].name);
    sort(stu,stu+n,cmp); //排序
    printf('%s',stu[0].name); //输出第一个就行,因为已经排过序了
    return 0;
}

代码解析

  1. 定义结构体node,包含学生分数score和姓名name
  2. 定义一个stu数组,最多存放100个学生信息。
  3. 使用cmp函数重载运算符,实现按分数从大到小排序,分数相等则按姓名字典顺序排序。
  4. 利用sort函数对stu数组进行排序。
  5. 输出排序后的第一个学生的姓名,即为最高分学生的姓名。

总结

本程序利用了结构体和排序算法,高效地解决了寻找最高分学生姓名的问题。程序中还考虑了分数相同时姓名的比较,保证了程序的正确性。

C语言程序设计:寻找最高分学生姓名

原文地址: https://www.cveoy.top/t/topic/nqW3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录