一位发福利人士 2022-02-12 19:54 采纳率: 94.1%
浏览 163
已结题

给大家送一个晋级的题,最好加上注释

题目描述
现有 N(N\le 1000)N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过 8 个字符的仅有英文小写字母的字符串)、语文、数学、英语成绩(均为不超过 150 的自然数)。总分最高的学生就是最厉害的,请输出最厉害的学生各项信息(姓名、各科成绩)。如果有多个总分相同的学生,输出靠前的那位。

输入格式

输出格式

输入输出样例
输入 #1
3
senpai 114 51 4
lxl 114 10 23
fafa 51 42 60
输出 #1
senpai 114 51 4
我承认我自己不会……

  • 写回答

1条回答 默认 最新

  • Code_流苏 C/C++领域优质创作者 2022-02-12 20:23
    关注

    以下代码,仅供参考:

    #include<stdio.h>
    #include<string.h>
    //学生信息结构体 
    struct student{
        char name[20];//姓名
        int Chinese;//语文成绩
        int Math;//数学成绩
        int English;//英语成绩
        int sum;//成绩总和
    }s[1000];
    
    int main()
    {
        int n,i,j;
        scanf("%d",&n);//输入n 代表人数
        //循环输入n位学生的信息
        for(i=0;i<n;i++)
        {
            scanf("%s%d%d%d",s[i].name,&s[i].Chinese,&s[i].Math,&s[i].English);
            s[i].sum=s[i].Chinese+s[i].Math+s[i].English; //成绩求和
        }
        //创建结构体变量stu
        struct student stu;
        //判断交换 找出成绩最好的
        for(i=0;i<n-1;i++)
        {
            for(j=0;j<n-1-i;j++)
            {
                if(s[j].sum<s[j+1].sum)
                {
                    stu=s[j];
                    s[j]=s[j+1];
                    s[j+1]=stu; 
                }
            }
        }
        //输出最靠前的
        printf("%s %d %d %d\n",s[0].name,s[0].Chinese,s[0].Math,s[0].English);
        return 0;
    }
    
    

    运行结果如图:

    img

    以上仅供参考,如有任何疑问,可以评论回复,看到即回。
    希望对题主有所帮助!可以的话,点个采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月21日
  • 已采纳回答 2月13日
  • 创建了问题 2月12日

悬赏问题

  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题