zoukankan      html  css  js  c++  java
  • [C++]PAT乙级1004. 成绩排名 (20/20)

    /*
    1004. 成绩排名 (20)
    
    读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
    
    输入格式:每个测试输入包含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
    */
    /*
        思路:
            使用两个学生结构体变量存储最大值与最小值,一边录入,一边比较当前学生成绩与最值。
    
        创新点:
            1.可以不需要使用数组存储所有学生的数据,使用两个学生结构体变量即可,大幅减少空间开支。
            2.注意unsigned在本题中对于max赋初始值(m<0时)不适用,所以不推荐。
    */
    #include <stdio.h>
    using namespace std;
    
    const int MAXLENGTH = 20;
    
    struct Student{
        char sname[MAXLENGTH];//student's name
        char sno[MAXLENGTH];//student's no
        int score;//course score
    }max,min,tmp;
    
    void print_student(Student *students,int size,int idx){
        if(idx == -1){ //print all
            for(int i=0;i<size;i++){
                printf("%s %s %d
    ", students[i].sname, students[i].sno, students[i].score);
            }
        } else {
            printf("%s %s
    ", students[idx].sname, students[idx].sno);
        }
    }
    
    int main()
    {
        int studentAmount=-1;
        scanf("%d", &studentAmount);
    
        max.score = -1;
        min.score = 101;
    
        //1.input students' data
        //2.record student's index of maximal score or minimal score
        while(studentAmount--){
            scanf("%s", &tmp.sname);
            scanf("%s", &tmp.sno);
            scanf("%d", &tmp.score);
            if(tmp.score > max.score){
                max = tmp;
            }
            if(tmp.score < min.score){
                min = tmp;
            }
        }
    
        //output students' data
        printf("%s %s
    ", max.sname, max.sno);
        printf("%s %s
    ", min.sname, min.sno);
    
        return 0;
    }
    

      

  • 相关阅读:
    js下载doxc 文件示例和部分后缀对应的content-type 总结
    使用react-app-rewired和customize-cra对默认webpack自定义配置
    koa2使用es7 的装饰器decorator
    vue history 模式打包部署在域名的二级目录的配置指南
    linux 安装 node 环境
    javascript 正则表达式之分组与前瞻匹配详解
    vue的$emit 与$on父子组件与兄弟组件的之间通信
    mysql 的基本操作总结--增删改查
    mysql 常用的时间日期函数小结
    小程序封装request请求,统一API
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/8812849.html
Copyright © 2011-2022 走看看