#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
{
char *name;
int score;
};
struct student* inint(int len)
{
int i;
struct student *p=(struct student *)malloc(sizeof(struct student)*len);
for(i=0;i<len;i++)
{
printf("请输入第%d个学生的姓名:",i+1);
p->name=(char *)malloc(128);//在堆上开辟空间,函数调用不会释放,可以调用
scanf("%s",p->name);
printf("请输入该学生的分数:");
scanf("%d",&(p->score));
p++;
}
return p-len;
}
void printMes(struct student *p,int len)
{
int i=0;
for(i=0;i<len;i++)
{
printf("%s的分数为:%d\n",p->name,p->score);
p++;
}
}
struct student* fmax(struct student* p,int len)
{
struct student *max;
max=p;
int i;
for(i=0;i<len;i++)
{
if(max->score<p->score)
{
max=p;
}
p++;
}
return max;
}
struct student* fmin(struct student* p,int len)
{
struct student *min;
min=p;
int i;
for(i=0;i<len;i++)
{
if(min->score>p->score)
{
min=p;
}
p++;
}
return min;
}
float avera(struct student* p,int len)
{
int i;
int total=0;
for(i=0;i<len;i++)
{
total+=p->score;
p++;
}
printf("total=%d\n",total);
return (float)total/len;
}
int findSomeOneForName(struct student *p,int len,char* name)
{
int i;
for(i=0;i<len;i++)
{
if(strcmp(p->name,name)==0)
{
return 1;
}
}
return 0;
}
int main()
{
int len =0;
float aver;
printf("请输入学生个数:");
scanf("%d",&len);
struct student *min=NULL;
struct student *max=NULL;
struct student *pa=inint(len);
printMes(pa,len);
max=fmax(pa,len);
min=fmin(pa,len);
aver=avera(pa,len);
printf("max:%s %d\nmin:%s: %d\n",max->name,max->score,min->name,min->score);
printf("average=%f\n",aver);
if(findSomeOneForName(pa,len,"aa")==1)
{
printf("恭喜,找到了!\n");
}
else
{
printf("没找到!\n");
}
return 0;
}
结构体加函数加指针输入学生姓名分数并求最大最小值
猜你喜欢
转载自blog.csdn.net/qq_43482790/article/details/114672564
今日推荐
周排行