PAT_B_1004 成绩排名

题目描述:

读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

输入格式:
每个测试输入包含 1 个测试用例,格式为

第 1 行:正整数 n
第 2 行:第 1 个学生的姓名 学号 成绩
第 3 行:第 2 个学生的姓名 学号 成绩
  ... ... ...
第 n+1 行:第 n 个学生的姓名 学号 成绩
其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。

输出格式:
对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。

输入样例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
输出样例:
Mike CS991301
Joe Math990112

本人AC代码:

//   PAT_1 成绩排名 

# include <stdio.h>
# include <stdlib.h>

//  将学生结构体定义为指针类型
typedef struct student
{
    char Name[11];
    char Number[11];
    int Score;
}*Student;

int main(void)
{
    int n;    //  代表学生人数
    scanf("%d",&n);
    Student S; // 指针类型
    int i;
    int flag_min, flag_max; // 仅用下标代表最大最小值项 

    //  动态分配内存?
    // *************************************************
    //  此处存在很大问题
    S = (Student)malloc(n*40*sizeof(Student));
    //  判断内存是否分配成功
    if (NULL == S)
    {
        // 内存分配失败!
        exit(-1);
    }

    for (i=0; i<n; i++)
    {
        scanf("%s%s %d",S[i].Name, S[i].Number, &S[i].Score);
    }
//  注:在输入字符串的时候可以考虑以下输入方法
//    scanf ("%s%d %c%s", stu[i].name, &stu[i].age, &stu[i].sex, stu[i].num);  // %c前面要加空格, 不然输入时会将空格赋给%c

    // 对学生成绩进行排名
        // 找出最小值
    flag_min = 0;
    flag_max = 0;

    for (i=1; i<n; i++)
    {
        //  比较完成绩移动谁?
        if (S[flag_min].Score > S[i].Score)
            flag_min = i;

        if (S[flag_max].Score < S[i].Score)
            flag_max = i;
    }

    printf("%s %s\n",S[flag_max].Name,S[flag_max].Number);
    printf("%s %s\n",S[flag_min].Name,S[flag_min].Number);

    free(S); // 释放指针 

    return 0;
}

原文地址:https://www.cnblogs.com/Robin5/p/10905457.html

时间: 2024-10-22 10:57:39

PAT_B_1004 成绩排名的相关文章

oracle根据成绩排名查询某个名次段的人员

先说一下表结构  名字name  分数fenshu   表名test1,以下查询的是成绩排名为第三名和第四名,这个模板让你查随意排名段的人 select name,fenshu,mc from (select name, fenshu,dense_rank() over (order by fenshu desc) mcfrom test1                             ) where mc<=4and mc>2 dense_rank()与rank()区别是连续排名,

PAT乙级 1004. 成绩排名 (20)

1004. 成绩排名 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生的姓名 学号 成绩 ... ... ... 第n+1行:第n个学生的姓名 学号 成绩 其中姓名和学号均为不超过10个字符的字符串,成绩

PAT (Basic Level) Practise 1004. 成绩排名

1004. 成绩排名 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生的姓名 学号 成绩 ... ... ... 第n+1行:第n个学生的姓名 学号 成绩 其中姓名和学号均为不超过10个字符的字符串,成绩为0到10

1004. 成绩排名

1 /* 2 * Main.c 3 * 1004. 成绩排名 4 * Created on: 2014年8月28日 5 * Author: Boomkeeper 6 ***********测试通过********* 7 */ 8 9 #include <stdio.h> 10 11 struct student { 12 char name[11]; 13 char num[11]; 14 int score; 15 }; 16 17 int main(void) { 18 19 int n;

Programming Ability Test学习 1004. 成绩排名 (20)

1004. 成绩排名 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生的姓名 学号 成绩 ... ... ... 第n+1行:第n个学生的姓名 学号 成绩 其中姓名和学号均为不超过10个字符的字符串,成绩

【PAT】1004. 成绩排名 (20)

1004. 成绩排名 (20) 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生的姓名 学号 成绩 ... ... ... 第n+1行:第n个学生的姓名 学号 成绩 其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的. 输出格式:对每个测试用例输出2行,第1行是成绩最高学

1004 成绩排名 (20)(20 分)

1004 成绩排名 (20)(20 分) 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为\ 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生的姓名 学号 成绩 ... ... ... 第n+1行:第n个学生的姓名 学号 成绩 其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的. 输出格式:对每个测试用例输出2行,第1行

1004 成绩排名 未解决的问题

1004 成绩排名 (20 分) 读入 n(>0)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行:第 1 个学生的姓名 学号 成绩 第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ... 第 n+1 行:第 n 个学生的姓名 学号 成绩 输入样例: 3 Joe Math990112 89 Mike CS991301 100 Mary EE990830 95 输出样例:

[PAT乙级] Practise 1004 成绩排名

PAT (Basic Level) Practice (中文)1004 1004 成绩排名 读入 n(>0)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行:第 1 个学生的姓名 学号 成绩 第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ... 第 n+1 行:第 n 个学生的姓名 学号 成绩 其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间