【问题描述】
统计多个班级的所有学生的C++课程成绩。
要求:
动态分配和释放空间;
输入第一行为班级数N;
然后输入N行,第 i 行的第一个数表示第 i 个班有多少人(记为ni),第i行后ni个数分别表示第 i 班第0号学员到第ni -1号学员的C++成绩, 班级和人员的编号都从0开始;
最后,输入整数x和y,程序输出第x号班第y号人的成绩。
【样例输入】
3
2 90 100
3 91 92 93
4 100 99 96 95
1 1
【样例输出】
92
#include <iostream>
using namespace std;
class StudentScore {
private:
int** scores;
int* classSizes;
int numClasses;
public:
StudentScore();
~StudentScore();
void inputScores();
int getScore(int x, int y);
};
StudentScore::StudentScore() : scores(nullptr), classSizes(nullptr), numClasses(0) {}
StudentScore::~StudentScore() {
if (scores) {
for (int i = 0; i < numClasses; i++) {
if (scores[i]) {
delete[] scores[i];
}
}
delete[] scores;
}
if (classSizes) {
delete[] classSizes;
}
}
void StudentScore::inputScores() {
cin >> numClasses;
scores = new int*[numClasses];
classSizes = new int[numClasses];
for (int i = 0; i < numClasses; i++) {
cin >> classSizes[i];
scores[i] = new int[classSizes[i]];
for (int j = 0; j < classSizes[i]; j++) {
cin >> scores[i][j];
}
}
}
int StudentScore::getScore(int x, int y) {
return scores[x][y];
}
int main() {
StudentScore ss;
ss.inputScores();
int x, y;
cin >> x >> y;
int score = ss.getScore(x, y);
cout << score << endl;
return 0;
}
【注】此分栏为西安理工大学C++练习题,所有答案仅供同学们参考。