PAT乙级1004成绩排名第一次完成记录

      						***## PAT乙级1004成绩排名第一次完成记录***
  1. 题目:
    读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

  2. 思路:
    首先建立学生变量类型的结构体,然后排个序,打印出第一位和最后一位的学生名字和成绩即可。每次输入一名学生的信息后,创建一个变量n来计数,最后用这个n来索引成绩最低的同学的信息。

  3. 写代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
typedef struct stu
{
    char name[11];
    char stu_num[11];
    int score; 
}stu;
void bubble(stu* s, int n);
int main()
{
    int n = 0;//用来索引成绩最低的学生的信息
    int num_in = 0;//要输入的学生信息数量
    scanf("%d", &num_in);
    stu* s = (stu*)malloc(sizeof(stu) * num_in);
    if (s == NULL)
        printf("%s", strerror(errno));
    else
    {
        for (int i = 0; i < num_in; i++)
        {
            scanf("%s%s%d", &(s[i].name), &(s[i].stu_num), &(s[i].score));
            n++;
        }

    }
    bubble(s, n);
    printf("%s %s\n", s[0].name, s[0].stu_num);
    printf("%s %s", s[n-1].name, s[n-1].stu_num);
}
void bubble(stu* s, int sz)//冒泡排序学生的成绩
{
    int i, j;
    for (i = 0; i < sz - 1; i++)
    {
        for (j = 0; j < sz - 1 - i; j++)
            if (s[j].score < s[j + 1].score)
            {
                stu tmp = s[j];
                s[j] = s[j + 1];
                s[j + 1] = tmp;
            }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值