解题思路:
因为每位同学的数据都有多项,因此想到用类来存储每个学生。然后题目中有统计平均值和比较大小,就想到用类的成员函数来实现。
注意事项:
(0)因为用了容器来存储学生对象,这样就不能直接访问类对象的成员变量(比如成绩1、成绩2等等); 因此就创建一个用来访问这些成员变量的成员函数,然后访问时直接调用这些成员函数即可。 (1)在这个代码里,vector完全可以用数组来代替:Student a[100];效果相同。 (2)注意在成员函数里面都是运用的引用“&”,这样在函数使用时就不用进行对实参的拷贝了。
参考代码:
#include<iostream> #include<vector> #include<string> using namespace std; class Student //创建一个学生类 { public: //用来输入每个学生的数据 void inputs() { cin >> num >> name >> score1 >> score2 >> score3; } //以下三个函数分别用来获取每个学生的第一个、第二个和第三个成绩,以供后面进行相加 int Score1(Student &s1) { return s1.score1; } int Score2(Student& s1) { return s1.score2; } int Score3(Student& s1) { return s1.score3; } //重载大于号>,用来比较学生的成绩 bool operator > (Student& s1) { if ((score1 > s1.score1) && (score2 > s1.score2) && (score3 > s1.score3)) return 1; else return 0; } //输出学生的各项数据 void printf() { cout << num << " " << name << " " << score1 << " " << score2 << " " << score3; } private: string num; string name; int score1; int score2; int score3; }; int main() { vector v(100);//创建一个含100个学生对象的vector容器v int n; cin >> n; for (int i = 0; i < n; i++) //调用类中的input函数来逐项输入 v[i].inputs(); //计算每门成绩的平均值 int sum1 = 0, sum2 = 0, sum3 = 0; for (vector<Student>::iterator it = v.begin(); it != v.end(); it++) { sum1 += it->Score1(*it);//第一个成绩的总值 } for (vector<Student>::iterator it = v.begin(); it != v.end(); it++) { sum2 += it->Score2(*it);//第二个成绩的总值 } for (vector<Student>::iterator it = v.begin(); it != v.end(); it++) { sum3 += it->Score3(*it);//第三个成绩的总值 } cout << sum1 / n << " " << sum2 / n << " " << sum3 / n << endl;//输出平均值 //判断最高分的学生并输出 Student max;//先设定一个max的Student对象,在以下的比较中用来存储成绩最高的学生 for (int i = 0; i < n-1; i++) { if (v[i] > v[i + 1]) { max = v[i]; } else max = v[i + 1]; } max.printf();//最后进行输出 return 0; }
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:700 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:900 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:583 |
【计算球体积】 (C语言代码)浏览:1158 |
字符逆序 (C语言代码)浏览:706 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:913 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:585 |
简单的a+b (C语言代码)浏览:618 |
出圈】指针malloc版浏览:377 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:721 |