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

结构体语言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);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-28 02:02
    关注
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 PCL注册的选点等函数如何取消注册
  • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
  • ¥15 Python爬虫程序
  • ¥15 crypto 这种的应该怎么找flag?
  • ¥15 设计一个时序电路,使其状态按2421(B)循环,并能自启动
  • ¥15 代码已写好,求帮我指出错误,有偿!
  • ¥15 matlab+波形匹配算法
  • ¥15 转录组分析做聚类树图时癌旁组被分到了癌组
  • ¥15 大一Python字典
  • ¥15 multisim电路设计(相关搜索:设计报告)