用C语言中的指针编程实现: 某班级共有30名学生,共有5门课程,分别是英语、语文、数学、历史和音乐。请定义结构体存储学生的姓名、性别、学号和5门课程的期末考试成绩。然后输入学号查找某学生,并将其5门课程成绩输入,假设成绩分别是86分、74分、92分、77分、82分。
时间: 2024-09-08 20:02:15 浏览: 84
在C语言中,我们可以使用结构体(struct)来表示学生的信息以及数组或动态内存分配来存储所有学生的数据。首先,我们定义一个结构体`Student`:
```c
#include <stdio.h>
#include <string.h>
// 定义结构体,包含学生信息和成绩
typedef struct {
char name[50]; // 学生姓名
char gender[10]; // 性别
int student_id; // 学号
int scores[5]; // 五门课程的成绩
} Student;
void input_student_score(Student* student, int id) {
// 输入学号和成绩
printf("请输入学号%d的学生的成绩:\n", id);
scanf("%s %s %d", student->name, student->gender, &student->student_id);
for (int i = 0; i < 5; i++) {
scanf("%d", &student->scores[i]);
}
}
int main() {
// 初始化学生数组,用于存放30名学生的信息
Student students[30];
int num_students = 30;
// 遍历所有学生,输入成绩
for (int i = 0; i < num_students; i++) {
if (i == 0 || i % 10 != 0) { // 只在特定位置输入成绩示例
continue;
}
input_student_score(&students[i], i + 1); // 使用指针访问结构体元素
}
return 0;
}
```
在这个例子中,我们创建了一个`Student`结构体,其中包含姓名、性别、学号和五个成绩的字段。`input_student_score`函数用于接受用户输入并填充指定学生的成绩。在`main`函数中,我们创建了大小为30的`students`数组,遍历数组并在每10个学生的位置插入成绩(这里仅为演示,实际应用可以根据需要修改输入频率)。
如果你想要查找特定学生的成绩,你可以添加一个搜索功能,如根据学号查找对应的学生,然后打印其成绩。下面是这部分的简略代码:
```c
void search_student(int id, const Student* students, int num_students) {
for (int i = 0; i < num_students; i++) {
if (students[i].student_id == id) {
printf("学号%d的学生成绩:\n", id);
for (int j = 0; j < 5; j++) {
printf("第%d门课成绩: %d\n", j+1, students[i].scores[j]);
}
break;
}
}
}
// 在主函数里调用这个函数
search_student(1, students, num_students);
```
阅读全文