找出总分最高的学生

okk,家人们,今天姗姗来迟

今天就给大家讲一到pta的题目吧,虽然知道没人看。。害,悲哀

ok上题目

 题目的意思很简单,就是第一行给出学生的数目,这里是五个学生

然后下面分别给出五个学生的学号,姓名,还有三门成绩,让我们算出最高分的同学的姓名学号和总分,啊不对,是打印出来

好了,题目的意思咱已经懂了

接下来咋做呢

好问题

你们没发现就是

每个同学的信息很对称吗

都是学号,姓名,三门成绩

所有人都有这些内容

那么我们可以设定一个结构

包括这三个内容

这样每个人拥有一个结构,一个结构里面的信息他都有

这样就可以不用再重复地处理每一个信息了

就是类似于打包处理

但是最后不是要求最高的总分吗

那不是还得比较?

so我们还得算出每个人的总分

于是~~

typedef struct{
    char xh[6];
    char xm[40];
    int a;
    int b;
    int c;
    int t;
}student;
这个就是我写的结构

接下来写主函数部分

    int n;
    scanf("%d",&n);
    student f[10];
    int max_index=0;
    int max=-1;
不是有五个学生嘛,当然我知道这个可以用户自己输入,我就是打个比方你好理解嘛

那我们就可以把每个人拥有的那个结构

当做这个人

然后总共五个人,那不就可以用数组嘛,更好弄。最高分肯定不会是0分以下吧,那我就设定最高分为负一,这样就会不断被更新。然后最大值的指数就是第一个数组的值。因为这个时候还没有扫描数组嘛,所以不知道第一个值是多少,所以才设定最高分是负一。

for(int i=0;i<n;i++){

        scanf("%s %s %d %d %d",f[i].xh,f[i].xm,&f[i].a,&f[i].b,&f[i].c);

        f[i].t=f[i].a+f[i].b+f[i].c;

        if(f[i].t>max){

            max=f[i].t;

            max_index=i;

        }

    }

然后呢,我们就进行了扫描的任务,每次扫描学生的信息,我们就可以顺便算出他的总分便于比较大小。还可以顺便把大小比较了

这样子所有都扫描完了,也比较完了

printf("%s %s %d\n",f[max_index].xm,f[max_index].xh,max);

最后呢,就是一个打印的操作

这里有一个细节,就是输入和输出的姓名,学号位置不一样,一定要小心。另外字符在扫描的时候和数字不一样,也要注意。细节细节细节!

总得我汇总一下吧

 

 

截屏的有点丑

大家凑合看吧

然后我有点懒,没有注释

但是我都给你们讲清楚了哈

不能蛐蛐我了哈

今天的分享就到这里啦

拜拜!!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值