结构体指针输入学生姓名和成绩

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
{
    
    
	char *name;
	int score;
};
int main()
{
    
    
	int i;
	int len;
	printf("请输入学生个数:\n");
	scanf("%d",&len);
//	struct student a[3];
//	struct student *p;
	struct student *p=(struct student *)malloc(len*sizeof(struct student));
//	p=a;
	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++;
	}
	p=p-len;//p=a
	for(i=0;i<len;i++)
	{
    
    
		printf("%s的分数是%d\n",p->name,p->score);
		p++;	
	}
	return 0;
}

在这里插入图片描述

新增添功能,求出分数最大最小的同学

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
{
    
    
	char *name;
	int score;
};
int main()
{
    
    
	int i;
	int len =0;
	printf("请输入学生个数:");
	scanf("%d",&len);
	struct student a[len];
	struct student *p;
	p=a;
	
	struct student maxScore;
	struct student minScore;
	maxScore=a[0];
	minScore=a[0];//假设最大最小值都是第一个学生 
	
	for(i=0;i<len;i++)
	{
    
    
		printf("请输入第%d个学生的姓名:",i+1);
		p->name=(char *)malloc(sizeof(a[0])*len);
		scanf("%s",p->name);
		printf("请输入该学生的分数:");
		scanf("%d",&(p->score));
		p++; 
	}
	p=p-len;//上面得到循环指针指向最后,要返回开始 
	for(i=0;i<len;i++)
	{
    
    
		printf("%s的分数为:%d\n",p->name,p->score);
		p++;
	}

	for(i=0;i<len;i++)
	{
    
    
		if(a[i].score>maxScore.score)
		{
    
    
			maxScore=a[i];
		}
		
	}
	printf("最高:%s %d\n",maxScore.name,maxScore.score);
	for(i=0;i<len;i++)
	{
    
    
		if(a[i].score<minScore.score)
		{
    
    
			minScore=a[i];
		}
	}
	printf("最低:%s %d\n",minScore.name,minScore.score);
	return 0;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43482790/article/details/114647176