c语言数组和字符串.ppt_第1页
c语言数组和字符串.ppt_第2页
c语言数组和字符串.ppt_第3页
c语言数组和字符串.ppt_第4页
c语言数组和字符串.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、C/C+程序设计,7.1 一维数组,一维数组类型声明的语法形式为: T Namesize T:类型名,如int型,float型等; Name:数组名; size:常量表达式,表示数组的大小。 数组大小的确定 1. 如果在对一维数组进行初始化时给出了全部初始值,则数组声明中的元素个数可以省略,编译器会根据初始值的个数,自动计算出元素个数。 2. 可以用符号常量或常量表达式来说明数组元素的个数。,2,数组:是相同类型变量的有序集合。 元素:一个数组里集合了多个数据对象,这些数据对象被称为数组中的元素。 数组中的每一个元素用统一的数组名称和下标来唯一确定。 数组元素表示形式: 数组名下标 数组名:合

2、法的标识符 下标:元素在数组中的位置,数组的下标从0开始。 数组长度:数组中的元素个数,一维数组的定义和引用,1、一维数组的定义 当数组中每个元素都只带有一个下标时,这个数组就被称为一维数组。 数据类型 数组名常量表达式; 例如:int a6;,注意事项: 1“数据类型名”可以是任意的数据类型。 int a3; float b5; char c6; 2. 数组的下标必须是整型常量表达式 int n=10; int b2.5; int an;,2、一维数组的引用 数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组。,int a10; printf(“%d”,a); () for(

3、j=0;j10;j+) printf(“%dt”,aj); (),定义数组之后,数组中的每一个元素就相当于一个变量。对变量的一切操作同样适用于数组。 a2=2; b0=5; a1=a2+a3; scanf(“%d”,,数组名是数组变量在内存中的起始地址,定义了数组之后,这个地址固定,相当于一个地址常量。 int a10; printf(“%d”,a); printf(“%d”,一维数组的赋值,1、一维数组的初始化赋值 int a3=1,2,3; 括起来的部分叫做初值列表 赋值的结果: a0=1 a1=2 a2=3,初值列表中初值的个数不能超过数组的长度。 int a3=1,2,3,4; 如果初

4、值列表中初值的个数小于数组定义的长度,未指定的元素赋值为零。 int a3=1,2; a0=1 a1=2 a2=0,给全部数组元素赋初值时,数组的大小可以省略。 int a=1,2,3,4,5; 赋值后,数组a的长度为5; 注意区分: int a;-错误! int a=1,2,3,4,5;-正确!,思考:比较下列几种数组初始化方法: int a5=1,2,3,4,5; int a =1,2,3,4,5; int a5=1,2,3; int a =1,2,3;,2、一维数组在程序中赋值 只有初始化的时候能对数组整体赋值,其他时候必须对数组元素单独赋值。 int a5; a=1,2,3,4,5;

5、a5=1,2,3,4,5;,逐个赋值 float a4; a0=1.23;a1=3.4; a2=5.32;a3=3.67; 用循环语句赋值 例:将数组a的各元素赋值为奇数序列 int a10,i; for(i=1;i10;i+) ai=2*i+1;,例:接收键盘输入的数据给数组元素 int a10,i; for(i=1;i10;i+) scanf(“%d”, 是否正确?,数组的应用,例1:从键盘输入5个整数,将它们反序输出。,main() int i; int nums5; for(i=0;i=0;i-) printf(%d,numsi); ,例2:计算从键盘上任意键入的10个数的和。,mai

6、n() int i; float num10,sum=0.0; printf(“Input 10 numbers:n”); for(i=0;i10;i+) scanf(%f, ,例题,1、定义含有10个元素的数组,并将数组的元素按逆序重新存放后输出。 2、若有一维数组,存放10个整数,从键盘输入一个数,输出与该值相同的数组元素的下标,若无相同值提示该值不存在。 3、从键盘输入10个不相同的整数,存放在数组里,找出值最大的元素,并输出最大值所在的元素下标。 4、从键盘输入10个不同整数,存放在数组里,删除其中下标为4的元素。,例题,5、在一维数组中找出值最小的元素,并将其值与第1个元素的值对调。

7、 6、将10个数由小到大排序。,7.2 多维数组,当一个一维数组中的每个元素本身又是一个一维数组时,该数组为一个二维数组。 一、二维数组的定义 1. 格式:类型 标识符长度1长度2; 2. 二维数组元素需要两个下标表示: 例:int a34表示数组a中有3行4列共12个数据。 3. 二维数组在存储空间中是按行优先存储。,二、 二维数组的引用,格式:标识符N1N2 数组名下标1下标2 下标1从0到长度N1-1 下标2从0到长度N2-1,三、二维数组的初始化,方法: 1. 对全部元素赋初值,分行,各用一个 int a23=1,2,3,4,5,6; 2. 整体赋值,系统自动分行 int a23=1,

8、2,3,4,5,6; 3. 对部分元素赋初值,注意区别: int a23=1,2,3; int a23=1,2,3; int a23=0,1,2,3;,7.3 字符数组,字符数据 字符串数据 数组中的各个元素均为字符变量 每个元素只能存放一个字符,字符数据,字符常量 字符变量 字符串常量,a,A n,t,char c;,“Hello”,字符串在数组中的存储格式,字符串在字符数组中一个字符占用一个字节。字符串实际占有的存储单元数量等于字符串长度+1。 例:要定义一个存放字符串“CHINA”的字符数组c,应定义为:char c6;,关于字符数组的几点说明,1.字符串在内存中,系统自动加上0,作为字

9、符串结束标记,字符串所占字节数为串中字符个数+1 char c6=“abcde”; 该串共占6个字节。 2. 程序中系统根据0来判断字符串是否结束,而不是通过数组长度。例如:char c6=“ab”; c的长度为6,而实际到b就结束。,字符数组的输入输出,字符数组的输入 1、用循环,同普通类型的数组: char c10;int i; for(i=0;i10;i+) scanf(“%c”,字符数组的输入输出,字符数组的输出 (1) 用printf 函数,循环结构,逐一元素输出,格式为%c。 (2) 用printf函数,格式为%s ,用数组名,整串输出 (3) 用puts( )函数,一次输出整串。

10、,说明,字符数组可以按字符串输出,输出时,遇0结束 字符数组中,若有多个0, 遇到第一个0,输出结束,7.4 字符串处理函数,所有的函数在使用时,程序开始加文件包含: #include 1. 字符数组输出,格式:puts(字符数组); 功能:从终端输出指定字符数组,字符串处理函数,2. 字符数组输入,遇回车结束 3. 字符串连接 例:char c110=“abc”; strcat(c1,“efg”); puts(c1);,格式:gets(字符数组); 功能:从输入设备上输入一个字符串,,格式:strcat(字符数组1,字符数组2); 功能:将字符数组2连接到字符数组1的后面。,字符串处理函数,

11、4. 字符串拷贝 例:,格式:strcpy(字符数组1,字符数组2); 功能:将字符数组2复制给字符数组1。,char c120=“abcde”, C2 =“LMN”; strcpy(c1,c2); 或: strcpy(c1, “LMN”); puts(c1);,strcpy说明,(1)字符串不能彼此赋值 ,只能用拷贝函数。 (2)字符数组1定义的长度必须比字符数组2大(或相等)。 (3) 字符数组2可以用字符串常量,字符数组1必须写成变量名 。 (4) 连同0一起复制。 (5) 可以复制部分字符,即 char c120,c2 =“hello world”; strcpy(c1,c2,4);

12、只复制前4个字符。 (6) 如果原数组1中有字符,则复制后将原有内容覆盖(没覆盖的部分保留,但不显示)。,字符串处理函数,5. 字符串比较,格式:strcmp(字符数组1,字符数组2) ; 功能:从左到右逐一比较数组1和数组2各字符的ASCII 值,若相同,继续,若不同,返回一个整数(以第一个不相同的字符比较为准) 。,如果数组1数组2 函数值为正 如果数组1数组2 函数值为负 如果数组1=数组2 函数值为0,数据的比较:char str110,str210 if(strcmp(str1,str2)=0) ,字符串处理函数,6. 求字符数组(串)的长度,格式:strlen(字符数组) 功能:测试字符数组中所含字符的个数,char str10=“Hello world”; p

温馨提示

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

评论

0/150

提交评论