C语言用结构体排序(学号,姓名,成绩)
1那段代码也可以写成如下
struct Student{
....
....
}name
int paixu(const void *a,const void *b)
name aa=*(name*a);
name bb=*(name*b);
2那段代码也可以写成这
return aa->score > bb->score ? 1 : -1;//升序排序
------------------------------------------------
return aa->score > bb->score ? -1 : 1;//降序排序
1.“->”:是指针运算符,用于从结构体中提取数据。
如下的aa->score就是从Student中提取出score的值。
2.“ > ? :”:三目运算符
如下的aa中的score < bb中的score ? 1 : -1可以看成:如果aa中的score小于bb中的score就返回1,否则返回-1.
3.qsort函数:
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))base -- 指向要排序的数组的第一个元素的指针。 nitems -- 由 base 指向的数组中元素的个数。 size -- 数组中每个元素的大小,以字节为单位。 compar -- 用来比较两个元素的函数。
如下用了chucun——第一个元素的指针, 5,——数组中元素的个数, sizeof(chucun[0])——数组中每个元素的大小, paixu——比较函数
4.(const void *a,const void *b)
const:只可读的常量
void*:空类型(即可以是任何类型)
a:一个指针
5.struct Student* aa = (struct Student*)a;
在4中说过,a为空类型无法与同为空类型的b比较,所以我们进行数据转换(具体是转为Student类型),并将装换后的数值存在aa中。类似于 int b =(int)a;
#include<stdio.h>
#include<stdlib.h>struct Student {int xuehao;char name[20];float score;};1int paixu(const void* a, const void* b){struct Student* aa = (struct Student*)a;1struct Student* bb = (struct Student*)b;1return (aa->score < bb->score ? 1 : -1);2}int main(){struct Student chucun[5] = { {10101,"Zhang",78},{10103,"Wang",98.5},{10106,"Li",86},{10108,"Ling",73.5},{10110,"Fun",100}};qsort(chucun, 5, sizeof(chucun[0]), paixu);int i;for (i = 0; i < 5; i++){printf("%d %s %.2f\n", chucun[i].xuehao, chucun[i].name,chucun[i].score);}return 0;}
Ps:加个关注一起讨论问题!
C语言用结构体排序(学号,姓名,成绩)相关推荐
- C语言实现结构体输入学号姓名成绩并按照成绩高低排序输出
#include <stdio.h> struct student{char name[10];long member;int score; } stu[100],stutemp; //定 ...
- 【C语言】结构体排序
这里写目录标题 快速排序 结构体排序 模仿qsort函数实现冒泡排序 三级目录 快速排序 //快速排序 void qsort(void* base, //base中存放待排序数据中第一个对象地地址si ...
- C语言基础 结构体排序
任务描述 本关任务:有n个学生的信息(包括学号,姓名,成绩),要求按照成绩的高低顺序输出学生的信息. 相关知识 参考结构体第1关相关知识 编程要求 要求按照成绩的高低顺序输出学生的信息. 测试说明 平 ...
- c语言程序结构体排序,C语言结构体排序方法
#include "stdafx.h" #include #include #include using namespace std; struct student { strin ...
- c语言程序结构体排序,如何用C语言的结构体数组中的某一值排序?
[C] 纯文本查看 复制代码#include "stdio.h" #include "string.h" struct student { char name[ ...
- c语言咋样编程学号,C语言 用结构体类型数组编程实现输入5个学生的学号姓名平时成绩期中成绩和期末成绩然后输出每位...
满意答案 zhyx520325 推荐于 2020.12.09 采纳率:41% 等级:10 已帮助:1973人 #include #include //C语言 用结构体类型数组编程实现输入5个学生 ...
- python列表输出学生姓名学号链表_c语言!!!程序设计:建立一个学生信息链表,包括学号,姓名,成绩.(实现添加,删除,查询,排序,平均)...
展开全部 代码如下: /*用c语言链表编写一个学生信息系统程序,62616964757a686964616fe4b893e5b19e31333365656636要求输出学生的学号,姓名,性别, 学号, ...
- C语言中对结构体排序
在C语言中对结构体排序 用qsort()函数进行排序, qsort()里面要传入4个参数–qsort(数组名,数组长度,sizeof(),排序方法) 实验9-5 查找书籍 (20分) 给定n本书的名称 ...
- C语言 · 运用结构体的排序方法
AllSight C语言 · 运用结构体的排序方法 之前遇到排序只想着最原始的方法,诸如冒泡,选择,快速排序等等,刚刚跟大牛学会了结构体的方法来排序,这样的话以后再也不用怕成绩统计.名次排序之类的题目 ...
最新文章
- 设置了hover伪类中有cursor:hand但是没有效果
- java反射重要么_JAVA反射----这些知识你需要知道
- iis 404错误从定向完美方案
- script 标签到底该放在哪里
- php flush 逐行显示_PHP逐行输出(ob_flush与flush的组合)
- 【最短路径】 SPFA算法优化
- 用计算机组成原理+唐朔飞的,计算机组成原理(唐朔飞) 课件.ppt
- 不用下载Axure RP Extension for Chrome插件,即可看原型文件
- 在 CentOS 中部署 KMS 服务器(vlmcsd)
- win10如何强制删除文件
- 游戏视频怎么录制,游戏录制软件哪个好
- Code Smell 检测工具调研
- office 2010 在安装过程中出错
- 决策树--CART算法
- 自制的Arduino多级菜单类
- c语言怎样处理lrc文件格式,lrc文件的一般格式是什么_教你如何打开lrc文件 - 驱动管家...
- I2C中的10bit地址读写
- springboot基于安卓的移动数字图书馆的设计与实现毕业设计源码030911
- 第四届橙瓜网络文学奖20年十佳言情大神天下归元暂时排第三名
- 解决Intellij IDEA 一直在indexing....,导致idea很卡,无法操作
热门文章
- 查询oracle表中的字段名和字段类型
- 【java面试】多线程如果线程挂住了怎么办
- [有点意思]通天塔导游:各种编程语言的优缺点
- Android平台接入Html5产品的个人总结
- AVRmega16通过一个定时器实现多路IO口输出多路可调的PWM
- SQL创建视图时设置默认值
- [RHEL5企业级Linux服务攻略]--第4季 DNS服务全攻略
- vscode调试python变量窗口空白_vscode窗口崩溃解决(vscode终端一片空白)
- 搭稳Netty开发的地基,用漫画帮你分清同步异步阻塞非阻塞
- 流量红利消减,酷开系统技术驱动突出重围