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语言 · 运用结构体的排序方法 之前遇到排序只想着最原始的方法,诸如冒泡,选择,快速排序等等,刚刚跟大牛学会了结构体的方法来排序,这样的话以后再也不用怕成绩统计.名次排序之类的题目 ...
最新文章
- caffe 测试时间报错 Aborted at unix time
- uva 11134——Fabled Rooks
- 微信公众平台消息接口开发(27)彩票查询
- 李宏毅机器学习——集成学习
- Spoj REPEATS 后缀自动机+set
- JWT学习(二):Json Web Token JWT的Java使用 (JJWT)
- 微分方程数值计算matlab实现,微分方程数值解及Matlab实现
- 小米平板2刷哪个系统更流畅_教程:小米平板2轻松刷Win10
- cuda10.0及其驱动纯净卸载(笔记)
- 导频矢量推导与离散信号傅里叶变换
- 关于苹果开发者账号(appleid)的问题修复
- Captin for mac(大小写切换悬浮窗提示)
- xp的ie显示无服务器,WinXP系统IE无法打开站点怎么办?
- 给想立志入行网络或已经初入行的朋友的建议
- Stairway to T-SQL: Beyond The Basics Level 4: Using Views to Simplify Your Query - SQLServerCentral
- 简谈Oracle体系结构
- Teams下载安装教程
- 大数据与编程语言关系
- VSCode系列之IDEA快捷键
- 高等数学竞赛题解析教程P26 - 例1.52(浙江2008竞赛题)
热门文章
- 用了云桌面后,才发现远程办公是这么一回事儿
- 制作出与众不同的报表
- ib_logfile1和ib_logfile0文件丢失或被误删之后恢复数据
- Java job interview:算法的经典与数据结构的程序图论
- 三菱QCPU模块扫描执行程序的处理步骤
- 最新!2022软科世界大学学术排名发布:中国内地163所大学上榜!
- nashorn js 调用 java_Java8 Nashorn实现Java调用javascript代码
- c 设置语言中文,教大家ccleaner设置中文界面的流程
- 【计算机网络】端口详解【概念、作用、分类、常见端口】
- 大型SAR卫星星座设计——Python STK联合仿真