7-1 输出最高分学生信息

给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空
白字符的非空字符串)和成绩([0,100]区间内的整数),输出最高分的学生信息。

函数接口定义:

struct Student max(struct Student stud[],int n);
void print(struct Student stud);

输入样例:

在这里给出一组输入。例如:

5
00001 zhang 70
00002 wang 80
00003 qian 90
10001 li 100
21987 chen 60

输出样例:

在这里给出相应的输出。例如:

10001 li 100

写这篇题解的原因是,期末考试的时候不让用sort排序(c++),~_~,然后就只能用常规的方法去写,刚好巩固一下之前的知识,就是这么随意^_^

先说一下思路,就是普通的结构体排序,抓住他的排序规则(本题说的是按分数高低来排序),然后就用基础排序(选择排序,冒泡排序)大一上半期学的c语言知识点,然后没有了

#include"stdio.h"
struct Student
{
    char xuehao[60],name[20];
    int fen;
};
struct Student stud[500];
struct Student max(struct Student stud[],int n)
{
	struct Student t;
    for(int i=0;i<n-1;i++)
    {
    	for(int j=0;j<n-1-i;j++)
    	{
    		if(stud[j].fen<stud[j+1].fen)//本题的排序规则
    		{
    			t=stud[j];//记得交换的不是分数,而是那个“人”(学号,姓名,分数)的全部信息
    			stud[j]=stud[j+1];
    			stud[j+1]=t;
			}
		}   	
	}
	t=stud[0];//本题让输出的是分数最高那个人的全部信息,排完顺序了,最高就是stud[0];
	return t;
}
void print(struct Student stud)
{
	printf("%s %s %d",stud.xuehao,stud.name,stud.fen);
}
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
		scanf("%s%s%d",&stud[i].xuehao,&stud[i].name,&stud[i].fen);
	struct Student a;
	a=max(stud,n);
	print(a);
	return 0;
}

别的没啥注意得了,OK,goodbyeQwQ 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值