用结构体指针变量作函数参数编程,计算一组学生的平均成绩和不及格人数
时间: 2023-06-09 07:06:52 浏览: 241
用指向结构体的指针作函数参数-指针编程与应用
好的,我可以回答这个问题。
可以定义一个包含学生信息的结构体,包括姓名、学号和成绩等信息。然后定义一个结构体指针变量,指向存储学生信息的结构体数组。
在计算平均成绩和不及格人数的函数中,可以将结构体指针变量作为参数传入函数中。在函数内部,通过遍历结构体数组,累加所有学生的成绩,同时计算不及格人数。
最后根据累加的成绩和学生人数,计算平均成绩,并将不及格人数返回给调用函数。
以下是一个示例代码:
```
#include <stdio.h>
#define MAX_STUDENT_NUM 100
struct student {
char name[20];
int id;
float score;
};
int calc_avg_score_and_fail_num(struct student* students, int num_students, float* avg_score) {
int i, fail_num = 0;
float total_score = 0.0;
for (i = 0; i < num_students; i++) {
total_score += students[i].score;
if (students[i].score < 60.0) {
fail_num++;
}
}
*avg_score = total_score / num_students;
return fail_num;
}
int main() {
struct student students[MAX_STUDENT_NUM];
int i, num_students;
float avg_score;
printf("Input the number of students:\n");
scanf("%d", &num_students);
printf("Input students' information:\n");
for (i = 0; i < num_students; i++) {
printf("No.%d student: name(id) score\n", i + 1);
scanf("%s%d%f", students[i].name, &students[i].id, &students[i].score);
}
int fail_num = calc_avg_score_and_fail_num(students, num_students, &avg_score);
printf("Average score: %.2f\n", avg_score);
printf("Number of students who fail: %d\n", fail_num);
return 0;
}
```
阅读全文