




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言程序设计杨学颖信息工程学院n 在前面章节中所用到的数据类型都是简单类型,每个变量只能取一个值。然而,在处理实际问题时,经常需要处理大量成批的数据,并且这些数据具有相同的类型。针对这样的问题,引进了数组这一数据类型。 第第6 6章章 数组数组数组及数组元素的概念数组及数组元素的概念n由若干个类型相同的相关数据按顺序存储在一起形成的一组同类型有序由若干个类型相同的相关数据按顺序存储在一起形成的一组同类型有序数据的集合,称为数组数据的集合,称为数组。如果用一个统一的名称标识这组数据,那么,。如果用一个统一的名称标识这组数据,那么,这个名字就称为数组名,构成数组的每一个数据项称为数组的元素,数
2、这个名字就称为数组名,构成数组的每一个数据项称为数组的元素,数组元素不仅具有相同的数据类型,而且组元素不仅具有相同的数据类型,而且在内存中将占用一段连续的存储在内存中将占用一段连续的存储单元单元。每一个数组元素可通过数组名及其在数组中的位置。每一个数组元素可通过数组名及其在数组中的位置(叫下标叫下标)来确来确定,即数组元素是用数组名后跟方括号定,即数组元素是用数组名后跟方括号 括起来的下标来表示,例如,括起来的下标来表示,例如,a5,name50,list515等。数组按下标个数分类,有一维数组、二等。数组按下标个数分类,有一维数组、二维数组维数组,以此类推,二维数组以上的数组称为多维数组。,
3、以此类推,二维数组以上的数组称为多维数组。n 根据数组元素类型的不同,数组可分为根据数组元素类型的不同,数组可分为数值数组数值数组,字符数组字符数组、指针数组指针数组、结构体类型数组结构体类型数组等多种类型。数组同其他类型的变量一样,等多种类型。数组同其他类型的变量一样,也遵循也遵循“先定义,后使用先定义,后使用”的原则。的原则。 6.1 一维数组一维数组 6.2 二维数组二维数组 6.3 字符数组字符数组 6.4 应用举例应用举例 第第6 6章章 数组数组6.1 数组说明6.1.1 一维数组的定义6.1.2 一维数组引用6.1.3 一维数组的初始化6.1.4 一维数组应用举例(排序与查找)6
4、.1.1 一维数组的定义n数组由若干个相同数据类型的变量按照一定的规则组成,其中每一个变量称为数组元素。数组元素用数组名和下标来确定。 n若数组元素在数组中的位置可以只通过一个序号(即下标)确定,这样的数组称为一维数组。n一维数组的定义格式如下: 类型说明符 数组名常量表达式; 例如: int a10; float score5; “类型说明符”:是数组元素的数据类型。 “数组名”: 遵循C语言标识符规则。 “常量表达式”:表示数组中有多少个元素,即数组的长度。它可以是整型常量、整型常量表达式或符号常量。 以下数组定义是正确的:#define N 10float score1N, score2
5、N;int num10+N;char c26;以下数组定义是不正确的:int array(10); int n; float scoren; char str ; 数组在内存的存放n数组下标从0开始。n一维数组的数组元素在内存里按顺序存放。n数组名代表数组的首地址,即score的值与score0 的地址值相同。 score0score1score2score3score491.534.567.572.084.0低地址低地址高地址高地址score数组数组6.1.2 数组引用 n数组必须先说明,后引用(使用),在C语言中,只能逐个引用数组元素,不能一次引用数组中的全部元素。n数组元素的表示形式为
6、数组名下标n下标可以是整形常量或整形表达式。例如,b0=b3+b1-b2*2【例6.1】数组元素的引用。#include stdio.h void main()int i,a5; for(i=0;i=0;i-) /*对数组元素的输出*/printf(%d,ai);运行结果如下:43210说明: 下标从0开始(下界为0),数组的最大下标(上界)是数组长度减1。 例如: int a10; scanf (%d,&a10); /* 下标越界 */ C编译系统不做越界检查,如果引用的数组元素编译系统不做越界检查,如果引用的数组元素超出数组范围会破坏其他变量的值。超出数组范围会破坏其他变量的值。
7、是是引用引用数组元素数组元素时,时,根据数组的根据数组的和和数,计算出数,计算出该元素的实际地址,该元素的实际地址,取出该地址的取出该地址的进行操作。进行操作。如引用如引用 score2:(1)计算计算 2000+2*4=2008(2)取出取出2008的内容的内容2000H2004H2008H200CH218CHscore0score1score2score3score491.534.567.572.084.0初始化:在定义数组时给数组元素赋初值。1在定义数组时,对全部数组元素赋初值 例如:int a5=0,1,2,3,4;此时可以省略数组长度,例如:int a =0,1,2,3,4;2在定义
8、数组时,对部分数组元素赋初值 例如:int a5=1,2,3;系统为其余元素赋 0 。3当初值的个数多于数组元素的个数时,编译出错 例如: int a5=0,1,2,3,4,5; 6.1.3 数组的初始化6.1.4 数组应用举例#include stdio.hvoid main()int i,a10=1,2,3,4;for(i=0; i10; i+)printf(“a%d = %dn”,i,ai);执行结果为:#includemain() int a10, s; a0=1; a1=2; a2=3; a3=4; a4=5; a5=6; a6=7; a7=8; a8=9; a9=10; s=a0+
9、a1+a2+a3 +a4+a5+a6 +a7 +a8+a9; printf(“a0+a1+a9=%d”,s);#includemain() int a10, i, s=0; for(i=0; i=9; i+) ai = i+1; for(i=0; i=9; i+) s = s+ ai; printf(“a0+a1+a9=%d”,s);【例6.2】利用输入函数逐个输入数组中的各个元素。#include stdio.hvoid main() int i,a5; /*定义一个整形变量i与一个一维数组*/ for (i=0; i5;i=i+1) /*数组的输入与输出*/ scanf(%d,&a
10、i); printf(%dn,ai); 6.1.46.1.4 数组应用举例数组应用举例【例例6.3】 读入读入10个整数,然后输出最大的数。个整数,然后输出最大的数。#include main() int i,max,a10; printf(input 10 numbers:n); for(i=0;i10;i+) scanf(%d,&ai); max=a0; for(i=1;imax) max=ai; printf(max=%dn,max);执行结果为:执行结果为:6.1.46.1.4 数组应用举例数组应用举例运行结果为:运行结果为:思考题:输出最思考题:输出最小的数?小的数?1.将最
11、小的数找将最小的数找出并放在数组的出并放在数组的第一个元素中。第一个元素中。e5-4.c2.将输入的十个数按将输入的十个数按照从小到大排序输出。照从小到大排序输出。 e5-5max.c e5-5.c6.1.4 数组的引用(排序与查找)1冒泡法排序 #include stdio.hvoid main() int a10;int i,j,t;printf(input 10 numbers:n);for(i=0;i10;i+) /*输入数组元素值*/scanf(%d,&ai);printf(n);6.1.4 数组的引用(排序与查找)for(j=1;j=9;j+) /*相邻二个数相比n-1次*
12、/for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t;/*交换*/ printf(the sorted number:n); for(i=0;iaj+1#include#define N 10main() int aN,i,j,t; printf(input ten number:n); for(i=0;iN;i+) scanf(%d,&ai); printf(n); for(i=0;iN-1;i+) for(j=0;jaj+1) t=aj;aj=aj+1;aj+1=t; printf(the sorted number:n); for(i=0;iN;i+) prin
13、tf(%5d,ai);程序程序假假选择法排序选择法排序1 97 49 38 13 76 6513 49 38 97 76 65kj76kjjkjj139797 76 38 13 49 6549kjjjkj386597 76 65 13 49 38491397 76 65 49 13 3897 76 65 49 38 133813结果:结果:第第5轮:轮:第第4轮:轮:第第3轮:轮:第第2轮:轮:第第1轮:轮:#define N 10main() int i,j,k,t,aN; printf(input N numbers:n); for(i=0;iN;i+) scanf(“%d”,&a
14、i);/输入N个数 printf(n); for(i=0;iN-1;i+) /执行N-1轮比较 k=i; for(j=i+1;jak) /遇到比当前元 k=j; /素大的数,记下k if(k!=i) t=ai;ai=ak;ak=t; printf(the sorted numbers:n); for(i=0;iN;i+) printf(“%3d”,ai); /输出数组输入10个数给a0 a9 i=0i由0到8共执行9次循环 k=i j=i+1 当jak6.1.4 数组的引用(排序与查找)2折半查找法(只能对有序数列进行查找)【例6.5】使用折半查找法在一批有序数列中查找给定的数x。算法分析:设
15、n个有序数(从小到大)存放在数组an中,要查找的数为x。用变量bot、top和mid分别表示查找数据下界、顶界和中间,mid=(top+bot) /2,折半查找的算法如下。(1) x=amid,则已找到退出循环,否则进行下面的判断。(2) xamid,x必定落在mid+ltop的范围之内,即bot=mid+l。(4)在确定了新的查找范围后,重复进行以上比较,直到找到或者bot=top。 6.1.4 数组的引用(排序与查找)#include stdio.h#define N 10 /*N代表数据的个数*/void main()int aN=1,4,7,13,16,19,28,36,49,60;
16、int mid,bot,top,x,find; printf(input the number you want find:n);scanf(%d,&x);printf(n);6.1.4 数组的引用(排序与查找) bot=0;top=N-1; /*给数组下界和上界赋初值*/find=0; /* find=0代表没有找到*/while(bot=top & find=0)mid=(top+bot)/2;/*计算中间要比较的元素下标*/if(x=amid) find=1;break; /*查找成功*/else if(xamid)top=mid-1; /*数据X在下半部分*/elseb
17、ot=mid+1; /*数据X在上半部分*/6.1.4 数组的引用(排序与查找)if(find=1) printf(the number is found the no.%d!n,mid);else printf(the number is not found!n); 6.1.4 数组的引用数组的引用例例6.5 用一维数组求斐波纳契(用一维数组求斐波纳契(Fibonacci)数列的前数列的前20项。项。 定义一个一维数组定义一个一维数组a20,则,则 a0=1,a1=1,a2=a0+a1,a3=a1+a2 ,a19=a17+a18。#include void main() long int f
18、20=1,1; /* 初始化斐波纳契数列的初始化斐波纳契数列的头两个数头两个数 */ int j; for(j=2; j20; j+) /* 循环循环18次求斐波纳契数列次求斐波纳契数列的后的后18项项 */ fj=fj-1+fj-2; /*新的斐波纳契数列的一个数等新的斐波纳契数列的一个数等于前两个数之和于前两个数之和*/ for(j=0; j20; j+) printf(“%15ld”,fj); if(j+1)%5=0) /* 每输出每输出5个斐波纳契数换个斐波纳契数换行行 */ printf(“n”); 程序运行结果:程序运行结果: 1 1 2 3 51 1 2 3 5 8 13 21
19、34 55 8 13 21 34 55 89 144 233 377 610 89 144 233 377 610 987 1597 2584 4181 6765 987 1597 2584 4181 6765 程序说明:用数组的初始化的方法,将斐波纳契数程序说明:用数组的初始化的方法,将斐波纳契数列的头两个数列的头两个数1 1、1 1分别存入到数组分别存入到数组a0a0、a1a1,从第,从第三项开始,使用循环语句将各项存入到数组元素中。三项开始,使用循环语句将各项存入到数组元素中。最后赋值结束后,一次性输出数组元素的值,且每一最后赋值结束后,一次性输出数组元素的值,且每一行输出行输出5 5个
20、斐波纳契数。个斐波纳契数。一维数组题型总结:4、随机给一维数组赋值,输出最大或者最小几个元素的平均值。1、一维数组排序(冒泡或选择)。2、统计一维数组中满足条件的元素个数。3、在已排序的数组中插入一个数据,保证数组的有序性。本节重点n数组的定义与引用n一维数组与二维数组的定义与应用n编程应用示例(冒泡排序、斐波纳纳契)n数组的存储表示n数组的初始化6.26.2二维数组二维数组二维数组中的每个元素都有两个下标,它的一般定义形式为: 类型 数组名整形常量表达式1整形常量表达式2二维数组元素的表示形式为:例如:float a34;定义了一个名为a的34二维数组(3行4列),该数组共有12个元素,每个
21、元素都是一个float型变量。数组名下标1下标2 例如:a23、a10 习惯上将第一维下标称为行下标,第二习惯上将第一维下标称为行下标,第二维下标称为列下标。每维下标均从维下标称为列下标。每维下标均从0开始。开始。因此,上述二维数组因此,上述二维数组a的的12个元素按行个元素按行和列的排列如下:和列的排列如下:a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a236. 2 .1 二维数组二维数组6.2.2 6.2.2 多维数组多维数组 多于二维的数组称为多维数组。多维数组的定义及数组元素的引用类似于二维数组,只是需要相应维数的下标。 例如:int cube5
22、64; /* cube是int型三维数组 */float data3492; /* data是float型四维数组 */cube013=20;data1051=0.0;6.2.3 6.2.3 数组的存储表示数组的存储表示 为了便于通过下标来访问数组元素,C语言为每个数组都分配一块连续的存储空间,而且这块存储空间的大小足以存放该数组的所有元素。 对C语言而言,数组元素相对于数组首地址的存放次序满足如下三个条件: 对于一维数组,元素按照下标从小到大依次存放。这样,对对于一维数组,元素按照下标从小到大依次存放。这样,对于一维数组于一维数组a a而言,数组中任一元素而言,数组中任一元素aiai的地址可
23、表示为:的地址可表示为:ai的地址=a的首地址+i*sizeof(数组元素类型) 6.2.3 6.2.3 数组的存储表示数组的存储表示(2) (2) 对于二维数组,元素是按行存放的。设数组定义为:对于二维数组,元素是按行存放的。设数组定义为: int a45int a45,则,则a a中各元素的存放顺序为:中各元素的存放顺序为: 由此推出二维数组a中任一元素aij的地址可表示为: aijaij的地址的地址= a= a的首地址的首地址+(i+(i* *5+j)5+j)* * sizeof( sizeof(数组元素类型数组元素类型) )6.2.3 6.2.3 数组的存储表示数组的存储表示(3) (
24、3) 对于多维数组,元素则是广义按行存放的,即第一维的下标变对于多维数组,元素则是广义按行存放的,即第一维的下标变化最慢,第二维次之,化最慢,第二维次之,最右边一维的下标变化最快。设数组定,最右边一维的下标变化最快。设数组定义为义为int a345int a345,则,则a a中各元素的存放顺序为:中各元素的存放顺序为:即对上述三维数组即对上述三维数组a而言,而言,a中任一元素中任一元素aijk的地址可表示为:的地址可表示为:aijk的地址的地址= a的首地址的首地址+(i*4*5+j*5+k)* sizeof(数组元素类型数组元素类型)6.2.4 6.2.4 二维数组初始化二维数组初始化与一
25、维数组的初始化一样,二维数组的初始化也是在定义数组时进行,只不过在形式上略有不同而已。对二维数组的初始化可按下面两种方式来进行:(1) (1) 按行分段赋初值。按行分段赋初值。例如:int a23=1,2,3,4,5,6 (2) (2) 将二维数组看作一维数组,并按一维数组的方式对其初将二维数组看作一维数组,并按一维数组的方式对其初 始化始化。例如: int a23=1,2,3,4,5,6int a23=1,2,3,4,5,6 与一维数组的初始化类似的是,C语言对二维数组的初始化也有下面几点规定:(1) (1) 可以只对部分元素赋初值,未赋初值的元素自动取零值。可以只对部分元素赋初值,未赋初值
26、的元素自动取零值。 (2) (2) 如对全部元素赋初值,则第一维的长度可以不给出。如对全部元素赋初值,则第一维的长度可以不给出。 C语言程序设计 第六章数组int a33=1,2,3;int a 33=0,1,0,0,2,3;例如:例如:int a23=1,2,3,4,5,6;可以写为:可以写为:int a 3=1,2,3,4,5,6;#include stdio.hvoid main()int j,k,a34=1,2,3,4,4,5,6,7,7,8,9,2;for(j=0; j3; j+) for(k=0; k4; k+) printf(a%d%d = %dn,j,k,ajk);执行结果为:
27、执行结果为:【例6.6】 读入一个读入一个44的整型矩阵,然后将其转置并输出。的整型矩阵,然后将其转置并输出。#include stdio.hvoid main()int a44,t,i,j;printf(Input 4*4 real numbers:n);for(i=0; i4; i+)for(j=0; j4; j+)scanf(%d,&aij);for(i=0; i4; i+)for(j=i+1; j4; j+) /* 交换元素交换元素aij和和aji的值的值 */ t=aij aij=aji;aji=t;printf(The result is:n);for(i=0; i4; i
28、+)for(j=0; j4; j+) printf(%d ,aij); /* 输出第输出第i行行 */putchar(n);6. 3 字符数组字符数组6.3.1 字符数组的定义字符数组的定义 一维字符数组的定义格式如下:一维字符数组的定义格式如下: 字符类型说明符字符类型说明符 数组名数组名1常量表达式常量表达式1, 数组名数组名2常量表达式常量表达式2,; 例如: char c15,c210; 该语句定义了一个数组名为该语句定义了一个数组名为c1、一个数组名为、一个数组名为c2的一维字符数组。的一维字符数组。 例如例如:c10=C c10=h c12=i c13=n c14=a 字符数组在内
29、存中的存储形式如图字符数组在内存中的存储形式如图6-5所示,以上述的数组所示,以上述的数组c1为例,假为例,假设内存起始地址是设内存起始地址是2000。这里,一个字符元素占。这里,一个字符元素占1个字节。个字节。 6. 字符数组字符数组 内存地址 2000 2001 内存地址 2002 2003 2004 图6-5 字符数组在内存中的存储形式 c10=Cc11=hc12=ic13=n c14=a 6.3.1 字符数组的定义字符数组的定义6. 字符数组字符数组6.3.1 字符数组的定义字符数组的定义二维字符数组的定义格式如下:二维字符数组的定义格式如下: 字符类型说明符字符类型说明符 数组名数组
30、名 常量表达式常量表达式11常量表达式常量表达式2,2,; ; char c55;char c55;该语句定义了一个数组名为该语句定义了一个数组名为c c的二维字符数组。数组的二维字符数组。数组c c包含包含2525个数个数组元素,每个数组元素存储一个字符。组元素,每个数组元素存储一个字符。 二维字符数组可以用来表示字符串数组,即可看做由字符二维字符数组可以用来表示字符串数组,即可看做由字符串作于元素构成的一维数组。串作于元素构成的一维数组。6. 字符数组字符数组6.3 6.3 字符字符数组数组6.3.1 6.3.1 字符数组字符数组的定义的定义考虑下面的定义:char s510char s5
31、10; ; 首先,s是一个二维字符数组,共有5*10=50个元素,每个元素又相当于一个字符变量。s同时又可看作是一个“一维数组”,该一维数组有5个数组元素s0s4,每个元素又是一个长度为10的一维字符数组,或每个元素是一个长度小于等于9的字符串变量。 C语言程序设计 第五章数组6.3.2 字符数组的引用与初始化字符数组的引用与初始化 1. 字符数组的引用格式字符数组的引用格式 一维字符数组的引用格式:数组名下标 二维字符数组的引用格式:数组名下标1下标2 2. 字符数组的初始化字符数组的初始化 字符数组的初始化主要有以下几种形式: 1)逐个为字符数组的各数组元素赋初值逐个为字符数组的各数组元素
32、赋初值。即用字符常量对字符数组进行初始用字符常量对字符数组进行初始化。化。例如: char ch7= a, b, c,d, e, f; 相当于: ch0= a; ch1= b; ch2= c; ch3= d; ch4= e; ch5= f; 数组元素数组元素ch6未赋值,默认是未赋值,默认是0,即,即ASCII码为码为0的字符的字符0 2)用字符串对字符数组初始化用字符串对字符数组初始化。例如: char ch7=abcdef; char ch7= abcdef; char ch7=a, b, c, d, e, f, 0; 上述三种形式等价。6. 字符数组字符数组6.3.2 字符数组的引用与初
33、始化字符数组的引用与初始化可以省略数组元素的个数,通过初值来确定。可以省略数组元素的个数,通过初值来确定。例如: char ch =a, b, c, d, e, f, 0;等价于char ch7=a, b, c, d, e, f, 0;注意字符串赋初值与字符常量赋初值的区别:注意字符串赋初值与字符常量赋初值的区别:例如:char str =“program”; 该方式赋予数组8个字符, 最后一个为“0”,而char str =p,r,o,g,r,a,m; 该方式赋予数组7个字符 3. 字符数组的引用与初始化实例 【例6. 4】通过键盘给一个2*3的字符数组输入数据,并且输出该字符数组。 分析分
34、析:因为题中要求的字符数组是二维的,所以需要使用双重循环语句控制字符的输入和输出。程序如下: 6. 字符数组字符数组6.3.2 字符数组的引用与初始化字符数组的引用与初始化 运行程序后输入:运行程序后输入: abcdef 输出结果如下:输出结果如下: Output the array: a b c d e f6. 字符数组字符数组 #include void main( ) int i,j; char ch23; printf(Please input data,press enter to end:n); for(i=0;i2;i+) for(j=0;j3;j+) scanf(%c,&
35、;chij); printf(Output the array:n); for(i=0;i2;i+) for(j=0;j3;j+) printf(%5c,chij); printf(n); 6.3 6.3 字符数组字符数组6.3.3 6.3.3 字符串变量的表示字符串变量的表示在C语言中,没有专门的字符串变量类型,不过可用一个一维一维字符数组来表示一个字符串变量字符数组来表示一个字符串变量。在实际应用时,从该字符数组的首地址开始,由左至右依次存放字符串中的字符,并在最后一个字符之后再额外存放一个0字符作为该字符串的结束标志。0发音为“null”,不是0字符0,而是ASCII值为0的字符。因此,
36、用一维字符数组来表示字符串变量,该数组的长度要比想表示的字符串变量的最大取值长度多1。例如例如Language在内存中保存的情况如图在内存中保存的情况如图6-6所示:所示: 图图6-6 字符串字符串Language在内存中保存的情况在内存中保存的情况当字符数组用来存储字符串时,字符数组的长度比字符串长度当字符数组用来存储字符串时,字符数组的长度比字符串长度大大1.C语言程序设计 第六章数组L a n g u a g e 0 结束标志结束标志6.3.4 字符串的输入和输出 字符数组和字符串都可以以单个字符的形式逐个输入和输出,也可以以整体的形式输入和输出。其方式主要有两种: 1. 用格式说明符来
37、控制字符数组和字符串的输入和输出 2. 用字符串输入和输出函数实现字符数组和字符串的输入和输出 1 1、逐个字符输入、逐个字符输入/ /输出输出 (1)在标准输入/输出函数printf和scanf中使用%c格式描述符 (2)使用getchar和putchar函数。6.3.4 字符串的输入和输出nstr为字符数组名,代表该数组的起始地址。n输入时,系统自动在每个字符串后加入结束符0。n若同时输入多个字符串,则以空格或回车符分隔。6.3.4 字符串的输入和输出How0are0you06.3.4 字符串的输入和输出注意不同: 对于“%s”格式符和调用scanf函数时,空格和换行符都作为字符串的分隔符
38、而不能读入。系统将自动地在字符串最后加上结束符0作为输出结束标志。也就是说只截取空格前的部分作为字符串付给字符数组。若需实现输入含有空格的字符串赋给字符数组,可使用gets( )函数。在使用gets( )函数和puts( )函数时,一次只能输入或输出一个字符串,对于对于“%s”格式符,回车和空格都是字符串输入结束标志;格式符,回车和空格都是字符串输入结束标志;对于对于“%c”格式符和格式符和gets ( ),回车是字符串输入结束标志,空格是字符串一,回车是字符串输入结束标志,空格是字符串一部分;部分; puts( )函数输出之后换行,而函数输出之后换行,而printf( )输出之后不换行。输出
39、之后不换行。6.3 6.3 字符数组字符数组6.3.5 6.3.5 常用字符串处理函数常用字符串处理函数1. puts(1. puts(字符串字符串) ) (需要 #include )将给定字符串输出到标准输出设备上。在输出时将字符串结束标志0转换成n,即输出完字符串后换行。 2. gets(2. gets(字符串变量字符串变量) ) (需要 #include ) 从标准输入设备(通常为键盘)上读入一个字符串(以回车作(以回车作为输入结束标志)为输入结束标志)到字符串变量所对应的字符数组中,并且返回一个函数值,它是字符串变量所对应的字符数组的起始地址。C语言程序设计 第六章数组 #includ
40、e void main( ) char ch10; for(i=0;i10;i+) scanf(%c,&chi); puts(ch); #include void main( ) int i; char ch10; gets(ch); for(i=0;i10;i+) printf(%c,chi); 6.3.5 字符串处理函数字符串处理函数 3. 3.字符串长度函数字符串长度函数strlen( )strlen( ) ( (需要#include ) 格式:strlen (字符数组名/字符串) 功能:测量字符数组/字符串的实际长度(不含字符串结束标志0)并作为 函数值返回。6. 字符数组字符
41、数组 #include #include void main( ) char ch10= 12345; printf(%dn,strlen(ch); printf(%d,strlen(12345); 注意:此时运行程序输出的结果都是注意:此时运行程序输出的结果都是5,尤其应注意,尤其应注意strlen(ch)的输出的输出结果也是结果也是5,而不是,而不是6,也不是,也不是10。6.3 6.3 字符数组字符数组4. strcpy(4. strcpy(字符串变量字符串变量, ,字符串字符串)()(需要#include ) 把字符串复制到字符串变量所对应的字符数组中,通常用于对字符串变量赋值。5.
42、strcat(5. strcat(字符串变量字符串变量, ,字符串字符串) ) (需要 #include ) 连接两个字符串,把字符串连接到字符串变量中的当前串的后面,结果放在字符串变量所对应的字符数组中。函数调用后返回一个值,它是字符串变量所对应的字符数组的起始地址。 C语言程序设计 第五章数组6.3.5 字符串处理函数字符串处理函数 4.字符串复制函数strcpy( ) ( (需要#include ) 格式:strcpy (字符数组名1,字符数组名2) strcpy (字符数组名,字符串) 功能:将字符数组2/字符串的内容复制给字符数组1中。其返回值是字符数组 1的首地址。 注意:字符数组注意:字符数组1的长度也应该足够长,才能容纳复制后的全部内容。的长度也应该足够长,才能容纳复制后的全部内容。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年计算机二级考试重点知识试题及答案
- 2024年精算师高级考试复习与考前准备试题及答案
- 深层次的地理文化研究试题及答案
- 投资者行为分析试题及答案
- 全国人教版初中信息技术七年级上册第二单元第6课一、《加工图片素材》教学设计
- 2024年监理工程师面试技巧试题及答案
- 孩子心理疏导试题及答案
- 2025年第一季度可燃冰开采EPC总承包合同甲烷泄漏预案
- 投资咨询与管理的最佳实践试题及答案
- 安全用电教育主题班会
- GB/T 26480-2011阀门的检验和试验
- 案例:收球器盲板伤人事故
- 《员工思想培训》课件
- 网络主题 大锁孙天宇小品《时间都去哪儿了》台词
- 精神科症状学演示课件
- 文学类文本聂志红《在那桃花盛开的地方》阅读练习与答案
- DB13T 5080-2019 SBS改性沥青生产过程动态质量监控规范
- 义务教育物理课程标准(2022年版word版)
- 《CSS样式表的使用》教学设计
- 外环长安大道、东方大道段天然气管道工程管道试压吹扫方案资料(共13页)
- 中国花鸟画简史-共60页PPT课件
评论
0/150
提交评论