《C语言程序设计利用数组处理批量数据实用教案》由会员分享,可在线阅读,更多相关《C语言程序设计利用数组处理批量数据实用教案(98页珍藏版)》请在金锄头文库上搜索。
1、前几章使用的变量都属于基本类型,例如整型、字符型、浮点型数据,这些都是简单的数据类型。对于(duy)有些数据,只用简单的数据类型是不够的,难以反映出数据的特点,也难以有效地进行处理。第1页/共97页第一页,共98页。如果有1000名学生,每个学生有一个成绩,需要求(yoqi)这1000名学生的平均成绩。用s1,s2,s3,s1000表示每个学生的成绩,能体现内在联系。C语言用方括号中的数字表示下标,如用s15表示数组名第2页/共97页第二页,共98页。数组是一组有序数据的集合。数组中各数据的排列是有一定规律(gul)的,下标代表数据在数组中的序号用一个数组名和下标唯一确定数组中的元素数组中的每
2、一个元素都属于同一个数据类型第3页/共97页第三页,共98页。6.1怎样(znyng)定义和引用一维数组6.2怎样(znyng)定义和引用二维数组6.3字符数组第4页/共97页第四页,共98页。6.1怎样怎样(znyng)定义和引定义和引用一维数组用一维数组6.1.1怎样定义一维数组6.1.2怎样引用一维数组元素(yuns)6.1.3一维数组的初始化6.1.4一维数组程序举例第5页/共97页第五页,共98页。6.1.1怎样怎样(znyng)定义一定义一维数组维数组一维数组是数组中最简单的它的元素只需要用数组名加一个下标,就能唯一(wiy)确定要使用数组,必须在程序中先定义数组第6页/共97页第
3、六页,共98页。6.1.1怎样怎样(znyng)定义一定义一维数组维数组定义一维数组的一般形式为:类型符数组名常量表达式;数组名的命名规则(guz)和变量名相同,遵循C语言标识符规则(guz)。如inta10;数组名第7页/共97页第七页,共98页。6.1.1怎样怎样(znyng)定义一定义一维数组维数组定义一维数组的一般形式为:类型符数组名常量表达式;数组名的命名规则(guz)和变量名相同,遵循C语言标识符规则(guz)。如inta10;数组长度(chngd)第8页/共97页第八页,共98页。6.1.1怎样怎样(znyng)定义一维定义一维数组数组定义一维数组的一般形式为:类型符数组名常量表
4、达式;数组名的命名规则(guz)和变量名相同如inta10;10个元素:a0,a1,a2,a9每个元素(yun s)的数据类型a0a1a2a3a7a8a9第9页/共97页第九页,共98页。6.1.1怎样怎样(znyng)定义一维定义一维数组数组定义一维数组的一般形式为:类型符数组名常量表达式;“常量表达式”:表示(biosh)数组中有多少个元素,即数组的长度。它可以是整型常量、整型常量表达式或符号常量。inta4+6;合法intn=10;intan;不合法(hf)第10页/共97页第十页,共98页。以下以下(yxi)(yxi)数组定义是正确的:数组定义是正确的:#define N 10#def
5、ine N 10float score1N, score2N;float score1N, score2N;int num10+N;int num10+N;char c26;char c26;以下数组定义以下数组定义以下数组定义以下数组定义(dngy)(dngy)是不正确的:是不正确的:是不正确的:是不正确的:int array(10); int array(10); int n; float scoren; int n; float scoren; double ba. d; double ba. d; char str ; char str ; 6.1.1怎样怎样(znyng)定义一维定义
6、一维数组数组第11页/共97页第十一页,共98页。数组在内存(ni cn)的存放数组下标从数组下标从0 0开始。开始。一维数组的数组元素在内一维数组的数组元素在内存里按顺序存放。存里按顺序存放。数组名代表数组名代表(dibio)(dibio)数组数组的首地址,即的首地址,即scorescore的值的值与与score0 score0 的地址值相同。的地址值相同。 score0score1score2score3score491.534.567.572.084.0低地址低地址高地址高地址score数组第12页/共97页第十二页,共98页。6.1.2 怎样怎样(znyng)引用一引用一维数组元素维数
7、组元素在定义数组并对其中(qzhng)各元素赋值后,就可以引用数组中的元素注意:只能引用数组元素而不能一次整体调用整个数组全部元素的值第13页/共97页第十三页,共98页。6.1.2 怎样怎样(znyng)引用一维引用一维数组元素数组元素引用数组元素(yuns)的表示形式为:数组名下标如a0=a5+a7-a2*3合法intn=5,a10;an=20;合法(hf)第14页/共97页第十四页,共98页。6.1.2 怎样怎样(znyng)引用一引用一维数组元素维数组元素例6.1对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。解题思路:定义一个长度为10的数组,数组定
8、义为整型要赋的值是从0到9,可以用循环(xnhun)来赋值用循环(xnhun)按下标从大到小输出这10个元素第15页/共97页第十五页,共98页。#includeintmain()inti,a10;for(i=0;i=0;i-)printf(%d,ai);printf(n);return0;使a0a9的值为090123456789a0a1a2a3a4a5a6a7a8a9第16页/共97页第十六页,共98页。#includeintmain()inti,a10;for(i=0;i=0;i-)printf(%d,ai);printf(n);return0;先输出(shch)a9,最后输出(shch)
9、a00123456789a0a1a2a3a4a5a6a7a8a9第17页/共97页第十七页,共98页。说明说明(shumng)(shumng)(shumng)(shumng): 下标从下标从0 0 0 0开始(下界为开始(下界为0 0 0 0),数组的最大下标(上),数组的最大下标(上界)是数组长度减界)是数组长度减1 1 1 1。 例如:例如: int a10; int a10; int a10; int a10; scanf (%d,&a10); /* scanf (%d,&a10); /* scanf (%d,&a10); /* scanf (%d,&a10); /* 下标越界下标越界
10、*/*/*/*/ C编译系统不做越界检查,如果引用(ynyng)的数组元素超出数组范围会破坏其他变量的值。第18页/共97页第十八页,共98页。 是下标运算符,引用(ynyng)数组元素时,根据数组的首地址和下标数,计算出该元素的实际地址,取出该地址的内容进行操作。如引用如引用 score2:(1)计算计算(j sun) 2000+2*4=2008(2)取出取出2008的内容的内容2000H2004H2008H200CH2010Hscore0score1score2score3score491.534.567.572.084.0第19页/共97页第十九页,共98页。6.1.3一维数组的初始化一
11、维数组的初始化在定义数组的同时,给各数组元素(yuns)赋值inta10=0,1,2,3,4,5,6,7,8,9;inta10=0,1,2,3,4;相当于inta10=0,1,2,3,4,0,0,0,0,0;inta10=0,0,0,0,0,0,0,0,0,0;相当于inta10=0;inta5=1,2,3,4,5;可写为inta=1,2,3,4,5;inta5=0,1,2,3,4,5;编译报错第20页/共97页第二十页,共98页。6.1.4一维数组程序一维数组程序(chngx)举例举例例6.2用数组处理求Fibonacci数列问题解题思路(sl):例5.8中用简单变量处理的,缺点不能在内存中
12、保存这些数。假如想直接输出数列中第25个数,是很困难的。如果用数组处理,每一个数组元素代表数列中的一个数,依次求出各数并存放在相应的数组元素中第21页/共97页第二十一页,共98页。#includeintmain()inti;intf20=1,1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;i20;i+)if(i%5=0)printf(“n”);printf(“%12d”,fi);printf(n);return0;第22页/共97页第二十二页,共98页。例6.3有10个地区的面积,要求对它们按由小到大的顺序排列。解题思路:排序的规律有两种:一种是“升序”,从小到大
13、;另一种是“降序”,从大到小把题目抽象(chuxing)为:“对n个数按升序排序”采用起泡法排序第23页/共97页第二十三页,共98页。985420895420859420854920854290854209大数沉淀(chndin),小数起泡a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 第24页/共97页第二十四页,共98页。854209584209548209542809542089a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 第25页/共97页第二十五页,共98页。5420894520894
14、25089420589a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 第26页/共97页第二十六页,共98页。420589240589204589a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 第27页/共97页第二十七页,共98页。204589024589a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 第28页/共97页第二十八页,共98页。for(i=0;iai+1) for(i=0;iai+1) for(i=0;iai+1) for(i=0;ia
15、i+1) for(j=0;j5;j+)第29页/共97页第二十九页,共98页。inta10;inti,j,t;printf(input10numbers:n);for(i=0;i10;i+)scanf(%d,&ai);printf(n);for(j=0;j9;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;printf(thesortednumbers:n);for(i=0;i10;i+)printf(%d,ai);printf(n);第30页/共97页第三十页,共98页。6.2 怎样怎样(znyng)定义和引定义和引用二维数组用二维数组245618471243160
16、0234627573045201817252020245814361427117510461976147720181分队分队(fndu)2分队分队(fndu)3分队分队队员队员1队员队员2队员队员3队员队员4队员队员5队员队员6float pay36;第31页/共97页第三十一页,共98页。6.2.1怎样定义二维数组6.2.2怎样引用二维数组的元素6.2.3二维数组的初始化6.2.4二维数组程序(chngx)举例6.2 怎样定义怎样定义(dngy)和引用二和引用二维数组维数组第32页/共97页第三十二页,共98页。二维数组定义的一般形式(xngsh)为类型符数组名常量表达式常量表达式;如:fl
17、oata34,b510;二维数组可被看作是一种特殊的一维数组:它的元素又是一个一维数组例如,把a看作是一个一维数组,它有3个元素:a0、a1、a2每个元素又是一个包含4个元素的一维数组6.2.1怎样怎样(znyng)定义二维定义二维数组数组第33页/共97页第三十三页,共98页。a00a01a02a03a10a11a12a13a20a21a22a23a0a1a2第34页/共97页第三十四页,共98页。a00a01a02a03a10a11a12a13a20a21a22a23逻辑逻辑(lu j)存储存储内存中的存储内存中的存储(cn ch)顺序顺序第35页/共97页第三十五页,共98页。二维数组元
18、素的表示形式为:数组名下标(xibio)下标(xibio)b12=a23/2合法for(i=0;im;i+)printf(“%d,%dn”,ai0,a0i);合法6.2.2怎样怎样(znyng)引用二维引用二维数组的元素数组的元素第36页/共97页第三十六页,共98页。inta34=1,2,3,4,5,6,7,8,9,10,11,12;inta34=1,2,3,4,5,6,7,8,9,10,11,12;inta34=1,5,9;等价(dngji)于inta34=1,0,0,0,5,0,0,0,9,0,0,0;inta34=1,5,6;相当于inta34=1,5,6,0;6.2.3二维数组的初始
19、化二维数组的初始化第37页/共97页第三十七页,共98页。inta34=1,2,3,4,5,6,7,8,9,10,11,12;等价(dngji)于:inta4=1,2,3,4,5,6,7,8,9,10,11,12;inta4=0,0,3,0,10;合法6.2.3二维数组的初始化二维数组的初始化第38页/共97页第三十八页,共98页。例6.4将一个二维数组行和列的元素(yuns)互换,存到另一个二维数组中。6.2.4二维数组程序二维数组程序(chngx)举例举例第39页/共97页第三十九页,共98页。解题思路:可以定义两个数组:数组a为2行3列,存放(cnfng)指定的6个数数组b为3行2列,开
20、始时未赋值将a数组中的元素ai j存放(cnfng)到b数组中的b ji元素中用嵌套的for循环完成6.2.4二维数组程序二维数组程序(chngx)举例举例第40页/共97页第四十页,共98页。#includeintmain()inta23=1,2,3,4,5,6;intb32,i,j;printf(arraya:n);for(i=0;i=1;i+)for(j=0;j=2;j+)printf(%5d,aij);bji=aij;printf(n);处理处理a的一行的一行(yxng)中各中各元素元素处理处理(chl)a中某一中某一列元素列元素输出输出(shch)a的的各元素各元素a元素值赋给元素值
21、赋给b相应元素相应元素第41页/共97页第四十一页,共98页。printf(arrayb:n);for(i=0;i=2;i+)for(j=0;jmax,则表示a01是已经比过的数据中值最大的,把它的值赋给max,取代了max的原值以后依此处理,最后max就是最大的值第44页/共97页第四十四页,共98页。 for i=0 to 2 for j=0 to 3max=aijrow=Icolum=jaijmax真 max=a00输出:max,row,colum假第45页/共97页第四十五页,共98页。记行号(xn ho)inti,j,row=0,colum=0,max;inta34=1,2,3,4,
22、9,8,7,6,-10,10,-5,2;max=a00;for(i=0;i=2;i+)for(j=0;jmax)max=aij;row=i;colum=j;printf(max=%dnrow=%dncolum=%dn,max,row,colum);记最大值记列号第46页/共97页第四十六页,共98页。6.3.1怎样定义字符(zf)数组6.3.2字符(zf)数组的初始化6.3.3怎样引用字符(zf)数组中的元素6.3.4字符(zf)串和字符(zf)串结束标志6.3.5字符(zf)数组的输入输出6.3.6善于使用字符(zf)串处理函数6.3.7字符(zf)数组应用举例6.3 字符字符(z f)数组
23、数组第47页/共97页第四十七页,共98页。用来存放字符数据(shj)的数组是字符数组字符数组中的一个元素存放一个字符定义字符数组的方法与定义数值型数组的方法类似6.3.1怎样怎样(znyng)定义字符定义字符数组数组第48页/共97页第四十八页,共98页。charc10;c0=I;c1=;c2=a;c3=m;c4=;c5=h;c6=a;c7=p;c8=p;c9=y;6.3.1怎样定义怎样定义(dngy)字符数字符数组组Iam happyc0c1c2c3c4c5c6c7c8c9第49页/共97页第四十九页,共98页。charc10=I,a,m,h,a,p,p,y;charc10=c,p,r,o
24、,g,r,a,m;6.3.2字符字符(z f)数组的初始化数组的初始化Iam happyc0c1c2c3c4c5c6c7c8c9cpro gram0c0c1c2c3c4c5c6c7c8c9第50页/共97页第五十页,共98页。chardiamond55=,*,*,*,*,*,*,*,*;6.3.2字符字符(z f)数组的初始化数组的初始化第51页/共97页第五十一页,共98页。例6.6输出一个已知的字符串。解题( jit)思路:定义一个字符数组,并用“初始化列表”对其赋以初值用循环逐个输出此字符数组中的字符6.3.36.3.3怎样引用字符怎样引用字符怎样引用字符怎样引用字符(z f)(z f)
25、数组中的元素数组中的元素数组中的元素数组中的元素第52页/共97页第五十二页,共98页。#includeintmain()charc15=I,a,m,a,s,t,u,d,e,n,t,.;inti;for(i=0;i15;i+)printf(%c,ci);printf(n);return0;6.3.36.3.3怎样怎样怎样怎样(znyng)(znyng)引用字符数组中的元素引用字符数组中的元素引用字符数组中的元素引用字符数组中的元素第53页/共97页第五十三页,共98页。例6.7输出一个菱形图。解题思路:定义一个字符型的二维数组,用“初始化列表(libio)”进行初始化用嵌套的for循环输出字符
26、数组中的所有元素。6.3.36.3.3怎样引用字符怎样引用字符怎样引用字符怎样引用字符(z f)(z f)数组中的元素数组中的元素数组中的元素数组中的元素第54页/共97页第五十四页,共98页。#includeintmain()chardiamond5=,*,*,*,*,*,*,*,*;inti,j;for(i=0;i5;i+)for(j=0;j5;j+)printf(%c,diamondij);printf(n);return0;第55页/共97页第五十五页,共98页。在C语言中,是将字符串作为字符数组来处理的关心(gunxn)的是字符串的有效长度而不是字符数组的长度为了测定字符串的实际长度
27、,C语言规定了字符串结束标志06.3.46.3.4字符串和字符串结束字符串和字符串结束字符串和字符串结束字符串和字符串结束(jish)(jish)标志标志标志标志第56页/共97页第五十六页,共98页。0代表ASCII码为0的字符从ASCII码表可以查到,ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作(cozu)符”,即它什么也不做用它作为字符串结束标志不会产生附加的操作(cozu)或增加有效字符,只起一个供辨别的标志6.3.46.3.4字符串和字符串结束字符串和字符串结束字符串和字符串结束字符串和字符串结束(jish)(jish)标志标志标志标志第57页/共97页第五十七页,
28、共98页。charc=”Iamhappy”;可写成charc=”Iamhappy”;相当于charc11=”Iamhappy”;6.3.46.3.4字符串和字符串结束字符串和字符串结束字符串和字符串结束字符串和字符串结束(jish)(jish)标志标志标志标志第58页/共97页第五十八页,共98页。charc10=”China”;可写成charc10=”China”;从c5开始(kish),元素值均为0只显示printf(”%s”,c);6.3.46.3.4字符串和字符串结束字符串和字符串结束字符串和字符串结束字符串和字符串结束(jish)(jish)标志标志标志标志China 00000第5
29、9页/共97页第五十九页,共98页。字符数组的输入输出可以有两种方法:逐个字符输入输出(%c)整个(zhngg)字符串一次输入输出(%s)输出的字符中不包括结束符0用%s输出字符串时,printf函数中的输出项是字符数组名,不是数组元素名6.3.5 6.3.5 字符字符字符字符(z f)(z f)数组的输入输出数组的输入输出数组的输入输出数组的输入输出第60页/共97页第六十页,共98页。如果一个字符(zf)数组中包含多个0,则遇第一个0时输出就结束可以用scanf函数输入一个字符(zf)串scanf函数中的输入项c是已定义的字符(zf)数组名,输入的字符(zf)串应短于已定义的字符(zf)数
30、组的长度6.3.5 6.3.5 字符字符字符字符(z f)(z f)数组的输入输出数组的输入输出数组的输入输出数组的输入输出第61页/共97页第六十一页,共98页。charc6;scanf(”%s”,c);China系统(xtng)自动在China后面加一个06.3.5 6.3.5 字符字符字符字符(z f)(z f)数组的输入输出数组的输入输出数组的输入输出数组的输入输出第62页/共97页第六十二页,共98页。charstr15,str25,str35;scanf(”%s%s%s”,str1,str2,str3);Howareyou?6.3.5 6.3.5 字符字符字符字符(z f)(z f
31、)数组的输入输出数组的输入输出数组的输入输出数组的输入输出How00str1are00str2you?0str3第63页/共97页第六十三页,共98页。在C函数库中提供了一些(yxi)用来专门处理字符串的函数,使用方便6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数第64页/共97页第六十四页,共98页。1.puts函数(hnsh)-输出字符串的函数(hnsh)其一般形式为:puts(字符数组)作用是将一个字符串输出到终端charstr20=”China”;puts(str);输出China6.3.6 6.
32、3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数第65页/共97页第六十五页,共98页。2.gets函数(hnsh)-输入字符串的函数(hnsh)其一般形式为:gets(字符数组)作用是输入一个字符串到字符数组charstr20;gets(str);Computer6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数第66页/共97页第六十六页,共98页。3.strcat函数-字符串连接函数其一般形式为:strcat(字符数组1,字符数组2
33、)其作用(zuyng)是把两个字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串函数时使用字符串函数时,在程序在程序(chngx)开头用开头用#include 第67页/共97页第六十七页,共98页。3.strcat函数-字符串连接(linji)函数charstr130=”People”;charstr2=”China”;printf(”%s”,strcat(str1,str2);输出:PeopleChina6.3.6 6.3.6 善
34、于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数要足够要足够(zgu)大大第68页/共97页第六十八页,共98页。4.strcpy和strncpy函数(hnsh)-字符串复制strcpy一般形式为:strcpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去charstr110,str2=”China”;strcpy(str1,str2);6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数China 00000str1第69页/共97页
35、第六十九页,共98页。4.strcpy和strncpy函数-字符(zf)串复制strcpy一般形式为:strcpy(字符(zf)数组1,字符(zf)串2)作用是将字符(zf)串2复制到字符(zf)数组1中去charstr110,str2=”China”;strcpy(str1,str2);6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数China 00000str1要足够要足够(zgu)大大第70页/共97页第七十页,共98页。4.strcpy和strncpy函数(hnsh)-字符串复制strcpy一般形式
36、为:strcpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去charstr110,str2=”China”;strcpy(str1,str2);6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数数组名形式(xngsh)第71页/共97页第七十一页,共98页。4.strcpy和strncpy函数-字符串复制(fzh)strcpy一般形式为:strcpy(字符数组1,字符串2)作用是将字符串2复制(fzh)到字符数组1中去charstr110,str2=”China”;strcpy(str1,st
37、r2);6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数数组名或字符串常量(chngling)第72页/共97页第七十二页,共98页。4.strcpy和strncpy函数(hnsh)-字符串复制strcpy一般形式为:strcpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去charstr110,str2=”China”;strcpy(str1,str2);相当于strcpy(str1,”China”);6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符
38、串处理函数使用字符串处理函数使用字符串处理函数第73页/共97页第七十三页,共98页。4.strcpy和strncpy函数(hnsh)-字符串复制charstr110,str2=”China”;str1=”China”;错误str1=str2;错误6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数第74页/共97页第七十四页,共98页。4.strcpy和strncpy函数(hnsh)-字符串复制可以用strncpy函数(hnsh)将字符串2中前面n个字符复制到字符数组1中去strncpy(str1,str2,
39、2);作用是将str2中最前面2个字符复制到str1中,取代str1中原有的最前面2个字符复制的字符个数n不应多于str1中原有的字符6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数第75页/共97页第七十五页,共98页。5.strcmp函数(hnsh)-字符串比较函数(hnsh)其一般形式为strcmp(字符串1,字符串2)作用是比较字符串1和字符串2strcmp(str1,str2);strcmp(”China”,”Korea”);strcmp(str1,”Beijing”);6.3.6 6.3.6 善
40、于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数第76页/共97页第七十六页,共98页。5.strcmp函数-字符串比较函数字符串比较的规则是:将两个字符串自左至右逐个字符相比(xinb),直到出现不同的字符或遇到0为止如全部字符相同,认为两个字符串相等若出现不相同的字符,则以第一对不相同的字符的比较结果为准6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数第77页/共97页第七十七页,共98页。5.strcmp函数(hnsh)-字符串比较函数(h
41、nsh)”A”A”computer”compare”these”that”1A”$20”CHINA”CANADA”DOG”TSINGHUA”6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数第78页/共97页第七十八页,共98页。5.strcmp函数-字符串比较(bjio)函数比较(bjio)的结果由函数值带回如果字符串1=字符串2,则函数值为0如果字符串1字符串2,则函数值为一个正整数如果字符串1str2)printf(”yes”);错误(cuw)if(strcmp(str1,str2)0)printf(”
42、yes”);正确6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数第80页/共97页第八十页,共98页。6.strlen函数-测字符(zf)串长度的函数其一般形式为:strlen(字符(zf)数组)它是测试字符(zf)串长度的函数函数的值为字符(zf)串中的实际长度6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数第81页/共97页第八十一页,共98页。6.strlen函数-测字符串长度的函数charstr10=”China
43、”;printf(”%d”,strlen(str);输出结果( jigu)是5也可以直接测试字符串常量的长度strlen(”China”);6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数第82页/共97页第八十二页,共98页。7.strlwr函数(hnsh)-转换为小写的函数(hnsh)其一般形式为strlwr(字符串)函数(hnsh)的作用是将字符串中大写字母换成小写字母6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函
44、数第83页/共97页第八十三页,共98页。8.strupr函数-转换为大写(dxi)的函数其一般形式为strupr(字符串)函数的作用是将字符串中小写字母换成大写(dxi)字母6.3.6 6.3.6 善于善于善于善于(shny)(shny)使用字符串处理函数使用字符串处理函数使用字符串处理函数使用字符串处理函数第84页/共97页第八十四页,共98页。例6.8输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。解题思路:问题的关键是怎样确定“出现一个新单词了”从第1个字符开始逐个字符进行检查,判断此字符是否是新单词的开头,如果是,就使变量num的值加1,最后得到(ddo)的num的值就是单
45、词总数6.3.76.3.7字符数组应用字符数组应用字符数组应用字符数组应用(yngyng)(yngyng)举例举例举例举例第85页/共97页第八十五页,共98页。判断(pndun)是否出现新单词,可以由是否有空格出现来决定(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内)如果测出某一个字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了”,此时使num累加1如果当前字符为非空格而其前面的字符也是非空格,则num不应再累加16.3.76.3.7字符字符字符字符(z f)(z f)数组应用举例数组应用举例数组应用举例数组应用举例第86页/共97页第八十六页,共98页。用变量wo
46、rd作为判别当前是否开始了一个新单词的标志,若word=0表示未出现新单词,如出现了新单词,就把word置成1前面(qinmian)一个字符是否空格可以从word的值看出来,若word等于0,则表示前一个字符是空格;如果word等于1,意味着前一个字符为非空格6.3.76.3.7字符字符字符字符(z f)(z f)数组应用举例数组应用举例数组应用举例数组应用举例第87页/共97页第八十七页,共98页。Yc=空格(kn )word=0Nword=0Yword=1num+Nif(c= ) word=0; else if(word=0) word=1; num+; 第88页/共97页第八十八页,共9
47、8页。当前字符当前字符I Ia am ma ab bo oy y. .是否空格是否空格否否 是是 否否 否否 是是 否否 是是 否否 否否 否否 否否wordword原原值值0 01 10 01 11 10 01 10 01 11 11 1新新单词单词开始否开始否 是是 否否 是是否否 否否是是 否否 是是否否 否否 否否wordword新新值值1 10 01 11 10 01 10 01 11 11 11 1numnum值值1 11 12 22 22 23 33 34 44 44 44 4第89页/共97页第八十九页,共98页。charstring81,c;inti,num=0,word=0
48、;gets(string);for(i=0;(c=stringi)!=0;i+)if(c=)word=0;elseif(word=0)word=1;num+;printf(“%dwordsn”,num);一定(ydng)要设初始值第90页/共97页第九十页,共98页。charstring81,c;inti,num=0,word=0;gets(string);for(i=0;(c=stringi)!=0;i+)if(c=)word=0;elseif(word=0)word=1;num+;printf(“%dwordsn”,num);相当于c=stringi;c!=0第91页/共97页第九十一页,
49、共98页。例6.9有3个字符串,要求找出其中最大者。解题思路:设一个二维的字符数组str,大小(dxio)为310。每一行存放一个字符串charstr310;第92页/共97页第九十二页,共98页。for(i=0;i0)strcpy(string,str0);elsestrcpy(string,str1);if(strcmp(str2,string)0)strcpy(string,str2);第94页/共97页第九十四页,共98页。#include#includeintmain()charstr310;charstring10;inti;for(i=0;i0)strcpy(string,str
50、0);elsestrcpy(string,str1);if(strcmp(str2,string)0)strcpy(string,str2);printf(nthelargest:n%sn,string);return0;第95页/共97页第九十五页,共98页。作业(zuy)P168241014第96页/共97页第九十六页,共98页。感谢您的欣赏(xnshng)!第97页/共97页第九十七页,共98页。内容(nirng)总结前几章使用的变量都属于基本类型,例如整型、字符型、浮点型数据,这些都是简单的数据类型。C语言用方括号中的数字表示下标(xi bio),如用s15表示。数组名的命名规则和变量名相同,遵循C语言标识符规则。它可以是整型常量、整型常量表达式或符号常量。printf(%d ,ai)。scanf (%d,&a10)。数组名下标(xi bio)下标(xi bio)。printf(array b:n)。感谢您的欣赏第九十八页,共98页。