计算机二级 构造型数据结构精选文档.ppt

上传人:石*** 文档编号:45139772 上传时间:2022-09-23 格式:PPT 页数:20 大小:1.96MB
返回 下载 相关 举报
计算机二级 构造型数据结构精选文档.ppt_第1页
第1页 / 共20页
计算机二级 构造型数据结构精选文档.ppt_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《计算机二级 构造型数据结构精选文档.ppt》由会员分享,可在线阅读,更多相关《计算机二级 构造型数据结构精选文档.ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、计算机二级 构造型数据结构本讲稿第一页,共二十页1一维数组的定义一维数组的定义u u一维数组的定义形式:一维数组的定义形式:一维数组的定义形式:一维数组的定义形式:类型名类型名类型名类型名 数组名数组名数组名数组名 常量表达式常量表达式常量表达式常量表达式 说明说明1.1.类型名:数组元素的类型,它们可以是基本类型,如类型名:数组元素的类型,它们可以是基本类型,如int int、floatfloat等,也可以是构造类型等,也可以是构造类型2.2.数组名:数组的名称,命名规则与变量的名称一样。数组名:数组的名称,命名规则与变量的名称一样。3.3.常量表达式:用方括号括起,表示数组元素的个数,即常

2、量表达式:用方括号括起,表示数组元素的个数,即数组的长度,它是一个正整数。其中可以包含常数和符数组的长度,它是一个正整数。其中可以包含常数和符号常量,但不能包含变量。号常量,但不能包含变量。本讲稿第二页,共二十页2 (1)数组名后面必须是方括号)数组名后面必须是方括号。例如:例如:int a(100);是错误的。);是错误的。(2 2)“”中中的的常常量量表表达达式式中中不不能能包包含含变变量量,即即使使是是变变量量已已被赋值。被赋值。如下面的用法是错误的:如下面的用法是错误的:int m;m=10;int am;(3 3),可同时说明类型相同的多个数组和多个变量。),可同时说明类型相同的多个

3、数组和多个变量。例如:例如:int a,b,k110,k220;(4 4)常量表达式的值表示数组元素的个数。)常量表达式的值表示数组元素的个数。例如:例如:int a10;/*定义一个名为定义一个名为a的一维数组,数组中有的一维数组,数组中有10个数组元素个数组元素*/float bA,c3*5;int a1MAX,b1,c1;/*MAX为一符号常量为一符号常量*/一维数组的定义一维数组的定义本讲稿第三页,共二十页3 (5 5)一维数组在内存中)一维数组在内存中顺序存放顺序存放,占用连续空间占用连续空间 例如,有如下定义:int a10;系统为数组a开辟了10个连续的存储单元,定义了十个变量,

4、这一批变量的名字分别为a0,a1,a2,a3,a4,a5,a6,a7,a8,a9。数组名代表的是整个存储单元的首地址,可以说a与数组元素a0的地址值相同。a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 (6 6)C C语语言言不不允允许许对对数数组组的的大大小小做做作作动动态态定定义义,即即数数组组的大小不依赖程序运行过程中变量的值的大小不依赖程序运行过程中变量的值.例如:int d;d=5;int ad;是错误的。一维数组的定义一维数组的定义本讲稿第四页,共二十页4u一维数组元素的表示形式一维数组元素的表示形式数组名数组名 下标下标说明说明1.数组必须数组必须先定义后使用先定义后

5、使用2.不能不能一次一次引用引用整个数组。整个数组。3.只能只能逐个引用逐个引用数组元素,每个数组元素具有和相同类型单个变数组元素,每个数组元素具有和相同类型单个变量一样的属性,可以对它进行赋值和参与各种运算。量一样的属性,可以对它进行赋值和参与各种运算。4.数组元素的数组元素的下标下标可以是可以是整型常量或整型表达式整型常量或整型表达式,其值代表元素,其值代表元素相对于数组起始地址的偏移量,所以从相对于数组起始地址的偏移量,所以从0开始顺序编号,取开始顺序编号,取值范围是值范围是0(元素个数(元素个数-1)。5.以下假设是以下假设是16位机位机一维数组的引用一维数组的引用本讲稿第五页,共二十

6、页5&aiaia=1000 01002 101004 201006 301008 401010 501012 601014 70int a8;a0=0;a1=10;a2=20;a3=30;a4=40;a5=50;a6=60;a7=70注意:注意:a=&a0=1000一维数组的引用一维数组的引用本讲稿第六页,共二十页6程序程序4.1程序使程序使a0a9的值为的值为09,然后按逆序输出。,然后按逆序输出。main()int i,a10;for(i=0;i=0;i-)/*逆序逐个输出数组元素逆序逐个输出数组元素*/printf(“%2d”,ai);运行结果为:运行结果为:9 8 7 6 5 4 3

7、2 1 0一维数组的引用一维数组的引用本讲稿第七页,共二十页7u静态数组与动态数组:静态数组与动态数组:static int a10;静态数组静态数组 int a10;动态数组动态数组关键字关键字static是是“静态存储静态存储”,其定义的数组称为静态数组,省略关键字,其定义的数组称为静态数组,省略关键字static所定义的数组则是动态数组。所定义的数组则是动态数组。定义静态数组时,如果不赋初值,所有元素初值为定义静态数组时,如果不赋初值,所有元素初值为0。定义动态数组时,如果不赋初值,数组元素的值不确定,定义动态数组时,如果不赋初值,数组元素的值不确定,如如 int a10 的每个元素的值

8、可以是的每个元素的值可以是-3276832767之间的一个整数之间的一个整数一维数组的初始化一维数组的初始化本讲稿第八页,共二十页8u 一维数组初始化的一般形式:一维数组初始化的一般形式:static 数据类型数据类型 数组名数组名常量表达式常量表达式初值表初值表1.对所有数组元素赋初值:对所有数组元素赋初值:int a5=1,2,3,4,5;a:1 2 3 4 5static int b3=3,4,5;b:3 4 52.对部分数组元素赋初值对部分数组元素赋初值int a5=1,2,4;a:1 2 4 0 0static b3=0,3;b:0 3 0按顺序赋值,不能跳过前面的元素给后面的元素赋

9、值按顺序赋值,不能跳过前面的元素给后面的元素赋值初值个数少于元素个数,自动给后面的元素补初值个数少于元素个数,自动给后面的元素补0;初值个数多于元素个数,;初值个数多于元素个数,出错!出错!3.初始化不指定数组长度,元素个数等于所赋初值的个数初始化不指定数组长度,元素个数等于所赋初值的个数int a=1,2;a:1 2 即等同于即等同于 int a2=1,2 本讲稿第九页,共二十页9u一维数组引用举例:使用冒泡法对数据进行排序一维数组引用举例:使用冒泡法对数据进行排序1.冒泡法思想:冒泡法思想:2.通过相邻两个数之间的比较和交换,使数值较小的数逐渐从底部通过相邻两个数之间的比较和交换,使数值较

10、小的数逐渐从底部移向顶部,数值较大的数逐渐从顶部移向底部。就像水底的气泡移向顶部,数值较大的数逐渐从顶部移向底部。就像水底的气泡一样逐渐向上冒,故而得名。一样逐渐向上冒,故而得名。2.冒泡排序的过程冒泡排序的过程3.设有设有A1 An 组成的组成的n个数据,要从小到大排序:个数据,要从小到大排序:1.首先将相邻的首先将相邻的A1与与A2进行比较,如果进行比较,如果A1的值大于的值大于A2的值,的值,则交换两者的位置,使较小的上浮,较大的下沉;接着比较则交换两者的位置,使较小的上浮,较大的下沉;接着比较A2与与A3,同样使小的上浮,大的下沉。依此类推,直到比较完,同样使小的上浮,大的下沉。依此类

11、推,直到比较完An-1和和An后,后,An为具有最大数值的元素,称第一趟排序结束。为具有最大数值的元素,称第一趟排序结束。2.然后在然后在A1An-1区间内,进行第二趟排序,使剩余元素中数值最大区间内,进行第二趟排序,使剩余元素中数值最大的元素下沉到的元素下沉到An-1;3.重复进行重复进行n-1趟后,整个排序过程结束。趟后,整个排序过程结束。本讲稿第十页,共二十页10程序程序4.2用冒泡法对用冒泡法对10个整数排序(由小到大)个整数排序(由小到大)main()int i,j,t,a10;printf(input 10 numbers:n);for(i=0;i10;i+)/*输入数组元素数据,

12、使用输入数组元素数据,使用a1a10*/scanf(“%d”,&ai);printf(“n”);for(i=0;i=8;i+)/*外循环:控制比较趟数外循环:控制比较趟数*/for(j=0;jaj+1)/*如果如果aj大于大于aj-1,交换两者的位置交换两者的位置*/t=aj;aj=aj+1;aj+1=t;printf(“The sorted numbers:n”);for(i=0;iAj,则将,则将j的值赋给的值赋给k,每进行一次比较后,每进行一次比较后,j加加1。当。当j=n,同时,同时ki时,交换时,交换Ai和和Ak。本讲稿第十二页,共二十页12程序程序4.2用排序法对用排序法对10个整

13、数排序(由小到大)个整数排序(由小到大)main()int i,j,k,t,a11;printf(input 10 numbers:n);for(i=1;i=10;i+)/*输入数组元素数据,使用输入数组元素数据,使用a1a10*/scanf(“%d”,&ai);printf(“n”);for(i=1;i=9;i+)/*外循环:控制比较趟数外循环:控制比较趟数*/k=i;for(j=i+1;jaj)k=j;if(k!=i)/*如果如果k不等于不等于i,交换两者的位置,交换两者的位置*/t=ai;ai=ak;ak=t;printf(“The sorted numbers:n”);for(i=1;

14、i11;i+)/*输出排序后数据输出排序后数据*/printf(“%3d”,ai);重要例题本讲稿第十三页,共二十页13u二维数组的定义形式:二维数组的定义形式:类型名类型名 数组名数组名常量表达式常量表达式1常量表达式常量表达式2说明说明1.类型名、数组名和一维数组类似。类型名、数组名和一维数组类似。2.常量表达式常量表达式1表示行数,常量表达式表示行数,常量表达式2表示列数,都为整型常量值或整型表示列数,都为整型常量值或整型常量表达式,不能包含变量。常量表达式,不能包含变量。3.数组元素的个数为:常量表达式数组元素的个数为:常量表达式1常量表达式常量表达式2。4.可以把二维数组看作特殊的一

15、维数组,此一维数组的每个元素又是一个一维数可以把二维数组看作特殊的一维数组,此一维数组的每个元素又是一个一维数组。组。二维数组的定义二维数组的定义本讲稿第十四页,共二十页14例例float b23;1.数组元素的类型为单精度实型数组元素的类型为单精度实型2.数组元素共数组元素共236个,分为个,分为2行行3列列3.数组元素在内存中连续存储,按行存放,即数组元素在内存中连续存储,按行存放,即地址从低到高:地址从低到高:b00 b01 b02 b10 b11 b124.可理解为两个一维数组:可理解为两个一维数组:5.二维数组可以很容易扩展到多维数组,如二维数组可以很容易扩展到多维数组,如3维维 i

16、nt a232本讲稿第十五页,共二十页15u二维数组元素的表示形式二维数组元素的表示形式数组名数组名 下标下标1下标下标2说明说明1.同一维数组一样,二维数组必须先定义后使用;不能一次引用整个数组只同一维数组一样,二维数组必须先定义后使用;不能一次引用整个数组只能逐个引用数组元素。能逐个引用数组元素。2.下标可以是整型常量或整型表达式,要注意保证数组下标不越界。如定义数组下标可以是整型常量或整型表达式,要注意保证数组下标不越界。如定义数组bMN(M和和N都是整型常量),则下标的取值范围分别是:都是整型常量),则下标的取值范围分别是:下标下标1:0M-1下标下标2:0N-1二维数组的引用二维数组

17、的引用本讲稿第十六页,共二十页16u对全部元素赋初值对全部元素赋初值分行赋值分行赋值int a23=1,2,3,4,5,6;每一行用一个花括号括起,逗号作为间隔符。每一行用一个花括号括起,逗号作为间隔符。按顺序赋值按顺序赋值int a23=1,2,3,4,5,6;与一维数组相同,因为二维数组存储是连续的。与一维数组相同,因为二维数组存储是连续的。省略一维长度省略一维长度int a 3=1,2,3,4,5,6;int a 3=1,2,3,4,5,6;二维数组的初始化二维数组的初始化本讲稿第十七页,共二十页17u对部分元素赋初值对部分元素赋初值分行赋值分行赋值int a33=1,3,4,5,6;后

18、面没赋初值的元素,系统自动赋予初值后面没赋初值的元素,系统自动赋予初值0。按顺序赋值按顺序赋值int a23=1,2,3,4;与一维数组相同,因为二维数组存储是连续的。与一维数组相同,因为二维数组存储是连续的。省略一维长度省略一维长度int a 3=1,2,3,4,5,6,;int a33=int a 3=1,2,3,4,5,6,7;int a33=行数为行数为3 int a 3=1,2 int a13=行数为行数为1本讲稿第十八页,共二十页18u二维数组引用举例二维数组引用举例程序程序4.4将一个二维数组将一个二维数组a的行和列互换,存到另一个二维数组的行和列互换,存到另一个二维数组b中中main()int a23=1,2,3,4,5,6;int b32,i,j;printf(“array a:n”);for(i=0;i=1;i+)for(j=0;j=2;j+)printf(“%5d”,aij);bji=aij;printf(“n”);本讲稿第十九页,共二十页19printf(“array b:n”);for(i=0;i=2;i+)for(j=0;j=1;j+)printf(“%5d”,bij);printf(“n”);运行结果如下:运行结果如下:array a:1 2 3 4 5 6array b:1 4 2 5 3 6本讲稿第二十页,共二十页20

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁