#include <iostream>
#include <cstring> // 使用 strlen() 和 strcmp()
using namespace std;
// 学生结构体
struct Student {
char id[20]; // 学号
char name[20]; // 姓名
int math_score; // 高数成绩
int english_score; // 英语成绩
};
// 输入学生信息
void input_student(Student* students, int n) {
int i, j;
for (i = 0; i < n; i++) {
cout << "请输入第" << i + 1 << "个学生的学号,姓名,高数成绩和英语成绩:" << endl;
cin >> students[i].id >> students[i].name >> students[i].math_score >> students[i].english_score;
// 判断输入合法性
if (strlen(students[i].id) != 10) {
cout << "学号长度不正确,请重新输入!" << endl;
i--;
continue;
}
for (j = 0; j < i; j++) {
if (strcmp(students[i].id,students[j].id) == 0) {
cout << "学号重复,请重新输入!" << endl;
i--;
break;
}
}
if (students[i].math_score < 0 || students[i].math_score > 100) {
cout << "高数成绩不合法,请重新输入!" << endl;
i--;
continue;
}
if (students[i].english_score < 0 || students[i].english_score > 100) {
cout << "英语成绩不合法,请重新输入!" << endl;
i--;
continue;
}
}
}
// 输出学生信息
void output_student(Student* students, int n) {
cout << "学号\t姓名\t高数成绩\t英语成绩" << endl;
for (int i = 0; i < n; i++) {
cout << students[i].id << "\t" << students[i].name << "\t"
<< students[i].math_score << "\t\t" << students[i].english_score << endl;
}
}
// 根据学号查询学生信息
void search_student(Student* students, int n) {
char search_id[20];
int flag = 0;
cout << "请输入要查询的学生学号:" << endl;
cin >> search_id;
for (int i = 0; i < n; i++) {
if (strcmp(students[i].id, search_id) == 0) {
cout << students[i].name << "的高数成绩为"
<< students[i].math_score << ",英语成绩为" << students[i].english_score << endl;
flag = 1;
break;
}
}
if (flag == 0) {
cout << "无此学生!" << endl;
}
}
int main() {
int n;
Student* students;
cout << "请输入学生个数:" << endl;
cin >> n;
students = new Student[n];
input_student(students, n);
output_student(students, n);
while (1) {
search_student(students, n);
cout << "输入0退出,任意键继续查询:" << endl;
int flag;
cin >> flag;
if (flag == 0) {
break;
}
}
delete[] students;
return 0;
}
该回答引用ChatGPT4与博主@晓码自在合作编写:
这里是C++实现该实验的思路:
具体代码如下:
cpp
#include <iostream>
using namespace std;
struct Student {
int id;
string name;
int mathScore;
int englishScore;
};
int main() {
cout << "请输入学生个数:";
int n;
cin >> n;
Student* students = new Student[n];
// 输入每个学生信息,存入students数组
for (int i = 0; i < n; i++) {
cout << "请输入学生" << i + 1 << "的信息:" << endl;
cin >> students[i].id >> students[i].name >> students[i].mathScore >> students[i].englishScore;
}
// 打印并统计成绩
...
// 查询成绩函数
void queryScore() {
while (true) {
int id;
cout << "请输入要查询的学号:";
cin >> id;
for (int i = 0; i < n; i++) {
if (students[i].id == id) {
cout << "学生" << id << "的成绩为:" << endl;
cout << "高数:" << students[i].mathScore << endl;
cout << "英语:" << students[i].englishScore << endl;
return;
}
}
cout << "没有找到该学号,请重新输入!" << endl;
}
}
queryScore();
delete [] students;
}