《数组和字符串》PPT课件.ppt_第1页
《数组和字符串》PPT课件.ppt_第2页
《数组和字符串》PPT课件.ppt_第3页
《数组和字符串》PPT课件.ppt_第4页
《数组和字符串》PPT课件.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1,第5章 数组和字符串,5.1 数组的概念 5.2 数组的定义和初始化 5.3 数组的基本操作 5.4 数值数组的应用 5.5 字符串处理函数和字符数组的应用 5.6 练习题,2,5.1 数组的概念,概念: 数组是变量的延伸,是同类型变量的集合; 同一数据类型有序变量的集合; 数组元素: 数组中每个变量成为数组元素 数组元素称为下标变量; 元素的存取通过下标进行; 使用目的: 组织循环,使编程简单; 内容: 一维、二维数组; 字符数组;,3,5.2 数组的定义和初始化,数组的定义 数组的存储 数组元素的引用 数组的初始化,4,1.数组的定义,格式:P103 存储类型 数据类型 数组名enen-1e1; 说明: 存储类型:auto、static、register、extern ; 数据类型:int、float、char、double; 数组名:C语言标示符; e:常量表达式,元素个数,必须为正。 举例: int data8; float a23; int a345; char c1020;,5,1.数组的定义,注意问题:P104 维界: e只能是常数或符号常数组成的整型表达式,且不可少; 数组第1个元素下标必须从0开始; 一个语句定义多个同类型数组或变量,用逗号分隔,如int ch20 , v23, a, x, y;,6,2.数组的存储,一维数组: 各元素顺序存放; 数组名是这一片存储单元的首地址,为常数; 举例:int a8 ;,a,7,2.数组的存储,二维数组: 先按行的顺序,然后按列的顺序存放。 数组的各元素占用相同数量的存储单元。 数组名是这一片存储单元的首地址。 举例: float a55 ;,a,8,2.数组的存储,二维数组存储矩阵实例: float a34 ;,9,3.数组的初始化,一维数组的初始化: 全部赋初值: int a10 =1, 2, 3, 4, 5, 6, 7, 8, 9, 10; 部分元素赋初值; int a10=1, 2, 3, 4, 5; 根据初值确定数组容量:不指定数组大小 ; int a =1, 2, 3, 4, 5, 6, 7, 8, 9, 10;,10,3.数组的初始化,二维数组初始化: 全部赋值:初值个数与元素个数相同; 分行:int a34=1,2,3,4,5,6,7,8,9,10,11,12 ; 用1个花括号:int a34=1,2,3,4,5,6,7,8,9,10,11,12 ; 省略二维大小: int a 3=1,2,3,5,6,7,9,10,11 ; 部分元素赋值:初值数少于元素个数; int a34=1,5,9 ; int a34=0,0,1,5,0,9,0 ; int a34=1,5, ; int a34=1,5,9 ;,11,3.数组的初始化,字符数组初始化: 用字符常数: 一维:char s12=T,h,e, ,s,t,r,i,n,g,.,0; 二维:char lan58=B,A,S,I,C,0, F,O,R,T,R,A,N,0, P,A,S,C,A,L,0, C,0, C, O,B,O,L,0; 字符串常数: char str12=“The string.”; 或 char str12=“The string.“; char Language58=“BASIC“,“FORTRAN“, “PASCAL“,“C“,“COBOL“;,12,3.数组的初始化,数组初始化说明:P106 如果赋初值的花括号中的常数个数少于数组元素个数,则编译系统会自动以0来补足; 当花括号中给出初值的个数多于定义的数组元素个数时,将出错; 花括号中的初值可以缺省,但逗号不能省略,缺省的值将被视为0;,13,5.3 数组的基本操作,数组元素的引用 数组的赋值 数组的输入和输出,14,1.数组元素的引用,一维数组: 格式: 数据: 数组名下标 ; 地址: 要点: C规定第一个数组元素下标为0 ; 注意引用和定义时 内数字的含义不同;,15,1.数组元素的引用,二维数组: 格式: 数据: 数组名下标1 下标2 ; 地址: 要点: C规定第一个数组元素下标为00 ; 注意引用和定义时内数字的含义不同;,16,2.数组的赋值,只能对数组元素赋值,不能对数组名赋值: 一维数组:int a5; 正确:a0=10,a1=20,a2=30,a3=40,a4=50; 错误:a=10,20,30,40,50; 二维数组:int b22; 正确: b00=1, b01=2, b10=3, b11=4; 错误:b=1, 2, 3, 4;,17,2.数组的赋值,如果所赋值有规律,可借助循环赋值: 举例:int b23; for(i=0; i2; i+) for(j=0; j3; j+) bij=i+j; 注意: for循环测试表达式不能写成:i=2 , j=3;否则造成下标越界;,18,2.数组的赋值,字符型数组只能对每个元素用字符常数赋值: 字符数组:char c4; 正确: c0=a, c1=b, c2=c, c2=0; 错误形式: c=a,b,c; c=“abc”; c4=“abc”; c=“abc”;,19,3.数组的输入和输出,一维数组: 用单循环;P109 定义数组: float x10; 输入: for(i=0;i10;i+) scanf(“%f”, i+) printf(“%f ”, xi); 编程举例: lt5-1a.c; lt5-1.c,20,3.数组的输入和输出,二维数组: 用二重循环;P110 定义数组: float a34; 输入:按行顺序; for(i=0;i3;i+) for(j=0;j4;j+) scanf(“%f”, j+) printf(“%f ”, aij) ; 编程举例: lt5-1b.c,21,3.数组的输入和输出,字符数组: P111 用scanf()和printf()实现:%c 和%s 举例:lt5-2a.c; 用gets()和puts()实现: 举例:lt5-2.c; 举例:lt5-3.c;,22,5.4 数值数组的应用,数据统计 排序 检索,23,1.数据统计,例lt5-4:P113 编制程序,分档统计某班30名学生,某门课程考试成绩各分段人数; 例lt5-5:P114 编制程序,找二维数组a45中最大和最小元素;,24,2.排序,选择排序:例lt5-7,P116 编制程序,对10个数,从小到大排序; 比较次数:(n-1)+(n-2)+.+1=n(n-1)/2 交换次数:最多n-1次;,25,2.排序,冒泡排序:例lt5-8,P117 编程对20个数,从小到大排序; 比较次数:(n-1)+(n-2)+.+1=n(n-1)/2 交换次数:最多n(n-1)/2次;,26,3.数据检索,顺序查找: 不要求数据有序,依次审查数组中的数据是否要查找的数据,若是,结束审查;否则,继续审查。平均查找次数为(n+1)/2。 二分查找:例lt5-9,P118 要求数据有序。将整个数组作为搜索区间,审查位于中间位置的元素是否要查找的数据,若否,则将查找区间折半,通过不断折半,直到找到或可确定数组中已没有指定的数据为止。 编程:对n个从小到大排好序的数,存放在一维数组中,查找x在数组中的位置;,27,3.数据检索,二分查找: 查找过程举例: 有序表:(2,5,7,9,12,23,28,34,38,42,46,56) 查找数据元素:key12; 设定三个指针: high:待查元素的上界,初值为n=11; low:待查元素的下界,初始值0; mid:mid=(high+low)/2,指示中间位置;,28,5.5 字符串函数及字符数组应用,1. 字符串处理函数 2. 字符数组的应用,29,求字符串长度函数strlen() : 功能: 计算字符串的长度,不计字符串末尾的0字符; 格式:strlen(字符串); 参数:字符型数组名/字符串常数; 函数值:数值型。 编程举例: P120 lt5-10.c,1.字符串处理函数,30,字符串拷贝函数:strcpy() 功能: 将一个字符串拷贝到另一个字符串中; 调用格式: strcpy(字符串1,字符串2); 说明: 字符串1必须是字符型数组名,字符串2可以是字符型数组名或字符串常数。 编程举例:P121 Lt5-11.c,1.字符串处理函数,31,字符串比较函数:strcmp() 功能: 对两个字符串进行比较大小; 格式: strcmp(字符串1,字符串2); 规则:从左至右逐个按其ASCII代码值比较进行比较; 串1=串2,函数返回0值; 串1串2,返回正整数; 串1串2,返回负整数; 编程举例:P112 lt5-12.c,1.字符串处理函数,32,字符串连接函数:strcat( ) 功能: 将第2个字符串连接到第1个字符串的末尾; 格式: strcat(字符串1,字符串2); 说明: 字符串1必须是字符型数组名。 编程举例:P123 Lt5-13.c,1.字符串处理函数,33,2.字符型数组的应用,例lt5-14:P123 判断字符串是否是回文; 例lt5-15:P123 将字符a替换为字符b; 例lt5-16:P124 将字符串中指定的字符删除; 例lt5-17:P125 在字符串中插入一个字符; 例lt5-18:P126 输入5个字符串,升序排列;,34,第5章 小结,数组的概念 数组/数组元素/数组类型 数组的定义和初始化 定义/存储/初始化 数组的基本操作 数组元素的引用/赋初值/输入和输出 数值数组的应用: 统计/排序/索引 字符串处理函数和字符数组的应用 gets()、puts() strlen()、strcat( )、strcmp()、strcpy(),35,课堂作业 1,编程: 编制程序,定义数组,存放10个浮点数,用for循环输入10个数,然后用for循环输出10个数; 回答问题 数组定义语句: 数组名: 数组元素输入语句: 数组元素输出语句:,36,课堂作业 2,编程: 编制程序,找二维数组a45中最大和最小元素。 回答问题 数组名: 数组元素输入语句: 赋初值语句: 测试表达式:,37,5.6 练习题,以下叙述错误的是: 对于double型

温馨提示

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

评论

0/150

提交评论