• 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
    
    #include<iostream>
    using namespace std;
    struct Student{
      char name[20];
      char no[20];
      int score;
    };
    int main()
    {
      int n;
      cin>>n;
      struct Student stu[110];
      int k,j;
      for(int i=0;i<n;i++)
         cin>>stu[i].name>>stu[i].no>>stu[i].score;
      int max=0;
      int min=0;
      for(int i=0;i<n;i++)
        {
          if(stu[i].score>stu[max].score)
             max=i;
          if(stu[i].score<stu[min].score)
             min=i;
        
         }
      cout<<stu[max].name<<" "<<stu[max].no<<endl;
      cout<<stu[min].name<<" "<<stu[min].no<<endl;
      return 0;
    }

    另一段代码也能运行,通过排序后再输出最大和最小值,但是实际上是复杂化了,时间复杂度不符合要求,所以在PAT上检测时测试点2未通过

    #include<iostream>
    using namespace std;
    struct Student{
        char name[20];
        char no[20];
        int score;
    }stu[110];
    int main()
    {
        int n;
        cin>>n;
        struct Student temp;
        int k,j;
        for(int i=0;i<n;i++)
           cin>>stu[i].name>>stu[i].no>>stu[i].score;
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(j=i+1;j<n;j++)
              if(stu[j].score>stu[k].score)        //进行成绩的比较
                 k=j; 
            temp=stu[k];
            stu[k]=stu[j];
            stu[j]=temp;
        }
        cout<<stu[n-1].name<<" "<<stu[n-1].no<<endl;
        cout<<stu[0].name<<" "<<stu[0].no<<endl;
        return 0;
    }
  • 相关阅读:
    Eureka集群----SpringCloud 微服务
    Eureka----SpringCloud 微服务
    SpringCloud 微服务
    yml在线格式转换工具(properties)
    Spring与Mybatis三种整合方法
    Spring缓存注解@CachePut , @CacheEvict,@CacheConfig使用
    Spring事务配置的五种方式
    Spring -- <tx:annotation-driven>注解基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)的区别。
    Spring -- <context:component-scan>使用说明
    web.xml执行顺序
  • 原文地址:https://www.cnblogs.com/lytmy7/p/7551082.html
Copyright © 2020-2023  润新知