某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。 例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:78.875。 注意:部分源程序存在考生文件夹下的文件prog82.c中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include "stdio.h" #define N 8 typedef struct { char num[10]; double s[N]; double ave; }STREC; void fun(STREC *p) { } main() { STREC s={"GA005",85.5,76,69.5,85,91,72,64.5,87.5}; int i; fun(&s); printf("ave=%.3f\n",s.ave); }
时间: 2024-01-30 11:02:07 浏览: 124
解题思路: 本题要求我们编写一个函数fun,用于求出某学生的平均分并将其保存在记录的ave成员中。因此,需要定义一个结构体类型,包含学号、8门课程成绩和平均分三个成员。由于主函数中已经给出了学号和8门课程成绩,因此只需要在函数fun中计算平均分即可。实现方法如下:
```c
#include <stdio.h>
struct student{
int id; // 学号
float score[8]; // 8门课程成绩
float ave; // 平均分
};
void fun(struct student *s) // 自定义形参为指向结构体变量的指针
{
float sum = 0;
for(int i = 0; i < 8; i ++)
{
sum += s -> score[i]; // 累加8门课程成绩
}
s -> ave = sum / 8; // 计算平均分并保存到ave成员中
}
int main()
{
struct student stu = {1001, {85.5,76,69.5,85,91,72,64.5,87.5}}; // 定义一个学生结构体变量,并初始化学号和各门课程成绩
fun(&stu); // 调用fun函数,求出该学生的平均分并将其保存在记录的ave成员中
printf("学号:%d,平均分:%.3f\n", stu.id, stu.ave); // 输出学号和平均分
return 0;
}
```
输出结果为:
学号:1001,平均分:78.875
阅读全文