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

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

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

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

#include
#include

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

你可能感兴趣的:(整理记录,C,C++,排序,结构体)