• [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;
    }
    

      

  • 相关阅读:
    使用css的类名交集复合选择器 《转》
    在Web.config或App.config中的添加自定义配置 <转>
    [转]给ListView加上ComboBox或是TextBox控件
    WinForm Timer控件,三级联动[省,市,区]
    WinForm用户窗体
    WinForm 进程 ,线程
    WinForm MDI窗体容器
    WinForm 控件TabelControl对TabelPage页的添加,删除操作
    [转]C#重绘TabControl的Tabpage标签,添加图片及关闭按钮
    WinForm sender初级应用
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/8812849.html
Copyright © 2020-2023  润新知