描述:读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号
输入:每个测试输入包含1个测试用例,格式为
第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生的姓名 学号 成绩 ... ... ... 第n+1行:第n个学生的姓名 学号 成绩
其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低学生的姓名和学号,字符串间有1空格
input:3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
output:Mike CS991301
Joe Math990112
分析:建立一个学生类,包含姓名,学号,成绩。主函数中用动态对象数组存数据。
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 class student 6 { 7 public: 8 void input() 9 { 10 cin >> name >> number >> grade; 11 } 12 void output() 13 { 14 cout << name << " " << number << endl; 15 } 16 int getGrade() 17 { 18 return grade; 19 } 20 private: 21 string name; 22 string number; 23 int grade; 24 }; 25 26 int main() 27 { 28 int n; 29 cin >> n; 30 student* stu = new student[n];//数组元素为对象本身,不是指针 31 for (int i = 0; i < n; i++) 32 stu[i].input(); 33 int max=0, min=0; //标记最大和最小对象的序号 34 for (int i = 0; i < n; i++) 35 { 36 if (stu[i].getGrade()>stu[max].getGrade())//通过函数返回值比较大小 37 max = i; 38 if (stu[i].getGrade()<stu[min].getGrade()) 39 min = i; 40 } 41 stu[max].output(); 42 stu[min].output(); 43 delete []stu; 44 system("pause"); 45 return 0; 46 }