输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序,排序用函数实现。

输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序,排序用函数实现。(使用结构体)

#include<stdio.h>
#include<string.h>
struct student
    {
        long long num;
        char name[20];
        int score1;
        int score2;
        float sum;
        float aver;
    };
int main()
{
    struct student stu[5];
    struct student temp;
    int i,k,j;
    for(i=0;i<5;i++) 
    {
        scanf("%lld %s %d %d",&stu[i].num, stu[i].name, &stu[i].score1, &stu[i].score2);
        stu[i].sum=stu[i].score1+stu[i].score2;
        stu[i].aver=stu[i].sum/2.0;
    }
    for(i=0;i<4;i++)
    {
        k=i;
        for(j=i+1;j<5;j++)
        if(stu[j].sum>stu[k].sum)
        k=j;
        temp=stu[k];
        stu[k]=stu[i];
        stu[i]=temp;
    }
    for(i=0;i<5;i++)
    {
        printf("\n%lld %s %d %d %.2f %.2f\n",stu[i].num, stu[i].name, stu[i].score1, stu[i].score2, stu[i].sum, stu[i].aver);
    }
 } 

 

 

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本实验课题主要是要解决数据在文件中的读取,并且要求读取到的学生总人数少于30人,每位学生的课程不多于6门。此程序需要实现输入、计算、排序、删除、查询、显示功能。此实验需要在CodeBlocks等C语言编译平台上完成同时本实验要求所写的程序可以流畅的在编译平台上运行。首先为用户提供一个菜单,展示各个选项的功能,用户可输入一个选项(数字),执行相应的功能,通过运用switch语句对用户输入的数字进行处理判断出用户想要执行的操作。一共有14个选项,第一个和八九选项没有使用函数,二三分别对应着一个函数,第四个到第七个都使用同一个函数来输出成绩。十到十三个分别对应一个函数,最后一个0来结束程序。 学生信息的写入(定义FILE *fp指针),先将将学生人数和课程门数写入文件,以结构体数组的形式来保存键盘上输入的每个学生相应的信息。然后再用fprintf函数的格式写入方式将数组中的数据写入文档中。 学生信息的读取,先定义结构体数组,从文件中读取学生学号姓名成绩信息写入到结构体数组stu中,在用fscanf函数的格式读取方式将文档中相应的数据保存在相应的结构体数组里定义的变量中。 计算排序的功能,是按不同的要求分别将学生的总成绩和平均成绩计算出来,然后将每个学科的总成绩平均成绩计算出来,然后按升序或者降序将成绩排序出来。 删除查询显示等功能,可以通过读取得到的结构体数组,进行重写文档,打印等方式实现功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值