用c++编写程序数组,要求首先输入学生人数(最多为50个人),然后按编号从小到大的顺序依次输入学生成绩(包括语文、数学和英语3门课程的成绩),最后统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩。
时间: 2024-10-09 10:07:53 浏览: 48
基于C++,写一个程序 要求用户输入10个数据到数组中,然后将数组中最大值和最小值显示出来,并显示下标
在C++中,你可以按照以下步骤编写这样的程序:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 定义一个结构体存储学生信息
struct Student {
int id;
vector<int> scores; // 存储3门课程的成绩
};
int main() {
int numStudents;
cout << "请输入学生人数(最多50人):";
cin >> numStudents;
// 检查输入是否合法
if (numStudents > 50) {
cerr << "错误:学生人数超过限制,已设置为最大值50人。\n";
numStudents = 50;
}
vector<Student> students(numStudents);
for (int i = 0; i < numStudents; ++i) {
cout << "请输入学生" << i + 1 << "的编号:";
cin >> students[i].id;
for (int j = 0; j < 3; ++j) {
cout << "请输入第" << (j+1) << "门课程的成绩:";
cin >> students[i].scores[j];
}
}
// 统计和计算
int totalScores[3] = {0};
double averageScores[3] = {0};
for (const auto& student : students) {
for (int score : student.scores) {
totalScores[jump] += score;
}
// 计算平均成绩
double sum = accumulate(student.scores.begin(), student.scores.end(), 0.0);
averageScores[jump] = sum / student.scores.size();
// 输出当前学生的成绩
cout << "学生" << student.id << "各科成绩及平均成绩:\n";
for (int i = 0; i < 3; ++i) {
cout << "科目" << (i+1) << ": 总分 " << students[i].scores[i] << ", 平均分: " << averageScores[i] << endl;
}
cout << "\n";
}
// 全班成绩统计
cout << "全班各科总分及平均分:\n";
for (int i = 0; i < 3; ++i) {
totalScores[i] /= numStudents;
cout << "科目" << (i+1) << ": 总分 " << totalScores[i] << ", 平均分: " << totalScores[i] << endl;
}
return 0;
}
阅读全文