![语言程序设计课件第4章数组_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/29981825-f7b2-4a54-bfd1-979bf24e1ab4/29981825-f7b2-4a54-bfd1-979bf24e1ab41.gif)
![语言程序设计课件第4章数组_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/29981825-f7b2-4a54-bfd1-979bf24e1ab4/29981825-f7b2-4a54-bfd1-979bf24e1ab42.gif)
![语言程序设计课件第4章数组_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/29981825-f7b2-4a54-bfd1-979bf24e1ab4/29981825-f7b2-4a54-bfd1-979bf24e1ab43.gif)
![语言程序设计课件第4章数组_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/29981825-f7b2-4a54-bfd1-979bf24e1ab4/29981825-f7b2-4a54-bfd1-979bf24e1ab44.gif)
![语言程序设计课件第4章数组_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/29981825-f7b2-4a54-bfd1-979bf24e1ab4/29981825-f7b2-4a54-bfd1-979bf24e1ab45.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、You make the failure complete when you stop trying. -当你停止尝试的时候你就完全失败了。当你停止尝试的时候你就完全失败了。 数组是由若干同类元素组成的数据表。数组能表示非常数组是由若干同类元素组成的数据表。数组能表示非常广泛的数据集合,一组相关的同类数据集合能用数组简洁表广泛的数据集合,一组相关的同类数据集合能用数组简洁表示。例如,一个班级学生的某门课程的成绩,一行字符,一示。例如,一个班级学生的某门课程的成绩,一行字符,一个整数向量,由向量组成的矩阵等。个整数向量,由向量组成的矩阵等。 4.1 数组的基本概念数组的基本概念第第4章章 数组数
2、组定义:定义: 类型说明符类型说明符 数组名数组名常量表达式常量表达式;例如:例如: int a5;表示:表示: 数组名为数组名为a,有,有5个元素,每个元素均为整数个元素,每个元素均为整数说明:说明:1.类型说明符用来指明数组元素的类型,同一数组元素的类型说明符用来指明数组元素的类型,同一数组元素的类型相同。类型相同。2.数组是一个变量,与一般变量一样,用标识符命名数组数组是一个变量,与一般变量一样,用标识符命名数组名,遵守标识符的命名规则。名,遵守标识符的命名规则。4.2 一维数组一维数组3. 方括号方括号“ ”是数组的标志,方括号中的常量表达式表示是数组的标志,方括号中的常量表达式表示数
3、组的元素个数,即数组的长度。数组的元素个数,即数组的长度。定义数组时定义数组时 中不可以用变量名中不可以用变量名。例如:例如:int m,xm; /* 数组的大小不能用变量的值指定数组的大小不能用变量的值指定 */scanf(%d, &m); 4.2 一维数组一维数组出错指数:出错指数:4. 数组元素的下标从数组元素的下标从0开始,至数组元素个数减开始,至数组元素个数减1。5. 常量表达式是整型常量、符号常量或常量表达式是整型常量、符号常量或sizeof(类型名类型名),以,以及由它们组成的表达式。及由它们组成的表达式。 例如,例如, int a5; 定义数组定义数组a有有5个元素,每个元素都
4、是整型的。数组个元素,每个元素都是整型的。数组a有如下图所示的逻辑结构。有如下图所示的逻辑结构。在语言中,数组类型是这样一种数据结构:在语言中,数组类型是这样一种数据结构:1.数组中数组中每个元素的数据类型相同每个元素的数据类型相同,最多元素个数,最多元素个数限限定,定,其其元素按顺序存放元素按顺序存放,每个元素对应一个序号(称为下,每个元素对应一个序号(称为下标),标),各元素按下标存取(各元素按下标存取(称为引用称为引用)。2.数组元素的存储顺序与其下标对应,数组元素的存储顺序与其下标对应,数组元素的下标从数组元素的下标从0开始顺序编号开始顺序编号。 3.数组元素是变量数组元素是变量,其值
5、是可以变化的。,其值是可以变化的。数组元素变量与数组元素变量与相同类型的独立的变量一样使用。相同类型的独立的变量一样使用。4.引用数组元素变量所需的下标个数由数组的维数决定,引用数组元素变量所需的下标个数由数组的维数决定,数组有一维数组、二维数组或多维数组之分。数组有一维数组、二维数组或多维数组之分。 数组初始化:数组初始化:在数组定义的同时,给出它的元素的初值。在数组定义的同时,给出它的元素的初值。(1) 数组定义时,顺序给出数组全部元素的初值数组定义时,顺序给出数组全部元素的初值 例:例:int d5 = 0, 1, 2, 3, 4; 即:即:d0=0; d1=1; d2=2; d3=3;
6、 d4=4;说明:将数组元素的初值依次写在一对花括弧内。说明:将数组元素的初值依次写在一对花括弧内。(2) 只给数组的前面一部分元素设定初值只给数组的前面一部分元素设定初值 例:例:int e5 = 0, 1, 2; 即:即:e0=0; e1=1; e2=2; e3=0; e4=0;4.2 一维数组初始化一维数组初始化说明:说明: 当数组前当数组前n个元素被设定了初值,未明确设定初值个元素被设定了初值,未明确设定初值的元素自动被设定为的元素自动被设定为0。 当定义数组时,如未对它的元素指定过初值,则它当定义数组时,如未对它的元素指定过初值,则它的元素的值是不确定的。的元素的值是不确定的。(3)
7、 当对一维数组的全部元素都明确设定初值时,可以不指定当对一维数组的全部元素都明确设定初值时,可以不指定一维数组元素的个数。一维数组元素的个数。例如:例如: int g = 5, 6, 7, 8, 9 ;说明:说明:由花括号内的初值个数确定数组的元素个数由花括号内的初值个数确定数组的元素个数 注意:注意:初值个数不允许超过数组元素个数初值个数不允许超过数组元素个数例如:例如: int c5 = 0, 1, 2, 3, 4, 5 ;/* 错误表示错误表示 */出错指数:出错指数:形式:形式:数组名数组名下标下标说明:说明:下标是整型常量、整型变量或整型表达式(下标是整型常量、整型变量或整型表达式(
8、注意注意与定义数组时的区别与定义数组时的区别)例例: int a10, i=2; a0 = a1 + a2 - a2*i+1; /* 正确正确 */ a10 = a0 + a5; /* 错误错误 */4.2 一维数组元素的引用一维数组元素的引用例例4.1顺序输入线性表的前顺序输入线性表的前10个元素,并输出。个元素,并输出。 for(i = 0; i 10; i+) /*顺序输入数组顺序输入数组x的的10个元素个元素*/ scanf(%d, &xi); for(i = 0; i 10; i+)/*顺序输出顺序输出x的的10个元素个元素*/ printf(%dt, xi);4.2 一维数组元素的
9、引用一维数组元素的引用例例4.2 统计数组中大于统计数组中大于0、等于、等于0和小于和小于0的元素个数。的元素个数。 设数组为设数组为x,元素个数为,元素个数为n个。引入大于个。引入大于0、等于、等于0和小于和小于0的计数器变量的计数器变量 great、equal 和和 less。 great = equal = less = 0; /* 计数器变量置初值计数器变量置初值0 */ for(i = 0; i 0) great+; else if (xi = 0) equal+; else less+; 设数组设数组a原来有原来有n个元素,要求在个元素,要求在k下标位置插入一个值为下标位置插入一个
10、值为x元素。元素。为了在为了在k位置插入位置插入x,必须将元素,必须将元素ak至至an-1分别顺序后分别顺序后移一个位置。移一个位置。并要求元素后移顺序从并要求元素后移顺序从an-1开始逆序至开始逆序至ak。后。后移结束后,就可将移结束后,就可将ak设置成设置成x。最后,增加数组的元素个数。最后,增加数组的元素个数。 例例4.3在数组中插入一个元素在数组中插入一个元素a0 a1 ak ak+1 an-1 anxfor(i = n-1; i = k; i-) /* 自自an-1开始逆序至开始逆序至ak逐一后移逐一后移*/ ai+1 = ai; ak = x; n+; /*数组的元素增加了一个数组
11、的元素增加了一个*/注意注意: 后移不能从后移不能从ak开始依次至开始依次至an-1逐一后移,这逐一后移,这将使数组从将使数组从ak+1至至an的值都被设置成的值都被设置成ak。例例4.3在数组中插入一个元素在数组中插入一个元素设数组设数组a已有已有n个元素,要求在个元素,要求在k下标位置的元素从数组中删去。下标位置的元素从数组中删去。 为了在为了在k下标位置删除元素,必须将元素下标位置删除元素,必须将元素ak+1至至an-1分分别顺序前移一个位置。最后,减少数组的元素个数。别顺序前移一个位置。最后,减少数组的元素个数。 for(i = k+1; i n; i+) /* ak开始至开始至an-
12、1前移前移 */ ai-1 = ai; n-; /*数组的元素减小了一个数组的元素减小了一个*/例例4.4 删除数组中一个元素删除数组中一个元素 a0 a1 ak ak+1 an-2 an-1在数组中查找值为在数组中查找值为key的元素,有多种解法。的元素,有多种解法。 顺序查找:顺序查找: 从第从第1个元素开始,顺序查找到数组末尾。个元素开始,顺序查找到数组末尾。 for(i = 0; i n; i+) if(key = ai) break; /* 找到终止循环找到终止循环*/ if(in)printf(“Success! The site is %d!n”, i); elseprintf(
13、“Not find!”);/* 循环结束时,如果找到,有循环结束时,如果找到,有i am 下一轮的查找区间为下一轮的查找区间为 m+1,j。 key j 时,区间时,区间i,j变为一个空区间,即表示在变为一个空区间,即表示在数组数组a中没有值为中没有值为 key 的元素。的元素。 2. 初始查找的区间为初始查找的区间为i=0,j=n-1。 3. 每轮查找后,使查找区间减半。每轮查找后,使查找区间减半。 int i = 0; j = n-1; /* 设定初始查找区间设定初始查找区间 ,数组值由小到大排列数组值由小到大排列*/ while(i am) i = m+1; else j = m-1;
14、/* 找到时,找到时,i j */if(i=j)printf(“Success! The site is %d!n”, m); elseprintf(“Not find!”);二分法查找部分程序二分法查找部分程序冒泡法思想:冒泡法思想:对相邻两数比较,将小的调到前面,大对相邻两数比较,将小的调到前面,大的调到后面的调到后面(设从小到大排序设从小到大排序)。设:设:数组数组a有有n个元素,冒泡法排序共要个元素,冒泡法排序共要n-1趟,第趟,第i趟要进趟要进行行n-i次两两比较交换。即:趟数次两两比较交换。即:趟数+每趟进行的两两比较次每趟进行的两两比较次数数=元素个数元素个数 例例:输入输入n个
15、整数,对它们用冒泡法从小到大排序,个整数,对它们用冒泡法从小到大排序,然后输出然后输出出错指数:出错指数:如:如:int a = 7, 8, 4, 5, 1 ;7 8 4 5 17 8 4 5 17 4 8 5 17 4 5 8 1 7 4 5 1 87 4 5 1 84 7 5 1 84 5 7 1 84 5 1 7 8第第2 趟遍历:趟遍历:4 5 1 7 84 5 1 7 8第第3 趟遍历:趟遍历:4 1 5 7 84 1 5 7 81 4 5 7 8第第4 趟遍历:趟遍历:第第1趟遍历:趟遍历:#include void main() int i, j, temp, n, a100;
16、scanf(%d, &n); for(i=0; in; i+) scanf(%d,&ai); for(i = 0; i n-1; i+) /* 趟数是从趟数是从0开始编号的开始编号的 */ for(j=0; jaj+1) /* aj与与aj+1 交换交换 */ temp = aj; aj = aj+1; aj+1 = temp; for(i=0; in; i+) printf(%d , ai); printf(n);例例4.10冒泡法排序程序冒泡法排序程序选择法思想:选择法思想:先在先在a0an-1中找出最小数与中找出最小数与a0对对换,再在换,再在a1an-1中找最小数与中找最小数与a1对换
17、对换 . 设:设:数组数组a有有n个元素,选择法排序共要个元素,选择法排序共要n-1趟,第趟,第i趟要进趟要进行行n-i次两两比较交换。即:趟数次两两比较交换。即:趟数+每趟进行的两两比较次每趟进行的两两比较次数数=元素个数元素个数 例例:输入输入n个整数,对它们用选择法从小到大排序,个整数,对它们用选择法从小到大排序,然后输出然后输出出错指数:出错指数:如:如:int a = 7, 8, 4, 5, 1 ;7 8 4 5 17 8 4 5 17 8 4 5 17 8 4 5 11 8 4 5 7第第2 趟遍历:趟遍历:第第3 趟遍历:趟遍历:第第4 趟遍历:趟遍历:第第1趟遍历:趟遍历:1
18、8 4 5 71 8 4 5 71 8 4 5 71 4 8 5 71 4 8 5 71 4 8 5 71 4 5 8 71 4 5 8 71 4 5 8 7#include void main() int i, j, k,temp, n, a100; scanf(%d, &n); for(i=0; in; i+) scanf(%d,&ai); for(i=0;in-1; i+) k=i; for(j=i+1; jn; j+) if(aj ak) k=j; /*找出最小数所在下标找出最小数所在下标*/t=ak; ak=bi; ai=t; 例例4.10 选择法排序程序选择法排序程序4.3 多维数
19、组多维数组定义形式:定义形式: 类型说明符类型说明符 数组名数组名常量表达式常量表达式常量表达式常量表达式例如:例如: int a23, b34; /* 定义定义a为为2行行3列、列、b为为3行行4列的数组列的数组 */ float c223; /* 定义一个定义一个223的三维数组的三维数组 */说明:说明:1. 二维数组的元素是按行顺序存放的,即在内存中先存放第二维数组的元素是按行顺序存放的,即在内存中先存放第一行的元素,再存放第二行的元素。一行的元素,再存放第二行的元素。例如:对例如:对a23,其,其元素的存放顺序为:元素的存放顺序为: a00、a01、a02、a10、a11、a122.
20、 对于一个多维数组,它的元素在内存中的存放顺序有这样对于一个多维数组,它的元素在内存中的存放顺序有这样特点:第一维的下标变化最慢,最右边的下标变化最快。特点:第一维的下标变化最慢,最右边的下标变化最快。例如:对例如:对c223,其元素的存放顺序为:,其元素的存放顺序为: c000、c001、c002、c010、c011、c012、c100、c101、c102、c110、c111、c112。二维数组元素引用形式:二维数组元素引用形式: 数组名数组名下标下标下标下标例如:例如:float a23, b34; /*定义数组定义数组 b23= b23+a12; /*引用数组元素引用数组元素说明:说明:
21、1. 下标是整型常量、整型变量或整型表达式。下标是整型常量、整型变量或整型表达式。2. 0下标值对应维的元素个数。下标值对应维的元素个数。例如:上例例如:上例 b23= b23+a12; 不能写成不能写成b23= b23+a23;3. 注意:数组说明与数组引用的区别。注意:数组说明与数组引用的区别。4.3 多维数组引用多维数组引用出错指数:出错指数: #include void main() int a34, i, j; /* 假设数组假设数组 a 有有3行行4列列 */ for(i = 0; i 3; i+) /* 二维数组的元素逐行输入二维数组的元素逐行输入 */ for(j = 0; j
22、 4; j+) /* 每行逐列输入每行逐列输入 */ printf(Enter a%d%d , i, j); scanf(%d, &aij); for(i = 0; i 3; i+) /* 二维数组的元素逐行输出二维数组的元素逐行输出 */ for(j = 0; j 4; j+) /* 每行逐列输出每行逐列输出 */ printf(%dt, aij); printf(n); /* 一行元素输出后换行一行元素输出后换行 */ 例例 逐行输入输出二维数组元素逐行输入输出二维数组元素(1) 按行给二维数组的全部元素赋初值。按行给二维数组的全部元素赋初值。例如例如:int a123= 1, 2, 3,
23、4, 5, 6 ;说明:说明:这种赋初值方法比较直观,第一个花括弧内的数据这种赋初值方法比较直观,第一个花括弧内的数据给第一行的元素赋初值,第二个花括弧内的数据给第二行给第一行的元素赋初值,第二个花括弧内的数据给第二行的元素赋初值,依次类推。的元素赋初值,依次类推。(2) 按元素的存储顺序给数组元素赋初值。按元素的存储顺序给数组元素赋初值。例如例如:int a223=1, 2, 3, 4, 5, 6;说明:说明:这种赋初值方法结构性差,容易遗漏。这种赋初值方法结构性差,容易遗漏。4.3 多维数组初始化多维数组初始化(3) 逐行给数组的部分元素赋初值。逐行给数组的部分元素赋初值。例如例如:int
24、 a323= 1, 2,0, 5 ;说明:说明:其效果是使其效果是使 a300=1,a301=2,a310=0,a311=5,其余均为其余均为 0。(4) 按元素的存储顺序给前面部分元素赋初值。按元素的存储顺序给前面部分元素赋初值。例如例如:int a423 = 1, 2, 3, 4; 说明:说明:其效果是使其效果是使a400=1,a401=2,a402=3,a410=5,其余均为,其余均为 0。4.3 多维数组初始化多维数组初始化(5) 按元素的存储顺序,给数组部分或全部元素赋初值,并省按元素的存储顺序,给数组部分或全部元素赋初值,并省略第一维的长度。略第一维的长度。例如:例如: int a
25、5 3 = 1, 2, 3, 4, 5;说明:说明:系统会根据给出的初始数据个数和其他维的长度确定第系统会根据给出的初始数据个数和其他维的长度确定第一维的长度为一维的长度为2。其效果是使:。其效果是使:a500 = 1, a501 = 2, a502 = 3, a510 = 4, a511 = 5, a512 = 0。所以,数组所以,数组a5有有2行行。(6) 对数组各行的部分元素或全部元素一行行赋初值,并省略对数组各行的部分元素或全部元素一行行赋初值,并省略第一维的长度。第一维的长度。例如:例如: int a63 = 0, 2, ;也能确定数组也能确定数组a6共有共有2行。行。4.3 多维数
26、组初始化多维数组初始化当当n5时,时, 1 2 3 4 5 5 1 2 3 4 4 5 1 2 3 3 4 5 1 2 2 3 4 5 1 算法:算法:1. 先给出第先给出第 0 行;行;2. 利用第利用第i行与上一行的关系,求出第行与上一行的关系,求出第i行;行; (1) 先求第先求第0列(为上一行最后一列);列(为上一行最后一列); (2) 后求第后求第1列至最后一列(上一行左边一列)。列至最后一列(上一行左边一列)。void main() int i, j, n; int a10001000; printf(Enter n: ); scanf(%d,&n); 例例4.15输出以下形式的二
27、维数组输出以下形式的二维数组 for(j=0;jn;j+) a0j=j+1; /* 先产生第先产生第0行行 */ for(i=1;in;i+) /* 从第从第1行起行起 */ ai0=ai-1n-1; /* 先产生当前行第先产生当前行第0列列 */ for(j=1;jn;j+) /* 再从当前行第再从当前行第1列起列起 */ aij=ai-1j-1; /* 为上为上1行左边行左边1个元素个元素 */ for(i=0;in;i+) for(j=0;jn;j+) printf(%dt,aij); printf(n); 定义:定义: char 字符数组名字符数组名元素个数元素个数;例如:例如: ch
28、ar s5;表示:表示: 数组数组s有有5个元素,每个元素能存放一个字符,整个数组个元素,每个元素能存放一个字符,整个数组最多可存放最多可存放5个字符。个字符。如:如: s0=C; s1=h; s2=i; s3=n; s4=a;初始化:初始化: char s5 = C,h,i,n,a;4.4 字符串处理技术字符串处理技术 C hin achar s8 = C,h,i,n,a;C hinachar s4 = C,h,i,n,a; 错误!错误!char s1 = s,t,u,d,e,n,t ;s1有有7个元素:个元素:4.3 字符数组和字符串初始化字符数组和字符串初始化stu d e nt 0st
29、u d e nt字符串字符串结束标志结束标志 也可以用字符串对数组进行初始化,用字符串常量对字符数组初也可以用字符串对数组进行初始化,用字符串常量对字符数组初始化时,系统会自动在字符列未尾添加一个字符串结束符。始化时,系统会自动在字符列未尾添加一个字符串结束符。如:如:char s2 = student;或或 char s2 = student ;s2有有8个元素个元素说明:说明:printf ( %s, s1 ) ; 是错误的。是错误的。而而 printf ( %s, s2 ) ; 是正确的。是正确的。出错指数:出错指数:例:例:char c3 30= I am happy! , I am
30、learnning C language. ;说明:说明:字符数组字符数组c30、c31各可存储各可存储30个字符,现分别存储着个字符,现分别存储着有有11个有效字符的字符串,和有个有效字符的字符串,和有26个有效字符的字符串。个有效字符的字符串。字符串结束标志字符串结束标志 0 0代表代表ASCII码为码为0的字符,用于判断字符串是否结束。其好的字符,用于判断字符串是否结束。其好处是,尽管有时字符数组定义较大但有效字符数很容易找到。处是,尽管有时字符数组定义较大但有效字符数很容易找到。4.3 字符数组和字符串说明字符数组和字符串说明字符串常量的书写形式:字符串常量的书写形式:字符序列字符序列
31、其中:其中:字符序列由零个或多个字符组成。字符序列由零个或多个字符组成。例如:例如:字符串常量字符串常量“I am a student.”含含15个有效字符个有效字符 ,而字符,而字符串常量串常量不含任何有效字符,其长度为不含任何有效字符,其长度为0,习惯称为空字符串。,习惯称为空字符串。注意:注意:1. 字符串常量与字符常量的区别。字符串常量与字符常量的区别。2. 若双引号要作为字符串的一部分。应使用转义字符若双引号要作为字符串的一部分。应使用转义字符 实现。实现。3. 其他转义字符其他转义字符 (如如n,t) 也可以作为也可以作为 出现在字符串出现在字符串常量中。如:常量中。如: tThi
32、s is a string.n字符串常量字符串常量出错指数:出错指数:单个字符单个字符4. 如果一个字符串常量在一行内写不下时:如果一个字符串常量在一行内写不下时:(1) 在键入字符在键入字符 之后紧接键入回车键。之后紧接键入回车键。例如例如: I am a st (回车换行符回车换行符) ring.就是字符串常量就是字符串常量 I am a string.。(2)连续两个紧接的字符串常量相当于一个字符串常量。连续两个紧接的字符串常量相当于一个字符串常量。例如:例如: I am a string. 也是字符串常量也是字符串常量 I am a string.。出错指数:出错指数:5.字符串的输入
33、输出有两种方式:字符串的输入输出有两种方式:格式格式 %c:结合循环结构逐个字符输入或输出。结合循环结构逐个字符输入或输出。格式格式 %s:将字符串整体地输入或输出。将字符串整体地输入或输出。例如:例如: char s = C language;用格式用格式 %c方法输出:方法输出: for ( i = 0; si; +i ) printf ( %c, si );用格式用格式 %s方法输出:方法输出: printf ( %s, s );6.字符串与存储字符串的字符数组有区别。字符串与存储字符串的字符数组有区别。 字符串的有效字符是指,从第一个字符开始至字符串结束标字符串的有效字符是指,从第一个
34、字符开始至字符串结束标志符之前的那些字符。志符之前的那些字符。例如:例如: char str50 = Pas0cal Cobol Fortran C; printf (%sn, str);只输出:只输出:Pas 而实际上,数组而实际上,数组str 在字符串结束符之后还存有其它许多字在字符串结束符之后还存有其它许多字符。符。7. 用用“%s”格式输出字符串时,不包括字符串结束标志符。对格式输出字符串时,不包括字符串结束标志符。对应的输出项是字符串常量、字符数组名。应的输出项是字符串常量、字符数组名。 例如:例如:printf(%s, s0); 是错误的。因是错误的。因s0是数组是数组s的元素,是
35、一个字符,不是字的元素,是一个字符,不是字符串。符串。8. 用用 scanf()为字符数组输入字符串时,输入项是数组名,不为字符数组输入字符串时,输入项是数组名,不要加地址运算符要加地址运算符 &。例如例如: char str10; scanf(%s, str); /* 正确写法正确写法 */ scanf(%s, &str); /* 不正确写法不正确写法 */出错指数:出错指数:(4) 用用%s格式输入字符串时,跳过前导空白类字符,只能输格式输入字符串时,跳过前导空白类字符,只能输入一串不含空白类字符的字符序列。入一串不含空白类字符的字符序列。遇空白类字符,或输遇空白类字符,或输入了格式指定的
36、字符个数,就结束输入。入了格式指定的字符个数,就结束输入。若要输入一串包若要输入一串包括空格符在内的一行字符,要用字符行输入函数括空格符在内的一行字符,要用字符行输入函数gets()。例如例如: gets(str);出错指数:出错指数:例例 char s16, s26, s36 ; scanf(%s%s%s, s1, s2, s3);键入数据:键入数据:Happy new year输入后,数组输入后,数组 s1,s2和和s3的内容分别为:的内容分别为: s10= H,s11= a,s12= p,s13= p, s14= y, s15= 0; s20= n,s21= e, s22= w,s23=
37、 0; s30= y,s31= e, s32= a, s33= r, s34= 0。9.若用若用”%c”格式结合循环输入字符序列,且格式结合循环输入字符序列,且想构成字符串想构成字符串,则必须用赋值语句在字符列之后存入字符串结束标志符。则必须用赋值语句在字符列之后存入字符串结束标志符。例如:例如: char s20; int k; for (k = 0; k 5; k+) scanf (%c, &sk ); sk = 0 ; /* 使输入的使输入的k个字符构成字符串个字符构成字符串 */ 当字符串由程序逐个字符生成时,程序也必须在它最后当字符串由程序逐个字符生成时,程序也必须在它最后接上字符串
38、结束标志符。接上字符串结束标志符。例如:例如: char s27; int k; for(k = 0; k 字符串字符串2,函数返回值为正整数;,函数返回值为正整数; 字符串字符串1 字符串字符串2,函数返回值为负整数;,函数返回值为负整数;例:例: char str130 = Beijing ; char str230 = Shanghai;printf(%d, strcmp(str1, str2); printf(t%dn, strcmp(ABC,AAA);输出:输出:-1 1错误:错误:1.if (str1=str2)2.字符数组初始化时字符数组初始化时可用可用“=” ,其它地,其它地方
39、对字符数组赋值方对字符数组赋值时不能用时不能用“=”;char c ;c=“china”;(6) strlwr(字符数组字符数组)功能:将字符数组内的大写字母转换成小写字母。功能:将字符数组内的大写字母转换成小写字母。(7) strupr(字符数组字符数组)功能:将字符数组内的小写字母转换成大写字母。功能:将字符数组内的小写字母转换成大写字母。例:例: char str130 = Beijing; char str230 = Shanghai; strlwr (str1); strupr (str2); printf(str1=%snstr2=%sn, str1, str2);输出:输出:str1=beijing str2=SHANGHAI(8) 字符串输出函数字符串输出函数 puts(字符串字符串)功能:输出字符串内容后自动换行(即将字符串结束符功能:输出字符串内容后自动换行(即将字符串结束符 0 转换成转换成 n)。)。例:例: char str30 = Beijing; puts (str); /* 等价等价printf (%sn, str); */(9) 字符串输入函数字符串输入函数 gets(字符数组字符数组)功能:从终端输入字符序列到字符数组,最后自动补字符串结功能:从终端输入字符序列到字符数组,最后自动补字符串结束符束符0 (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度爆破工程风险评估与控制合作协议
- 二零二五年度报纸独家出版与海外发行合同
- 教育培训项目投资合作合同
- 新品发布用户指南手册
- 古诗静夜思的解读与思考
- 劳动合同培训教师劳动合同
- 数字内容创作合同
- 班轮运输合同
- 2025年度高端化工产品进口与国内销售代理合同
- 2025年度装修合同补贴申请流程规范
- 《工程电磁场》配套教学课件
- 辽宁省锦州市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 改革开放的历程(终稿)课件
- 职位管理手册
- IPQC首检巡检操作培训
- 餐饮空间设计课件ppt
- 肉制品加工技术完整版ppt课件全套教程(最新)
- (中职)Dreamweaver-CC网页设计与制作(3版)电子课件(完整版)
- 行政人事助理岗位月度KPI绩效考核表
- 纪检监察机关派驻机构工作规则全文详解PPT
- BP-2C 微机母线保护装置技术说明书 (3)
评论
0/150
提交评论