从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,编写函数分别实现下列功能: (1)统计不及格人数并打印不及格学生名单; (2)统计成绩在全班平均分(向上取整)及平均分
时间: 2024-04-05 16:33:01 浏览: 26
以下是使用 C++ 实现上述功能的代码:
```cpp
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
void printFailList(vector<string>& names, vector<int>& scores) {
int count = 0;
cout << "不及格的学生有:" << endl;
for (int i = 0; i < names.size(); i++) {
if (scores[i] < 60) {
cout << names[i] << ",成绩为:" << scores[i] << endl;
count++;
}
}
cout << "不及格人数为:" << count << endl;
}
void printAverage(vector<string>& names, vector<int>& scores) {
int sum = 0;
for (int i = 0; i < scores.size(); i++) {
sum += scores[i];
}
int average = ceil((double)sum / scores.size());
cout << "全班平均分为:" << average << endl;
int count = 0;
cout << "高于等于平均分的学生有:" << endl;
for (int i = 0; i < names.size(); i++) {
if (scores[i] >= average) {
cout << names[i] << ",成绩为:" << scores[i] << endl;
count++;
}
}
cout << "高于等于平均分的人数为:" << count << endl;
}
int main() {
vector<string> names;
vector<int> scores;
cout << "请输入学生的名字和成绩(成绩为负数时结束输入):" << endl;
string name;
int score;
while (true) {
cin >> name >> score;
if (score < 0) {
break;
}
names.push_back(name);
scores.push_back(score);
}
printFailList(names, scores);
printAverage(names, scores);
return 0;
}
```
代码说明:
1. 使用 vector 存储学生名字和成绩,分别对应 `names` 和 `scores` 向量。
2. `printFailList` 函数用于统计不及格人数并打印不及格学生名单。遍历 `scores` 向量,如果成绩小于 60,则输出对应的学生名字和成绩,并将计数器加一。最后输出不及格人数。
3. `printAverage` 函数用于统计成绩在全班平均分及平均分以上的学生人数,并打印学生名字和成绩。首先计算全班平均分,并向上取整。然后遍历 `scores` 向量,如果成绩高于等于平均分,则输出对应的学生名字和成绩,并将计数器加一。最后输出高于等于平均分的人数。
4. 在 `main` 函数中,使用循环从键盘读入学生名字和成绩,直到成绩为负数时结束输入。然后调用 `printFailList` 和 `printAverage` 函数分别输出不及格学生名单和成绩在全班平均分及平均分以上的学生人数。