#include <stdio.h>
#include <stdlib.h>
struct student
{
int score;
char *name;
};
struct student *chuShihua(int len)
{
int i;
struct student *p=(struct student *)malloc(len*sizeof(struct student)); //在堆上开辟空间,函数结束后不会释放。
for(i=0;i<len;i++)
{
printf("请输入第%d个学生的姓名:",i+1);
p->name=(char *)malloc(128);
scanf("%s",(p->name));
printf("请输入第%d个学生的成绩:",i+1);
scanf("%d",&(p->score));
p++;
}
return p-len; //指针返回
}
void daYin(struct student *p,int len)
{
int i;
for(i=0;i<len;i++)
{
printf("学生%s,成绩%d\n",p->name,p->score);
p++;
}
}
struct student *finMax(struct student *p,int len)
{
int i;
struct student *max;
max=p;
for(i=0;i<len;i++)
{
if(p->score > max->score)
{
max=p;
}
p++;
}
return max;
}
struct student *findMin(struct student *p,int len)
{
int i;
struct student *min;
min=p;
for(i=0;i<len;i++)
{
if(p->score < min->score)
{
min=p;
}
p++;
}
return min;
}
float average(struct student *p,int len)
{
int sum=0;
int i;
for(i=0;i<len;i++)
{
sum=sum+(p->score);
p++;
}
return (float)sum/len;
}
int main()
{
int n;
printf("请输入总人数:");
scanf("%d",&n);
printf("n=%d\n",n);
struct student *pstus=chuShihua(n);
struct student *max=NULL;
struct student *min=NULL;
daYin(pstus,n);
max=finMax(pstus,n);
min=findMin(pstus,n);
printf("最高分姓名:%s,成绩:%d\n",max->name,max->score);
printf("最低分姓名:%s,成绩:%d\n",min->name,min->score);
printf("平均分为:%f\n",average(pstus,n));
return 0;
}
学生成绩C(结构体函数指针综合)
最新推荐文章于 2023-06-18 16:31:21 发布