/*用结构体变量做参数函数*/
#include<stdio.h>
struct student
{
int xuehao;
char name[30];
float fen1;
float fen2;
}xuesheng[5];//第一步,定义五个结构小组。
int main()
{
struct student max(struct student a[]);//第五步调用函数。
struct student xueba;//第六步,定义平均分最高那一组的组名。
int i;//这里开始到输入信息scanf,作为第二步。
printf("请输入学生信息:\n");
for(i=0;i<=4;i++)
{
scanf("%d %s %f %f",&xuesheng[i].xuehao ,xuesheng[i].name ,&xuesheng[i].fen1 ,&xuesheng[i].fen2 );
}
xueba=max(xuesheng);//第七步,把平均分最高的那一组学生的信息转到xueba 这一组来
printf("请输出平均分最高的学生的信息:\n");
printf("%d %s %.2f %.2f\n",xueba.xuehao ,xueba.name ,xueba.fen1 ,xueba.fen2);//第八步,输出,xueba 组的信息。
return 0;
}
struct student max(struct student a[])//第三步,结构体变量来做函数。 函数型是结构体型,模板大概如此,struct student 函数名(struct student 一个数组名[]) .
{
float pingjunfen[5];//第四部函数功能,求平均分,且返回平均分最大的那一组的组号
int i,zuigao;
for(i=0;i<=4;i++)
pingjunfen[i]=(a[i].fen1+a[i].fen2)/2.0;
for(zuigao=0,i=1;i<=4;i++)
{
if(pingjunfen[zuigao]<pingjunfen[i])
zuigao=i;
}
return(a[zuigao]);//返回平均分最高那一组。
}
结果如下: