版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c语言数组和字符串 c语言数组和字符串 7.1 一维数组一维数组 一维数组类型声明的语法形式为: T Namesize T:类型名,如int型,float型等; Name:数组名; size:常量表达式,表示数组的大小。 数组大小的确定 1. 如果在对一维数组进行初始化时给出了全部初始值, 则数组声明中的元素个数可以省略,编译器会根据初始 值的个数,自动计算出元素个数。 2. 可以用符号常量或常量表达式来说明数组元素的个数 。 2 c语言数组和字符串 数组:是相同类型变量的有序集合。数组:是相同类型变量的有序集合。 元素:一个数组里集合了多个数据对象元素:一个数组里集合了多个数据对象 ,这些数
2、据对象被称为数组中的元素。,这些数据对象被称为数组中的元素。 数组中的每一个元素用统一的数组名称数组中的每一个元素用统一的数组名称 和下标来唯一确定。和下标来唯一确定。 数组元素表示形式:数组元素表示形式: 数组名数组名 下标下标 数组名:合法的标识符数组名:合法的标识符 下标:元素在数组中的位置,数组的下下标:元素在数组中的位置,数组的下 标从标从0开始。开始。 c语言数组和字符串 一维数组的定义和引用一维数组的定义和引用 1、一维数组的定义、一维数组的定义 当数组中每个元素都只带有一个下标当数组中每个元素都只带有一个下标 时,这个数组就被称为一维数组。时,这个数组就被称为一维数组。 数据类
3、型数据类型 数组名数组名常量表达式常量表达式; 例如例如:int a6; a0 0 1 4 5 a1 a2 a3 a4 a5 2 3 a c语言数组和字符串 c语言数组和字符串 2、一维数组的引用、一维数组的引用 数组必须先定义,后使用数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用只能逐个引用数组元素,不能一次引用 整个数组。整个数组。 int a10;int a10; printf( printf(“%d%d”,a); (,a); ( ) ) for(j=0;j10;j+) for(j=0;j10;j+) printf( printf(“%dt%dt”,aj); (,aj); (
4、 ) ) c语言数组和字符串 定义数组之后,数组中的每一个元素就定义数组之后,数组中的每一个元素就 相当于一个变量。对变量的一切操作同相当于一个变量。对变量的一切操作同 样适用于数组。样适用于数组。 a2=2; b0=5; a1=a2+a3; scanf(“%d”, printf(“%d”,a2); c语言数组和字符串 数组名是数组变量在内存中的起始地址数组名是数组变量在内存中的起始地址 ,定义了数组之后,这个地址固定,相,定义了数组之后,这个地址固定,相 当于一个地址常量。当于一个地址常量。 int a10;int a10; printf( printf(“%d%d”,a);,a); pri
5、ntf( printf(“%d%d”, c语言数组和字符串 一维数组的赋值一维数组的赋值 1 1、一维数组的初始化赋值、一维数组的初始化赋值 int a3=1,2,3;int a3=1,2,3; 括起来的部分叫做初值列表括起来的部分叫做初值列表 赋值的结果:赋值的结果: a0=1 a1=2 a2=3a0=1 a1=2 a2=3 c语言数组和字符串 初值列表中初值的个数不能超过数组的初值列表中初值的个数不能超过数组的 长度。长度。 int a3=1,2,3,4;int a3=1,2,3,4; 如果初值列表中初值的个数小于数组定如果初值列表中初值的个数小于数组定 义的长度,未指定的元素赋值为零。义
6、的长度,未指定的元素赋值为零。 int a3=1,2;int a3=1,2; a0=1 a1=2 a2=0 a0=1 a1=2 a2=0 c语言数组和字符串 给全部数组元素赋初值时,数组的大小给全部数组元素赋初值时,数组的大小 可以省略。可以省略。 int a=1,2,3,4,5;int a=1,2,3,4,5; 赋值后,数组赋值后,数组a a的长度为的长度为5 5; 注意区分:注意区分: int a;-int a;-错误!错误! int a=1,2,3,4,5;-int a=1,2,3,4,5;-正确!正确! c语言数组和字符串 思考:比较下列几种数组初始化方法:思考:比较下列几种数组初始化
7、方法: int a5=1,2,3,4,5;int a5=1,2,3,4,5; int a =1,2,3,4,5; int a =1,2,3,4,5; int a5=1,2,3; int a5=1,2,3; int a =1,2,3; int a =1,2,3; c语言数组和字符串 2 2、一维数组在程序中赋值、一维数组在程序中赋值 只有初始化的时候能对数组整体赋值,只有初始化的时候能对数组整体赋值, 其他时候必须对数组元素单独赋值。其他时候必须对数组元素单独赋值。 int a5;int a5; a=1,2,3,4,5; a=1,2,3,4,5; a5=1,2,3,4,5; a5=1,2,3,4
8、,5; c语言数组和字符串 逐个赋值逐个赋值 float a4;float a4; a0=1.23;a1=3.4; a0=1.23;a1=3.4; a2=5.32;a3=3.67; a2=5.32;a3=3.67; 用循环语句赋值用循环语句赋值 例:将数组例:将数组a a的各元素赋值为奇数序列的各元素赋值为奇数序列 int a10,i;int a10,i; for(i=1;i10;i+) for(i=1;i10;i+) ai=2 ai=2* *i+1;i+1; c语言数组和字符串 例:接收键盘输入的数据给数组元素例:接收键盘输入的数据给数组元素 int a10,i;int a10,i; for
9、(i=1;i10;i+) for(i=1;i10;i+) scanf scanf(“%d%d”, ; 思考:思考: int a3;int a3; scanf( scanf(“%d %d %d%d %d %d”,a);,a); 是否正确?是否正确? c语言数组和字符串 数组的应用数组的应用 例1:从键盘输入从键盘输入5个整数,将它们反序输个整数,将它们反序输 出。出。 c语言数组和字符串 例例2 2:计算从键盘上任意键入的:计算从键盘上任意键入的1010个数的个数的 和。和。 c语言数组和字符串 例题例题 1、定义含有10个元素的数组,并将数组的 元素按逆序重新存放后输出。 2、若有一维数组,存
10、放10个整数,从键盘 输入一个数,输出与该值相同的数组元素的 下标,若无相同值提示该值不存在。 3、从键盘输入10个不相同的整数,存放在 数组里,找出值最大的元素,并输出最大值 所在的元素下标。 4、从键盘输入10个不同整数,存放在数组 里,删除其中下标为4的元素。 c语言数组和字符串 例题例题 5、在一维数组中找出值最小的元素,并将 其值与第1个元素的值对调。 6、将10个数由小到大排序。 c语言数组和字符串 7.2 多维数组多维数组 当一个一维数组中的每个元素本身又是一个一当一个一维数组中的每个元素本身又是一个一 维数组时,该数组为一个二维数组。维数组时,该数组为一个二维数组。 一、二维数
11、组的定义一、二维数组的定义 1. 格式:类型格式:类型 标识符标识符长度长度1长度长度2; 2. 二维数组元素需要两个下标表示:二维数组元素需要两个下标表示: 例:例:int a34表示数组表示数组a中有中有3行行4列共列共12个个 数据。数据。 3. 二维数组在存储空间中是按行优先存储。二维数组在存储空间中是按行优先存储。 c语言数组和字符串 二、二、 二维数组的引用二维数组的引用 格式:标识符格式:标识符N1N2 数组名数组名下标下标1下标下标2 下标下标1从从0到长度到长度N1-1 下标下标2从从0到长度到长度N2-1 c语言数组和字符串 三、二维数组的初始化三、二维数组的初始化 方法:
12、方法: 1. 对全部元素赋初值,分行,各用一个对全部元素赋初值,分行,各用一个 int a23=1,2,3,4,5,6; 2. 整体赋值,系统自动分行整体赋值,系统自动分行 int a23=1,2,3,4,5,6; 3. 对部分元素赋初值,注意区别:对部分元素赋初值,注意区别: int a23=1,2,3; int a23=1,2,3; (1)int a23=0,1,2,3; c语言数组和字符串 7.3 字符数组字符数组 字符数据 字符串数据 数组中的各个元素均为字符变量数组中的各个元素均为字符变量 每个元素只能存放一个字符每个元素只能存放一个字符 字符数据字符数据 字符常量字符常量 字符变量
13、字符变量 字符串常量字符串常量 a,A n,t char c; “Hello” c语言数组和字符串 字符串在数组中的存储格式字符串在数组中的存储格式 字符串在字符数组中一个字符占用一个字字符串在字符数组中一个字符占用一个字 节。字符串实际占有的存储单元数量等于节。字符串实际占有的存储单元数量等于 字符串长度字符串长度+1。 例:要定义一个存放字符串例:要定义一个存放字符串“CHINA”的字的字 符数组符数组c,应定义为:,应定义为:char c6; 0AN IHC 串长串长=5 c0 c1 c2 c3 c4 c5 c语言数组和字符串 关于字符数组的几点说明关于字符数组的几点说明 1.字符串在内
14、存中,系统自动加上字符串在内存中,系统自动加上0, 作为字符串结束标记,字符串所占字节数作为字符串结束标记,字符串所占字节数 为串中字符个数为串中字符个数+1 char c6=“abcde”; 该串共占该串共占6个字节。个字节。 2. 程序中系统根据程序中系统根据0来判断字符串是来判断字符串是 否结束,而不是通过数组长度。例如:否结束,而不是通过数组长度。例如: char c6=“ab”; c的长度为的长度为6,而实际到,而实际到b 就结束。就结束。 c语言数组和字符串 字符数组的输入输出字符数组的输入输出 字符数组的输入 1、用循环,同普通类型的数组:、用循环,同普通类型的数组: char
15、c10;int i; for(i=0;i10;i+) scanf(“%c”, 2、用、用“%s”,数组名,将数组当作字符串来输入。,数组名,将数组当作字符串来输入。 遇空格、回车结束。遇空格、回车结束。 char c10; scanf(“%s”, c ); 3、用、用gets( )函数,函数,一次输入一个整串,遇回车结一次输入一个整串,遇回车结 束。如:束。如: char str10; gets( str ); c语言数组和字符串 字符数组的输入输出字符数组的输入输出 字符数组的输出 (1) 用用printf 函数,循环结构,逐一元素输函数,循环结构,逐一元素输 出,格式为出,格式为%c。 (
16、2) 用用printf函数,格式为函数,格式为%s ,用数组名,用数组名, 整串输出整串输出 (3) 用用puts( )函数,一次输出整串。函数,一次输出整串。 c语言数组和字符串 说明说明 字符数组可以按字符串输出字符数组可以按字符串输出,输出时输出时,遇遇 0结束结束 字符数组中字符数组中,若有多个若有多个0, 遇到第一个遇到第一个 0,输出结束输出结束 c语言数组和字符串 7.4 字符串处理函数字符串处理函数 所有的函数在使用时,程序开始加文件包所有的函数在使用时,程序开始加文件包 含:含: #include 1. 字符数组输出字符数组输出 格式:格式:puts(字符数组字符数组); 功
17、能:从终端输出指定字功能:从终端输出指定字 符数组符数组 c语言数组和字符串 字符串处理函数字符串处理函数 2. 字符数组输入,字符数组输入,遇回车结束遇回车结束 3. 字符串连接字符串连接 例:例:char c110=“abc”; strcat(c1,“efg”); puts(c1); 格式:格式:gets(字符数组);字符数组); 功能:从输入设备上输入功能:从输入设备上输入 一个字符串,一个字符串, 格式:格式:strcat(字符数组字符数组1,字符数组,字符数组2); 功能:将字符数组功能:将字符数组2连接到字符数组连接到字符数组1的后面。的后面。 c语言数组和字符串 字符串处理函数字
18、符串处理函数 4. 字符串拷贝 例: 格式:格式:strcpy(字符数组字符数组1,字符数组,字符数组2);); 功能:将字符数组功能:将字符数组2复制给字符数组复制给字符数组1。 char c120=“abcde”, C2 =“LMN”; strcpy(c1,c2); 或或: strcpy(c1, “LMN”); puts(c1); c语言数组和字符串 strcpystrcpy说明说明 (1)字符串不能彼此赋值)字符串不能彼此赋值 ,只能用拷贝函数。,只能用拷贝函数。 (2)字符数组)字符数组1定义的长度必须比字符数组定义的长度必须比字符数组2大(或大(或 相等)。相等)。 (3) 字符数组
19、字符数组2可以用字符串常量,字符数组可以用字符串常量,字符数组1必须必须 写成变量名写成变量名 。 (4) 连同连同0一起复制。一起复制。 (5) 可以复制部分字符,即可以复制部分字符,即 char c120,c2 =“hello world”; strcpy(c1,c2,4); 只复制前只复制前4个字符个字符。 (6) 如果原数组如果原数组1中有字符,则复制后将原有内容中有字符,则复制后将原有内容 覆盖(没覆盖的部分保留,但不显示)覆盖(没覆盖的部分保留,但不显示)。 c语言数组和字符串 字符串处理函数字符串处理函数 5. 字符串比较 格式:格式:strcmp(字符数组字符数组1,字符数组,字符数组2) ; 功能:从左到右逐
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能化建筑工程项目设备调度管理方案
- 病房照明节能改造施工方案
- 《工程建设监理》-第四章工程建设监理组织
- 幼儿园后厨工作面试题库及答案解析2025年
- 2025年直招军官计算机面试真题库答案解析
- 2025-2026学年响应面法教学设计英语
- 2025-2026学年牧歌葫芦丝教学设计教程
- 2026年法律常识问答试卷及答案
- 2026年达州市中西医结合医院中医规培招录试题
- 广东广电网络2026届秋季校园招聘185人备考题库及答案详解(考点梳理)
- 服装导购员合同
- 车站超市经营方案
- 三星堆青铜文化介绍三星堆遗址介绍课件
- 放弃继承权声明书(模板)
- (完整)博士生求职简历模版
- 室内装饰施工进度横道图
- 国家安全概论-西安交通大学中国大学mooc课后章节答案期末考试题库2023年
- 单流环式密封油系统介绍及密封瓦检修
- 停用加气站处置方案
- 小学英语科普版单词表三至六年级词汇表-合并方便打印版-(带音标按单元顺序)(三年级至六年级全8册)1850
- DB1410-T 110-2020 地震宏观观测网建设和管理要求
评论
0/150
提交评论