11 复杂数据类型及排序

更新时间:2023-05-24 19:31:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

11 复杂数据类型及排序

第十一章

复杂数据类型及排序

Version 3.0

11 复杂数据类型及排序

回顾 上一节课主要讲解了以下内容: 上一节课主要讲解了以下内容:– – – – – – 字符串变量和常量 字符串指针 执行字符串的输入/输出操作 各种字符串函数 如何将数组作为参数传递给函数 如何将字符串用作函数参数

11 复杂数据类型及排序

目标 2-1 3

解释结构体及它们的使用 定义结构体 声明结构体变量 解释如何访问结构体元素 解释如何初始化结构体 解释结构体中使用的赋值语句 解释如何将结构体作为参数传递给函数 使用结构体数组 解释结构体数组的初始化

11 复杂数据类型及排序

目标 2- 2 解释结构体指针 解释如何将结构体指针作为参数传递给函数 解释 typedef 关键字 解释如何使用插入排序法和冒泡排序法对数 组进行排序

11 复杂数据类型及排序

结构体 结构体由许多组织在一起的数据项组成,这 结构体由许多组织在一起的数据项组成, 些数据项不需要属于同一类型 结构体可以容纳需要的任意多数据项1 变量 I I L L U S I O N B A C H 1 L L U 作者 版次 S I O N 数组

11 复杂数据类型及排序

定义结构体 结构体定义形成了创建结构体变量的模板 结构体中的变量称为结构体元素或结构体成 员 示例: 示例:struct cat { char bk_name [25]; char author [20]; int edn; float price; };6

11 复杂数据类型及排序

声明结构体变量 一旦定义了结构体,就可以声明一个或多个 一旦定义了结构体, 该类型的变量 示例:struct cat books1; 示例: 这条语句将会预留足够的内存来存放该结构 体中的所有项struct cat { char bk_name[25]; char author[20]; int edn; float price; } books1, books2; struct cat books1, books2; 或 struct cat books1; struct cat books2;

11 复杂数据类型及排序

访问结构体元素 结构体元素通过使用点运算符(.)来引用, 结构体元素通过使用点运算符( )来引用, 这个运算符也称为成员运算符 语法: 语法: structure_name.element_name 为结构体名称, 其中 structure_name 为结构体名称, element_name为元素名称。 为元素名称。 为元素名称 示例: 示例: scanf("%s", books1.bk_name);8

11 复杂数据类型及排序

初始化结构体 与变量和数组一样,结构体变量也可以在声明时 与变量和数组一样, 初始化 struct employee { int no; char name [20]; } employee 类型的变量 emp1 和 emp2 可以按照下面 的方式进行声明和初始化: 的方式进行声明和初始化: struct employee emp1 = {346, "Abraham"}; struct employee emp2 = {347, "John"};9

11 复杂数据类型及排序

结构体中使用的赋值语句2结构体中使用的赋值语句 1 可以使用一条简单的赋值语句将一个结构体 变量的值赋给另一个相同类型的结构体变量 例如,如果 books1 和 books2 是同一类型的 例如, 结构体变量,那么下列语句是有效的: 结构体变量,那么下列语句是有效的: books2 = books1;

11 复杂数据类型及排序

结构体的赋值

语句2结构体的赋值语句 2 在不能进行直接赋值的情况下,可以使用内 在不能进行直接赋值的情况下, 置函数 memcpy() 语法: 语法: memcpy (char * destn, char &source, int nbytes); 示例: 示例: memcpy (&books2, &books1, sizeof(struct cat));

11 复杂数据类型及排序

结构体内的结构体 可以将一个结构体放入另一个结构体内。结构体不能嵌套 可以将一个结构体放入另一个结构体内。 它自身 struct issue { char borrower [20]; char dt_of_issue[8]; struct cat books; }issl; 访问结构体元素的格式与访问正常的结构体类似, 访问结构体元素的格式与访问正常的结构体类似, issl.borrower 要访问结构体 cat 的元素,而cat 是另一个结构体 issue 的 的元素, 一部分, 一部分,应使用下列语句 issl.books.author12

11 复杂数据类型及排序

将结构体作为参数进行传递 结构体变量可以作为参数传递给函数 使用这种方式可以将一组逻辑上相关的数据 项一起传递, 项一起传递,而不是逐个传递 变量的类型应该与参数的类型相匹配

11 复杂数据类型及排序

结构体数组 结构体的一种常见用法是采用结构体数组的 形式 首先定义结构体,然后声明该类型的数据变 首先定义结构体, 量 示例: 示例: struct cat books[50]; 访问数组 books 的第五个元素中的变量 author: : books[4].author14

11 复杂数据类型及排序

结构体数组的初始化 结构体数组是通过用一对大括号将其元素值列表 括起来进行初始化的 示例: struct unit 示例:{ char ch; int i; } struct unit series [3] = { {'a', 100} {'b', 200} {'c', 300} }

11 复杂数据类型及排序

结构体指针 结构体指针是通过在结构体变量名前放置一 个星号( ) 个星号(*)来进行声明的 -> 运算符用于通过指针来访问结构体的元素 示例: 示例: struct cat *ptr_bk; ptr_bk = &books; printf("%s", ptr_bk->author); 将结构体作为参数传递给函数使得该函数可 以直接修改结构体元素16

11 复杂数据类型及排序

typedef 关键字 可以使用 typedef 关键字来定义新的数据类 型名 它并没有新建数据类型,而只是为已有的类 它并没有新建数据类型, 型定义新的名字 语法: 语法: typedef type name; 示例: 示例: typedef float deci; typedef 不能用于存储类17

11 复杂数据类型及排序

数组排序 排序需要将数组中的数据按照指定的顺序 如升序或者降序) (如升序或者降序)进行排列 有两种方式来对数组进行排序:插入排序法 有两种方式来对数组进行排序: 和冒泡排序法 在插入排序法中,检查数组中的每个元素, 在插入排序法中,检查数组中的每个元素, 将它插入排序的元素中的适当位置 在冒泡排序法中,从最底部的元素开始进行 在冒泡排序法中, 比较, 比较,较小的元素会向上冒18

11 复杂数据类型及排序

冒泡排序法3冒泡排序法 1

将最少的数排在最 上面, 上面,就像冒泡 一样

11 复杂数据类型及排序

泡排序法3 冒泡排序法 - 2#include <stdio.h> void main() 需要排序的 数组 { int i, j, temp, arr_num[5] = { 23, 90, 9, 25, 16}; clrscr(); for(i=3;i>=0;i--) /* Tracks every pass */ for(j=4;j>=4-i;j--) /* Compares elements */ { if(arr_num[j]<arr_num[j-1]) { temp=arr_num[j]; arr_num[j]=arr_num[j-1]; 交换数 arr_num[j-1]=temp; } } 待续…… 待续20

11 复杂数据类型及排序

冒泡排序法 3- 3输出排序后的结果

printf("\nThe sorted array"); for(i=0;i<5;i++) printf("\n%d", arr_num[i]); getch(); }

本文来源:https://www.bwwdw.com/article/qhv4.html

Top