【数据结构实训】统计成绩

[问题描述]

给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名以及各科成绩组成。对学生的考试成绩进行有关统计,并打印统计表。

[基本要求]

(1)按总分数高低次序,打印出名次表,分数相同的为同一名次; (2)按名次打印出每个学生的学号、姓名、总分以及各科成绩。

[测试数据]

由学生依据软件工程的测试技术自己确定。注意测试边界数据。

[选作内容]

对各科成绩设置不同的权值。

参考样例

5
2020214111 王五 12 52 67 84
2020214113 赵六 15 63 45 95
2020214131 李四 33 65 84 75
2020214131 丁二 66 59 89 74
2020214131 心意 100 100 100 100

心意就是要全满分!hhh

代码实现:

#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
const int N=1e4+50;
struct ss
{
    char xuehao[15],name[10];//
    int wuli,shuju,shuzi,xiandai,yingyu;
    double zongfen;//物理,数据结构,数字逻辑,英语,总分
    //各科权值 数据结构占50% 线性代数占20% 数字逻辑占20% 英语占10%
}s[N];
bool cmp1(struct ss a,struct ss b)
{
    return a.zongfen>b.zongfen;
}
int main()
{
    int i,n;
    printf("请输入学生人数:\n");
    scanf("%d",&n);
    printf("请依此输入学生的学号、姓名、各科成绩(物理、数据结构、数字逻辑、英语)\n");
    for(i=1;i<=n;i++)
    {
        scanf("%s %s %d%d%d%d",&s[i].xuehao,&s[i].name,&s[i].wuli,&s[i].shuju,&s[i].xiandai,&s[i].yingyu);
        s[i].zongfen=s[i].wuli*0.2+s[i].shuju*0.2+s[i].xiandai*0.5+s[i].yingyu*0.1;
    }
    sort(s+1,s+n+1,cmp1);
    printf("\n名次表:\n");
    for(i=1;i<=n;i++)
        printf("%d %s %.2lf\n",i,s[i].name,s[i].zongfen);
    printf("\n成绩单:\n");
    for(i=1;i<=n;i++)
        printf("%s %s %.2lf %d %d %d %d\n",s[i].xuehao,s[i].name,s[i].zongfen,s[i].wuli,s[i].shuju,s[i].xiandai,s[i].yingyu);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值