高级语言程序设计课件参考1第5章数组_第1页
高级语言程序设计课件参考1第5章数组_第2页
高级语言程序设计课件参考1第5章数组_第3页
高级语言程序设计课件参考1第5章数组_第4页
高级语言程序设计课件参考1第5章数组_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

5.1数组数据结构:声明、初始化、引用5.2字符数组5.3多维数组5.4数组与函数参数5.5数组综合应用与算法理解冒泡排序、选择排序字符串模式匹配二分查找法第五章数组5.1数组声明数组是同类数据元素的集合,数组的各个数据元素顺序存储于内存一段连续的空间数组每个元素通过下标识别数组存放于从第一个元素开始的连续空间中。5.1数组声明一维数组的说明语法:

类型

变量名[长度];例如:

inta[10];

unsignedlonga[20];说明:数组都是以0作为第一个元素的下标,inta[10]表明该数组有10个元素(图5-8),a[0]~a[9],每个元素为一个int型变量。②字符串一般用一维数组表示。数组名表示字符串中第一个字符的地址,

例如char

s[8]="hello",s表示‘h’所在的内存单元地址。s[0]存放的是字母‘h’的ASCII码值,③C对数组不作边界检查。例如用下面语句说明数组和赋值charstr[5]=”ABCDE”;str[5]=’F’;str[6]=’G’;str[5]和str[6]的下标都越界了,但不会引起编译错误。当然,运行情况不确定。charstr[5]=”ABCDEFG”;/*编译错误*/下标01234567s‘h’‘e’‘l’‘l’‘o’‘\0’5.1一维数组的初始化一维数组的初始化语法为:类型说明符数组名[常量表达式]={值,值……值};如:inta[10]={0,1,2,3,4,5,6,7,8,9};相当于:a[0]=0;a[1]=1...a[9]=9;部分初始化。如:inta[10]={0,1,2,3,4};如果初始化值的个数少于数组元素的个数,剩余的元素被自动初始化为0。则:inta[10]={0};//表示将数组a的所有元素赋值为0。全部元素指定初值,可省略数组的长度,如

inta[5]={1,2,3,4,5};等价于inta[]={1,2,3,4,5};5.1一维数组的引用C语言规定只能逐个引用数组元素而不能一次引用整个数组。数组元素的引用语法:数组名[下标]数组名实际上是数组第一个元素的地址。C语言中提供了地址运算符&来计算变量的地址。其一般语法形式为:&变量名;如:&a表示变量a的地址。示例1:数组元素赋值示例2:投骰子字符数组的定义: charc[3];字符数组的赋值: c[0]='b';c[1]='m';c[2]='u';注意:①要区别“字符”和“字符串”,②字符串结束标志”,‘\0‘。③初始化:charc[]="student";charc[]={"student"};*/charc[8]={'s','t','u','d','e','n','t'};charc[7]={'s','t','u','d','e','n','t','\0'};5.2字符数组5.2字符数组④字符数组的输入/输出:输出:逐个元素(字符)输入输出外printf(“%c”,c[0]);或printf(“%s”,c);%s’格式符输出整个串输入:scanf()中使用‘%s’转换字符可以读入一个字符串,当遇到空白符时就认为字符串结束了。如:scanf("%s",c);注:不能用scanf来读入一个输入行,因为一行中可能有空格。输出字符不包括结束符'\0'。如果一个字符数组包含一个以上'\0',则遇到第一个'\0'时输出结束。示例3:字符数组①二维数组的定义。一般语法形式为:类型说明符数组名[常量表达式][常量表达式]如:floata[3][4];/*a为3×4(3行4列)的数组*/ floatb[5][10];/*b为5×10(5行10列)的数组*/②二维数组的理解:可以把二维数组看成是一个一维数组,这个一维数组的每个元素又是一维数组。如二维数组a[3][4]理解为有三个元素a[0]、a[1]、a[2],每一个元素是一个包含4个元素的数组,。5.3多维数组(1)③二维数组的元素在内存中的存放:循序按行存放。即:先顺序存放第一行的元素,再存放第二行的元素。④二维数组中元素的引用:用数组名和下标引用元素。例数组:floata[2][3];

引用各元素下标:

a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]注意:数组floata[2][3]中无元素a[2][3]。5.3多维数组(2)④二维数组的初始化:分行赋值:inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};统一赋值:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};或:inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};//第一维的长度可以不指定,但必须指定第二维的长度部分元素赋值:inta[3][4]={{1},{5},{9}};//仅对a[0][0]、a[1][0]、a[2][0]赋值,其余元素未赋值5.3多维数组(3)

a[0]+0a[0]+1a[0]+2a[0]+3a[0]或a20001200232004520067a[1]或a+120089201011201213201415a[2]或a+2201617201819202021202223使用二维数组的数组名表达式数组定义:inta[3][4]5.4数组与函数参数数组作为函数的参数,可实现传址引用。数组定义:inta[10];函数定义:Fun(inta[],intsize);函数调用:Fun(a,10);函数原型:Fun(int[],int);示例4:给函数传递数组和单个的数组元素。执行结果:Const类型限定符限制函数体修改数组的值。5.5数组应用示例——选择法排序

算法描述:所谓排序是指把一组杂乱无章的数按照大小顺序排列。选择排序采用的办法是:首先找出值最小的元素,然后把这个元素与第一个元素互换,这样值最小的元素就放到了第一个位置,接着。再从剩下的元素中找出值最小的元素,把它和第二个元素互换,使得次小的元素放在第二个位置上。依此类推,直到所有的值由小到大顺序排列为止。如有数据

7,5,9,3,2,8则选择排序的过程如图5-11。5.5数组应用示例——选择法排序关键代码:针对NUM个元素的选择排序for(i=0;i<=NUM-1;i++){/*扫描NUM-1次*/r=i;for(j=i+1;j<NUM;j++)/*在一遍扫描中*/if(a[j]<a[r])/*a[r]中保存最小的元素*/r=j;if(r!=i){/*如果最小元数没有在前面的位置,进行互换*/temp=a[i];a[i]=a[r];a[r]=temp;}5.5数组应用示例——选择法排序5.5字符串处理综合示例对下面歌词(《人鬼情未了》主题曲)查找包含字符串“love”的行。如:1oh,mylove,mydarling,

2I'vehungeredforyourtouch

3Alonglonelytime

4Andtimegoesbysoslowly

5Andtimecandosomuch

6Areyoustillmine?

温馨提示

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

评论

0/150

提交评论