从零单排PAT1004. 成绩排名
来源:互联网 发布:小米4手机只有2g网络 编辑:程序博客网 时间:2024/04/29 20:00
题目要求很简单,如下:
读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
输入格式:每个测试输入包含1个测试用例,格式为
第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生的姓名 学号 成绩 ... ... ... 第n+1行:第n个学生的姓名 学号 成绩其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出格式:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低学生的姓名和学号,字符串间有1空格。
输入样例:3Joe Math990112 89Mike CS991301 100Mary EE990830 95输出样例:
Mike CS991301Joe Math990112代码如下:
#include "stdafx.h"#include <iostream>#include <string>using namespace std;class Student{public:string name;public:string num;public:int score ;public:void getinformation(string a,string b,int c){name = a;num = b;score = c;}public:void print(){cout << name <<" "<< num <<endl;}};int main(){int n;int score;int i;//student a[n];cin >> n;string name ,num;Student min = Student(); Student max = Student(); max.score = 0;min.score = 100;for(i = 0 ;i < n ; i++){cin>>name>>num>>score;if(score >= max.score) //判断是否大于最大值的分数,如果存在则进行赋值{max.getinformation(name,num,score);}if(score <= min.score) //判断是否小于等于最小值的分数,如果存在则进行赋值{min.getinformation(name,num,score);}}max.print(); //第一行输出最高成绩min.print();//第二行输出最低成绩return 0;}
没什么难点,但是存在一个基本的问题,是关于C++的。我在这里用到了类,算是面向对象了。一般只要用到结构体即可,但是这里我还是用了一个简单的类去描述学生这个群体。但是这里有一个问题,是根据输入的数字定学生的个数,相当于输入之后才能确定构造个多少个学生对象,这的确是一个难题,因为所有类的对象数组,都必须显式的声明数组的大小。一般来说可以用vector,容器去存放学生的对象,最后再进行比较。
显然这是一种比较笨的方法,仔细分析下题目就可以知道,我们只需要知道最高的分数和最低的分数就可以了,至于其他的都是中间变量,我们可以不用去在意。所以只要实例化一个分数最高的学生和一个分数最低的学生就可以;只要分数低于这个最低的分数或者高于最高的分数,就可以刷新对应的学生所有属性,题目也就引刃而解。
0 0
- 从零单排PAT1004. 成绩排名
- PAT1004 成绩排名
- PAT1004. 成绩排名
- pat1004:成绩排名
- PAT1004. 成绩排名
- 从零单排1
- 从零单排2
- 从零单排3
- 从零单排4
- 从零单排5
- 从零单排6
- 从零单排7
- 从零单排8
- 从零单排9
- 从零单排10
- 从零单排11
- 从零单排12
- 从零单排13
- serialVersionUID作用
- javax.servlet.jsp.JspException: Cannot retrieve definition for form bean 异常问题
- 未来计算的目标
- 平平淡淡才是真
- 2的补码
- 从零单排PAT1004. 成绩排名
- 人为什么要努力(转自新浪微博)
- window环境下搭建SVN服务器
- MySQL之慢SQL
- Servlet知识
- Android 博客
- 看电影《致青春》有感
- 小心情
- “华为杯”苏、鲁高校大学生程序设计大赛选拔赛暨东南大学第十届程序设计竞赛复赛总结