关于qsort与结构体的结合应用

31 篇文章 0 订阅
10 篇文章 0 订阅

qsort是c中的排序函数,虽然要自己写比较函数,但是也还挺简单的

有一点需要注意的是,结构体的排序是可以直接排一个数据导致结构体排序的,所以大大减少了工作量

有些编译器对这样的指针结构体代码不是很支持,用c++编译的话可以减少出错的可能

#include<stdio.h>
#include<stdlib.h>

struct stu{
	char name[10];
	int sum;
};//定义结构体类型

int comp(const void *p1,const void *p2){
	struct stu *c = (struct stu*)p1;
	struct stu *d = (struct stu*)p2;
	//相当于把结构体传了过去,再取里面的参数
	//比较时用结构体声明新的指针变量
	return c->sum - d->sum;//这是从大到小,从小到大是d->sum - return c->sum
	//交换
}

int main(){
	int b;
	while(~scanf("%d",&b)){
		struct stu a[b+1];
		int summ = 0;
		for(int i = 0;i < b;i++){
			scanf("%s %d",a[i].name,&a[i].sum);
		}
		qsort(a,b,sizeof(stu),comp);//第一位是待排序的数组,第二位是排序数,第三位是每个排序单位的大小,第四个是规则
		for(int i = 0;i < b;i++){
			printf("%s %d\n",a[i].name,a[i].sum);
		}
	}
	
	return 0;
}

输入:
3
Xiaoming 88
Dayu 79
Qingqing 99

输出:
Qingqing 99
Xiaoming 88
Dayu 79

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值