结构体加函数加指针输入学生姓名分数并求最大最小值

#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
今日推荐