一个班有3个学生,各学4门课,编写2个函数 average和search分别计算总平均分数和输出给定某个学生的各门成绩。要求使用指针做函数参数。
时间: 2024-12-13 20:19:57 浏览: 2
在一个班级的场景中,我们可以使用结构体来表示每个学生及其对应的课程分数,然后通过指针传递这个数据结构。这里是一个简单的例子,假设我们有一个名为`Student`的结构体:
```c++
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct {
char name[50];
int scores[4]; // 学生的四门课程分数
} Student;
// 计算所有学生的平均分
double average(Student* students, int numStudents) {
double total = 0;
for (int i = 0; i < numStudents; ++i) {
for (int j = 0; j < 4; ++j) {
total += students[i].scores[j];
}
}
return total / (numStudents * 4);
}
// 搜索并打印指定学生的所有成绩
void search(Student* student, const char* name) {
for (int i = 0; i < 4; ++i) {
printf("%s 的第 %d 门课分数: %d\n", name, i+1, student->scores[i]);
}
}
int main() {
// 创建3个学生的数据
Student students[3] = {
{"小明", {85, 90, 78, 92}},
{"小红", {92, 88, 95, 86}},
{"小刚", {80, 83, 87, 90}}
};
// 计算平均分
double avg = average(students, sizeof(students) / sizeof(students[0]));
printf("全班平均分: %.2f\n", avg);
// 搜索并打印小明的成绩
search(&students[0], "小明");
return 0;
}
```
在这个示例中,`average`函数接受一个指向学生数组的指针和学生数量,用于遍历整个数组计算平均分。而`search`函数则接收一个指向特定学生的指针和名字,查找并显示该学生各门课程的成绩。
阅读全文