用指针编程实现: 某小学某班级共有30名学生,共有5门课程,分别是英语、语文、数学、历史和音乐。请定义结构体存储学生的姓名、性别、学号和5门课程的期末考试成绩。然后根据学号查找某学生,并将其5门课程成绩输入,假设成绩分别是86分、74分、92分、77分、82分。
时间: 2024-09-08 19:02:18 浏览: 53
为了实现这个需求,我们可以定义一个名为`Student`的结构体,包含姓名、性别、学号以及一个动态数组来存储5门课程的成绩。以下是使用C++指针编程的示例:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 结构体定义
struct Student {
string name;
char gender;
int id;
int scores[5]; // 一个用于存储5门课成绩的数组
};
int main() {
// 定义一个班级数组,每30个元素代表一个学生
Student class_students[30];
Student* student_ptr = class_students; // 指向第一个学生的指针
// 假设已知某个学生的学号
const int target_id = 5; // 示例学号,替换为你需要查询的实际学号
// 查找指定学生并设置成绩
for (int i = 0; i < 30 && i != target_id; ++i, ++student_ptr) {
cout << "请输入学生" << (i+1) << "'s信息(如果跳过请输入-1):" << endl;
cout << "姓名: ";
getline(cin, student_ptr->name);
cout << "性别(男/M,女/F): ";
cin >> student_ptr->gender;
cin >> student_ptr->id;
for (int j = 0; j < 5; ++j) {
cout << "第" << (j+1) << "门课程的成绩: ";
cin >> student_ptr->scores[j];
}
cin.ignore(); // 清除输入缓冲区
cout << endl;
}
// 查找指定学生并显示其成绩
if (target_id >= 0) {
Student* target_student = &class_students[target_id];
cout << "学生(" << target_student->id << ") 的成绩如下:" << endl;
for (int i = 0; i < 5; ++i) {
cout << "第" << (i+1) << "门课程: " << target_student->scores[i] << endl;
}
} else {
cout << "未找到目标学生的信息。" << endl;
}
return 0;
}
```
阅读全文