从键盘输入3位学生4门课程的成绩,输入学号,即可查询到自己各门课程的成绩。
时间: 2024-03-16 14:47:07 浏览: 17
好的,可以使用结构体和动态内存分配实现。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define STUDENTS_NUM 3
#define SUBJECTS_NUM 4
typedef struct {
int id;
int scores[SUBJECTS_NUM];
} Student;
void input_scores(Student *students);
void query_score(Student *students, int id);
int main() {
Student *students = malloc(STUDENTS_NUM * sizeof(Student));
int id;
printf("请输入3位学生4门课程的成绩:\n");
input_scores(students);
printf("请输入学号:");
scanf("%d", &id);
query_score(students, id);
free(students);
return 0;
}
void input_scores(Student *students) {
for (int i = 0; i < STUDENTS_NUM; i++) {
printf("请输入第%d个学生的学号和成绩:\n", i + 1);
scanf("%d", &(students + i)->id);
for (int j = 0; j < SUBJECTS_NUM; j++) {
scanf("%d", &(students + i)->scores[j]);
}
}
}
void query_score(Student *students, int id) {
for (int i = 0; i < STUDENTS_NUM; i++) {
if ((students + i)->id == id) {
printf("学号:%d\n", id);
printf("语文:%d,数学:%d,英语:%d,物理:%d\n",
(students + i)->scores[0],
(students + i)->scores[1],
(students + i)->scores[2],
(students + i)->scores[3]);
return;
}
}
printf("该学号不存在!\n");
}
```
这里定义了一个结构体`Student`,包含学生的学号和成绩数组。在`input_scores`函数中,使用指针传递结构体数组,使用指针+箭头的方式访问结构体成员。在`query_score`函数中,同样使用指针传递结构体数组,并根据学号查找对应的学生,再访问学生的成绩。需要注意的是,在程序结束时需要释放动态分配的内存。