键盘输入n个学生的学号、英语期中成绩和期末成绩,计算并输出这n个学生的 成绩表,包括学生的学号、英语期中成绩和期末成绩及平均成绩(要求利用指向结构体类型 的指针实现)。
时间: 2024-09-21 13:10:47 浏览: 109
为了实现这个功能,你可以创建一个结构体表示学生的信息,然后使用指针数组来存储所有学生的数据。这里是一个简单的步骤描述:
首先,定义一个结构体 `Student`,包含学号、英语期中成绩和期末成绩。
```c
typedef struct {
int student_id;
float midterm_score;
float final_score;
} Student;
```
接着,编写一个函数来获取用户输入,并将数据添加到指针数组中。
```c
void input_students(Student* students, int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、英语期中成绩和期末成绩:\n", i + 1);
scanf("%d%f%f", &students[i].student_id, &students[i].midterm_score, &students[i].final_score);
}
}
```
接下来,计算每个学生的平均成绩并输出成绩表。
```c
void calculate_average(Student* students, int n) {
for (int i = 0; i < n; i++) {
float average = (students[i].midterm_score + students[i].final_score) / 2;
printf("学号:%d, 期中成绩:%f, 期末成绩:%f, 平均成绩:%f\n",
students[i].student_id, students[i].midterm_score, students[i].final_score, average);
}
}
```
最后,在主程序中初始化指针数组并调用上述函数。
```c
int main() {
const int num_students = 5; // 或者根据实际情况让用户输入
Student students[num_students];
input_students(students, num_students);
calculate_average(students, num_students);
return 0;
}
```
阅读全文