北大青鸟 C语言实现 11_第1页
北大青鸟 C语言实现 11_第2页
北大青鸟 C语言实现 11_第3页
北大青鸟 C语言实现 11_第4页
北大青鸟 C语言实现 11_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、复杂数据类型及排序第十一章回顾上一节课主要讲解了以下内容:字符串变量和常量字符串指针执行字符串的输入/输出操作各种字符串函数如何将数组作为参数传递给函数如何将字符串用作函数参数2目标 2-1解释结构体及它们的使用定义结构体声明结构体变量解释如何访问结构体元素解释如何初始化结构体解释结构体中使用的赋值语句解释如何将结构体作为参数传递给函数使用结构体数组解释结构体数组的初始化3目标 2- 2解释结构体指针解释如何将结构体指针作为参数传递给函数解释 typedef 关键字解释如何使用插入排序法和冒泡排序法对数组进行排序4结构体结构体由许多组织在一起的数据项组成,这些数据项不需要属于同一类型结构体可以

2、容纳需要的任意多数据项1变量ILLUSION数组ILLUSIONBACH1作者版次5定义结构体结构体定义形成了创建结构体变量的模板结构体中的变量称为结构体元素或结构体成员示例:struct catchar bk_name 25;char author 20;int edn;float price; ; 6声明结构体变量一旦定义了结构体,就可以声明一个或多个该类型的变量示例:struct cat books1;这条语句将会预留足够的内存来存放该结构体中的所有项struct cat char bk_name25; char author20;int edn;float price; books1,

3、 books2;其他方法 struct cat books1, books2;或struct cat books1;struct cat books2; 7访问结构体元素结构体元素通过使用点运算符(.)来引用,这个运算符也称为成员运算符语法:structure_name.element_name其中 structure_name 为结构体名称, element_name为元素名称。示例:scanf(%s, books1.bk_name);8初始化结构体与变量和数组一样,结构体变量也可以在声明时初始化 struct employee int no; char name 20; employee

4、类型的变量 emp1 和 emp2 可以按照下面的方式进行声明和初始化: struct employee emp1 = 346, Abraham; struct employee emp2 = 347, John;9结构体中使用的赋值语句2- 1可以使用一条简单的赋值语句将一个结构体变量的值赋给另一个相同类型的结构体变量例如,如果 books1 和 books2 是同一类型的结构体变量,那么下列语句是有效的:books2 = books1;10结构体的赋值语句2- 2在不能进行直接赋值的情况下,可以使用内置函数 memcpy()语法:memcpy (char * destn, char &so

5、urce, int nbytes);示例:memcpy (&books2, &books1, sizeof(struct cat);11结构体内的结构体可以将一个结构体放入另一个结构体内。结构体不能嵌套它自身 struct issue char borrower 20; char dt_of_issue8; struct cat books; issl; 访问结构体元素的格式与访问正常的结构体类似, issl.borrower要访问结构体 cat 的元素,而cat 是另一个结构体 issue 的一部分,应使用下列语句 issl.books.author 12将结构体作为参数进行传递结构体变量可

6、以作为参数传递给函数使用这种方式可以将一组逻辑上相关的数据项一起传递,而不是逐个传递变量的类型应该与参数的类型相匹配13结构体数组结构体的一种常见用法是采用结构体数组的形式首先定义结构体,然后声明该类型的数据变量示例:struct cat books50;访问数组 books 的第五个元素中的变量 author:books4.author14结构体数组的初始化结构体数组是通过用一对大括号将其元素值列表括起来进行初始化的示例:struct unit char ch;int i; struct unit series 3 = a, 100 b, 200 c, 30015结构体指针结构体指针是通过在

7、结构体变量名前放置一个星号(*)来进行声明的- 运算符用于通过指针来访问结构体的元素示例:struct cat *ptr_bk;ptr_bk = &books;printf(%s, ptr_bk-author);将结构体作为参数传递给函数使得该函数可以直接修改结构体元素16typedef 关键字可以使用 typedef 关键字来定义新的数据类型名它并没有新建数据类型,而只是为已有的类型定义新的名字语法: typedef type name;示例:typedef float deci;typedef 不能用于存储类17数组排序排序需要将数组中的数据按照指定的顺序(如升序或者降序)进行排列有两种方

8、式来对数组进行排序:插入排序法和冒泡排序法在插入排序法中,检查数组中的每个元素,将它插入排序的元素中的适当位置在冒泡排序法中,从最底部的元素开始进行比较,较小的元素会向上冒18冒泡排序法3- 1将最少的数排在最上面,就像冒泡一样19冒泡排序法3 - 2#include void main()int i, j, temp, arr_num5 = 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_numjarr_numj-

9、1)temp=arr_numj;交换数arr_numj=arr_numj-1; arr_numj-1=temp; 待续需要排序的数组20冒泡排序法 3- 3printf(nThe sorted array);for(i=0;iy; x-)arrnumx=arrnumx-1; /*Insert the number*/arrnumx=temp; 定义函数实现将arrnumx的值插入到索引y处23插入排序法 4-3#includevoid main()int i, j, arr5 = 23, 90, 9, 25, 16 ;char flag;clrscr(); /*Loop to compare each element of the unsorted part of the array*/for(i=1; i5; i+)需要排序的数组24插入排序法4 -4 /*Loop for each element in the sorted part of the array*/for(j=0, flag=n; jarri)/*Invoke the function to insert the number*/insertnum(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论