「已注销」 2022-11-28 00:06 采纳率: 80%
浏览 34
已结题

结构体语言c语言程序问题输入

用结构体解决下列问题:从键盘输入n个学生的信息,每个学生信息包括学号、姓名、3门课的成绩,然后计算每个学生的总分,求出前两名总分最高的学生,并输出学生的信息。
输入
只有一组数据,共n+1行
其中第一行是一个正整数n(1≤n≤100),表示要输入的学生人数。
第2--n+1 行 表示输入n个学生信息,分别是:学号(12位数字),姓名(英文名,长度不超过20个字符),3门课的成绩(大于等于0的整数)。
输出
有两行,输出总分最高的学生的信息,包括:学号,姓名,三门课成绩,总成绩,一个空格隔开。如输出样例所示。
难度
较难
输入示例
4
202008065201 zhangsan 88 80 99
202008065202 lisi 90 80 99
202008065203 wangwu 66 50 30
202008065204 wangwu 90 100 100
输出示例
202008065204 wangwu 90 100 100 290
202008065202 lisi 90 80 99 269

  • 写回答

2条回答 默认 最新

  • hello_world&& 2022-11-28 11:36
    关注
    
    #include<stdio.h>
    struct student{
        char num[30];
        char name[20];
        int score[3];
        int sum;
    };
    void sort(int n,struct student stu[])
    {
        struct student t;
        int i,j;
        for(i=0;i<n-1;i++)//n个数的数列总共扫描n-1次
        {
            for(j=0;j<n-i-1;j++)//每一趟扫描到stu[n-i-2]与stu[n-i-1]比较为止结束
            {
                if(stu[j].sum<stu[j+1].sum)//后一位数比前一位数大的话,就交换两个数的位置(降序)
                {
                   t=stu[j+1];
                   stu[j+1]=stu[j];
                   stu[j]=t;
                }
            }
        }
    }
    int main()
    {
        int i,n;
        struct student stu[100];
        scanf("%d",&n);
         for(i=0;i<n;i++)
        {
            scanf("%s %s %d %d %d",stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
            stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
        }
        sort(n,stu);
        printf("%s %s %d %d %d %d",stu[0].num,stu[0].name,stu[0].score[0],stu[0].score[1],stu[0].score[2],stu[0].sum);
        printf("\n");
        printf("%s %s %d %d %d %d",stu[1].num,stu[1].name,stu[1].score[0],stu[1].score[1],stu[1].score[2],stu[1].sum);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月28日
  • 已采纳回答 11月28日
  • 创建了问题 11月28日

悬赏问题

  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单