用C++第1步.根据输入的学生个数,申请内存空间,创建动态数组。该数组可存储学生的学号、姓名及两门课程的成绩。第2步. 编写一个循环,可依次获得学生的学号、两门课程的成绩。注意避免下标越界。在获得数据时,录入时,已经录入的学号不允许再次录入。成绩范围在0-100分,如超出,则为无效。避免重复录入,保证成绩合法性。第3步. 将成绩以列表的形式输出成绩列表示例学号 姓名 高数成绩 英语成绩 ---------------------------------------------------- 20140823 张三 98 87 20140824 李四 78 99 … -----------------------------------------------,统计并打印出每门课程的最高成绩、最低成绩、平均成绩。第4步. 编写一个死循环,提供学生成绩查询功能。根据输入的学号,查询并显示出其两门课程的成绩。如果学号输入有误,则提醒重新输入。第5步. 退出前,释放申请的内存空间。
时间: 2023-08-15 13:13:47 浏览: 62
好的,下面是完整的代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
struct Student {
int id;
string name;
int math;
int english;
};
int main() {
int n;
cout << "请输入学生个数:";
cin >> n;
Student* arr = new Student[n];
for (int i = 0; i < n; i++) {
cout << "请输入第" << i + 1 << "个学生的学号:";
cin >> arr[i].id;
// 检查学号是否已经录入
bool flag = false;
for (int j = 0; j < i; j++) {
if (arr[i].id == arr[j].id) {
cout << "该学号已经录入,请重新输入!" << endl;
i--;
flag = true;
break;
}
}
if (flag) {
continue;
}
cout << "请输入该学生的姓名:";
cin >> arr[i].name;
// 获得两门课程的成绩
cout << "请输入该学生的高数成绩:";
cin >> arr[i].math;
// 检查成绩是否合法
if (arr[i].math < 0 || arr[i].math > 100) {
cout << "高数成绩无效,请重新输入!" << endl;
i--;
continue;
}
cout << "请输入该学生的英语成绩:";
cin >> arr[i].english;
// 检查成绩是否合法
if (arr[i].english < 0 || arr[i].english > 100) {
cout << "英语成绩无效,请重新输入!" << endl;
i--;
continue;
}
}
// 输出成绩列表
cout << "学号\t姓名\t高数成绩\t英语成绩" << endl;
cout << "--------------------------------------" << endl;
for (int i = 0; i < n; i++) {
cout << arr[i].id << "\t" << arr[i].name << "\t" << arr[i].math << "\t\t" << arr[i].english << endl;
}
// 统计每门课程的最高、最低、平均成绩
int mathMax = -1, mathMin = 101, mathSum = 0;
int engMax = -1, engMin = 101, engSum = 0;
for (int i = 0; i < n; i++) {
// 统计高数成绩
if (arr[i].math > mathMax) {
mathMax = arr[i].math;
}
if (arr[i].math < mathMin) {
mathMin = arr[i].math;
}
mathSum += arr[i].math;
// 统计英语成绩
if (arr[i].english > engMax) {
engMax = arr[i].english;
}
if (arr[i].english < engMin) {
engMin = arr[i].english;
}
engSum += arr[i].english;
}
cout << "高数成绩最高分:" << mathMax << endl;
cout << "高数成绩最低分:" << mathMin << endl;
cout << "高数成绩平均分:" << mathSum / n << endl;
cout << "英语成绩最高分:" << engMax << endl;
cout << "英语成绩最低分:" << engMin << endl;
cout << "英语成绩平均分:" << engSum / n << endl;
while (true) {
int id;
cout << "请输入要查询的学生学号(输入0退出):";
cin >> id;
if (id == 0) {
break;
}
bool flag = false;
for (int i = 0; i < n; i++) {
if (id == arr[i].id) {
cout << "该学生的高数成绩为:" << arr[i].math << endl;
cout << "该学生的英语成绩为:" << arr[i].english << endl;
flag = true;
break;
}
}
if (!flag) {
cout << "未找到学号为" << id << "的学生,请重新输入!" << endl;
}
}
delete[] arr;
return 0;
}
```
希望能对你有所帮助!
阅读全文