在C语言中对结构体排序
用qsort()函数进行排序,
qsort()里面要传入4个参数–qsort(数组名,数组长度,sizeof(),排序方法)

实验9-5 查找书籍 (20分)

给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。
输入格式:
输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。
输出格式:
在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。
输入样例:
3
Programming in C
21.5
Programming in VB
18.5
Programming in Delphi
25.0

输出样例:
25.00, Programming in Delphi
18.50, Programming in VB

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
struct Book
{double price;char name[31];
}book[11];
int cmp(const void*a,const void*b)
{struct Book aa=*(struct Book*)a;struct Book bb=*(struct Book*)b;return aa.price<bb.price;
}
int main()
{int n;scanf("%d",&n);for(int i=0;i<n;i++){getchar();scanf("%[^\n]",book[i].name);scanf("%lf",&book[i].price);}qsort(book,n,sizeof(book[0]),cmp);printf("%.2f, %s\n",book[0].price,book[0].name);printf("%.2f, %s\n",book[n-1].price,book[n-1].name);system("pause");return 0;
}

例二

实验9-8 通讯录排序 (20分)
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
输入格式:
输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。
输出格式:
按照年龄从大到小输出朋友的信息,格式同输出。
输入样例:
3
zhang 19850403 13912345678
wang 19821020 +86-0571-88018448
qian 19840619 13609876543

输出样例:
wang 19821020 +86-0571-88018448
qian 19840619 13609876543
zhang 19850403 13912345678

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Student
{char tel[20];char name[10];int birth;
}stu[10];
int cmp(const void* a,const void* b)
{struct Student *aa=(struct Student*)a;struct Student *bb=(struct Student*)b;return (aa->birth)>(bb->birth);
}
int main()
{int n;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%s %d %s",stu[i].name,&stu[i].birth,stu[i].tel);}qsort(stu,n,sizeof(stu[0]),cmp);for(int i=0;i<n;i++)printf("%s %d %s\n",stu[i].name,stu[i].birth,stu[i].tel);system("pause");return 0;
}

C语言中对结构体排序相关推荐

  1. C语言中的结构体,结构体中数组初始化与赋值

    最近写c语言中的结构体遇到了些问题,从网上找了些资料如下: 结构体是连续存储的,但由于结构体中成员类型各异,所以会存在内存对齐问题,也就是内存里面会有空档,具体的对齐方式这里 暂不讨论: 1.结构体的 ...

  2. Linux结构体变量报错,C语言中的结构体

    用户自己建立自己的结构体类型 1.  定义和使用结构体变量 (1).结构体的定义 C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体. (2).声明一个结构体类型的一般形式为: ...

  3. c语言中定义结构体指针的作用,C语言结构体定义,使用及指针(1)

    前言 C语言中的结构体作为一大难点,并且对于需要学习数据结构的同学来说,这个结构是每次上课都会遇到的,所以,我们只有更深层次的理解结构体的知识,才能更好的掌握数据结构 结构体用处 结构体到底有什么用? ...

  4. C语言中的结构体定义和使用例子

    C语言中的结构体定义和使用例子 一.结构体定义的三种方式 结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对 问题事先自行定义,所以结构体类型变量的定义形式就增加了灵活性,共 ...

  5. 关于C语言中的结构体所占的字节数 sizeof(struct)

    C语言中的结构体所占的字节数 ,用sizeof求一个结构体的大小 C语言中用sizeof求结构体所占字节数的详细方法. 一.非嵌套结构体 struct one{char a; // 1(char所占字 ...

  6. c语言中的结构体定义和常见用法

    1.结构体简述和概念 结构体是C语言中一种重要的数据类型,该数据类型由一组称为成员(或称为域,或称为元素)的不同数据组成,其中每个成员可以具有不同的类型.结构体通常用来表示类型不同但是又相关的若干数据 ...

  7. step2 . day5 C语言中的结构体和枚举

    最近几天交叉的学习C和Linux,知识梳理的不是很仔细,有很多还没有搞明白的问题,所有耽误了几天更新笔记,也是在细嚼慢咽中,做了一个规划表,现阶段先把C后面的知识学好,然后再梳理Linux系统相关知识 ...

  8. C语言中如何计算结构体的字节大小

    结构体内存对齐 在计算结构体所占字节的大小时,不要直观地累加结构体内成员的字节大小,实际结构体存放在内存中是有一定的规则的,这里涉及的规则就是内存对齐原则. 声明一个结构体stu struct stu ...

  9. 成员变量隐藏c语言,C语言中隐藏结构体的细节

    我们都知道,在C语言中,结构体中的字段都是可以访问的.或者说,在C++ 中,类和结构体的主要区别就是类中成员变量默认为private,而结构体中默认为public.结构体的这一个特性,导致结构体中封装 ...

最新文章

  1. 连接网络计算机后用户名更改不,电脑修改ip后无法上网
  2. 2021年两院增选149名院士:最小45岁,浙大5人入选
  3. 【git学习四】git基础之git为项目打标签
  4. git cherry-pick 使用指南
  5. 超越Linux!华为鸿蒙明年将成“第五大操作系统”,网友:何时超过iOS?
  6. tty,串口,控制台与驱动程序
  7. 实例55:python
  8. ecshop 函数列表大全
  9. java游戏暂停_小白写了个java的小游戏 想加个暂停的功能 无从下手 求大佬们帮...
  10. oracle对象不在回收站中,Oracle PURGE子句清除回收站中的对象
  11. matlab字符串元胞数组,MATLAB字符串数组元胞数组和构架数组
  12. Codeforces Round #FF(255) DIV2
  13. [转]C#中的多线程进度条使用
  14. python中的树数据结构
  15. vector初始化与清空
  16. 电力职称计算机水平考试题库 2019,2019职称计算机考试Excel练习及答案汇总1
  17. Windows桌面文件夹删除被提示“找不到该项目”——顽固目录、文件的删除
  18. 三.卡尔曼滤波器(EKF)开发实践之三: 基于三个传感器的海拔高度数据融合
  19. c#语言中怎么样把文本转换成数字,如何将字符串转换为数字 - C# 编程指南 | Microsoft Docs...
  20. 服务器简介(一):服务器定义、服务器特点、服务器分类、服务器软件

热门文章

  1. 实验室规划设计方案SICOLAB
  2. 旅行的意义:写给不爱旅行的你
  3. flash air快速构建android demo测试程序
  4. 仿UC头条首页-html+css+纯JS
  5. 应用程序提示0xc0000142无法正常启动怎么办
  6. WordPress自适应多功能图片主题CX-UDY
  7. 分享 - 微信域名检测API接口
  8. CSS基础学习教程(一)
  9. java springboot口腔牙齿保健管理系统Vue前后端分离
  10. vb.net listview 删除选定行_【专业基础】一个工程师必须了解的测量常识,你不知道怎么行...