C语言程序设计第6章利用数组处理批量数据课件

上传人:20****08 文档编号:241293728 上传时间:2024-06-15 格式:PPTX 页数:61 大小:411.04KB
返回 下载 相关 举报
C语言程序设计第6章利用数组处理批量数据课件_第1页
第1页 / 共61页
C语言程序设计第6章利用数组处理批量数据课件_第2页
第2页 / 共61页
C语言程序设计第6章利用数组处理批量数据课件_第3页
第3页 / 共61页
点击查看更多>>
资源描述
C语言程序设计第6章利用数组处理批量数据C语言程序设计第6章利用数组处理批量数据数 组C语言程序言程序设计SoochowUniversitySoochowUniversity2主要内容主要内容q引言引言q一一维数数组的定的定义和引用和引用q二二维数数组的定的定义和引用和引用q字符数字符数组与字符串与字符串C语言程序设计Soochow University2主要内数 组C语言程序言程序设计SoochowUniversitySoochowUniversity3引引言言q基本数据基本数据类型型v整型整型v实型型v字符型字符型q构造数据构造数据类型型(用用户自定自定义数据数据类型型)v数数组v结构体构体v共用体共用体C语言程序设计Soochow University3引 数 组C语言程序言程序设计SoochowUniversitySoochowUniversity4引引言言q数数组v数数组是有序数据的集合是有序数据的集合v特点特点q所有数据元素所有数据元素类型型相同相同q数据元素数据元素类型可以是基本数据型可以是基本数据类型和构造数据型和构造数据类型型q由数由数组名和下名和下标确定具体的数据元素确定具体的数据元素C语言程序设计Soochow University4引 数 组C语言程序言程序设计SoochowUniversitySoochowUniversity5一一维数数组的定的定义q一一维数数组的定的定义v格式格式:类型型 数数组名名数数组长度度;q长度度只能只能为常量、常量表达式常量、常量表达式q类型型数数组中元素的中元素的类型型q数数组名名遵循遵循标识符命名符命名规则,表示数,表示数组中元素的起始位置中元素的起始位置v例如:例如:int a6;q分配了六个分配了六个单元,每个元,每个单元存放一个元存放一个int(即(即4个个Byte),),而且各而且各单元元连续!q注意:注意:vc不允不允许对数数组的大小作的大小作动态定定义。350 x78240 x78280 x78340 x783846175781000 x782C0 x7830aa0a1a2a3a4a5C语言程序设计Soochow University5一维数数 组一维数组一维数组的定义的定义q举例:例:inta4+6;合法合法不合法不合法intn=10;intan;#defineN10floatarryN;合法合法结论:定义数组时,数组长度必须是常量或者常量表达式,不能为变量。C语言程序言程序设计6SoochowUniversitySoochowUniversity一维数组的定义举例:不合法int n=10;#defin数 组C语言程序言程序设计SoochowUniversitySoochowUniversity7一一维数数组的使用的使用q一一维数数组的使用的使用v格式:格式:名称名称下下标;v说明:明:1 1)下)下标范范围:0长度度-12 2)越越界界问题:C中中不不检查越越界界,但但越越界界写写数数据据可可能能造造成系成系统崩崩溃3 3)数)数组不能整体引用,只能引用其中的元素不能整体引用,只能引用其中的元素q例如:例如:inta3;a2=19;4)下)下标可以是常量、可以是常量、变量、表达式或函数量、表达式或函数C语言程序设计Soochow University7一维数数 组一维数组元素一维数组元素的引用的引用q举例例:inta10;a0=a5+a7-a2*3合法合法C语言程序言程序设计8SoochowUniversitySoochowUniversityintn=5;inta10;an=20;intn=5;inta5;an=20;不正确不正确注意:(1)使用数组时,程序员必须自己检查数组越界问题。(2)使用数组时,数组下标可以是常量,变量,表达式,甚至是函数。合法合法一维数组元素的引用举例:合法C语言程序设计8Soochow数 组C语言程序言程序设计SoochowUniversitySoochowUniversity9一一维数数组的初始化的初始化q部分初始化:部分初始化:v例如:例如:int a20=3,2,5,6,9;其余元素其余元素为0 0q全部初始化:全部初始化:数数组长度可以省略度可以省略v例如:例如:int a3=3,4,6;int b=23,45,67,89;q对数组全部元素初始化为对数组全部元素初始化为0方式方式v例如:例如:int a5=0,0,0,0,0;或者:或者:int a5=0;不能不能:int a5=0*10;q说明:如果不明:如果不给数数组设置初置初值,则为随机数随机数C语言程序设计Soochow University9一维数数 组一维数组的初始化一维数组的初始化q在定在定义数数组的同的同时,给各数各数组元素元素赋值qinta10=0,1,2,3,4,5,6,7,8,9;qinta10=0,1,2,3,4;相当于相当于inta10=0,1,2,3,4,0,0,0,0,0;qinta10=0,0,0,0,0,0,0,0,0,0;相当于相当于inta10=0;qinta5=1,2,3,4,5;可写可写为inta=1,2,3,4,5;C语言程序言程序设计10SoochowUniversitySoochowUniversity一维数组的初始化在定义数组的同时,给各数组元素赋值C语言程序数 组C语言程序言程序设计SoochowUniversitySoochowUniversity11一一维数数组程序程序举例例q用数用数组来来处理求理求fibonacci数列数列问题q冒泡排序冒泡排序q选择排序排序q插入排序插入排序q统计数字序列中数字序列中0-9中各数中各数值出出现的次数的次数q任任意意从从键盘上上输入入一一个个正正整整数数(最最大大为6553565535),请将它逆序将它逆序输出出C语言程序设计Soochow University11一维数 组一一维数数组程序程序举例例例例6.2用数用数组处理求理求Fibonacci数列数列问题q解解题思路:思路:v例例5.8中用中用简单变量量处理的,理的,缺点缺点不能在内存不能在内存中保存中保存这些数。假如想直接些数。假如想直接输出数列中第出数列中第25个个数,是很困数,是很困难的。的。v如果用数如果用数组处理,每一个数理,每一个数组元素代表数列中元素代表数列中的一个数,依次求出各数并存放在相的一个数,依次求出各数并存放在相应的数的数组元素中元素中C语言程序言程序设计12SoochowUniversitySoochowUniversity一维数组程序举例 例6.2 用数组处理求Fibonacc数 组C语言程序言程序设计SoochowUniversitySoochowUniversity13例例题(1)q用数用数组来来处理求理求fibonacci数列数列问题。#includevoidmain()inti;intf20=1,1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;i20;i+)if(i+1)%5=0)printf(n);printf(%12d,fi);C语言程序设计Soochow University13例题数 组q例例6.3有有6个地区的面个地区的面积,要求,要求对它它们按由小到按由小到大的大的顺序排列。序排列。v解解题思路:思路:q排序的排序的规律有两种:一种是律有两种:一种是“升序升序”,从小到大;从小到大;另一种是另一种是“降序降序”,从大到小,从大到小q把把题目抽象目抽象为:“对n个数按升序排序个数按升序排序”q常用的排序算法常用的排序算法v起泡排序起泡排序(冒泡排序冒泡排序)v选择排序排序v插入排序插入排序一一维数数组程序程序举例例C语言程序言程序设计14SoochowUniversitySoochowUniversity 例6.3 有6个地区的面积,要求对它们按由小到大的顺序数 组985420895420859420854920854290854209大数沉淀,小数起泡大数沉淀,小数起泡a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;起泡排序起泡排序C语言程序言程序设计15SoochowUniversitySoochowUniversity988888大数沉淀,小数起泡a0for(i=0;i5数 组854209584209548209542809542089a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;起泡排序起泡排序C语言程序言程序设计16SoochowUniversitySoochowUniversity85555a0for(i=0;i4;i+)数 组542089452089425089420589a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;起泡排序起泡排序C语言程序言程序设计17SoochowUniversitySoochowUniversity5444a0for(i=0;i3;i+)数 组420589240589204589a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;起泡排序起泡排序C语言程序言程序设计18SoochowUniversitySoochowUniversity422a0for(i=0;i2;i+)数 组204589024589a0a1a2a3a4a5for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;起泡排序起泡排序C语言程序言程序设计19SoochowUniversitySoochowUniversity20a0for(i=0;i1;i+)数 组for(i=0;iai+1)for(i=0;iai+1)for(i=0;iai+1)for(i=0;iai+1)for(j=0;j5;j+)结论结论:如果有如果有n n个数,则要进行个数,则要进行n-1n-1趟比较。在第趟比较。在第1 1趟比趟比较中要进行较中要进行n-1n-1次两两比次两两比较,在第较,在第j j趟比较中要进趟比较中要进行行n-jn-j次两两比较。次两两比较。C语言程序言程序设计20SoochowUniversitySoochowUniversityfor(i=0;i5;i+)数 组C语言程序言程序设计SoochowUniversitySoochowUniversity21程序流程图如下:程序流程图如下:冒泡排序冒泡排序C语言程序设计Soochow University21程序数 组C语言程序言程序设计SoochowUniversitySoochowUniversity22冒泡排序源程序冒泡排序源程序#include#defineN10voidmain()intarrayN;inti,j,t;printf(Input10numbers:n);for(i=0;iN;i+)scanf(%d,&arrayi);printf(n);for(j=0;jN;j+)for(i=0;iarrayi+1)t=arrayi;arrayi=arrayi+1;arrayi+1=arrayi;printf(Thesortednumbers:n);for(i=0;iN;i+)printf(%d,arrayi);if(i+1)%5=0)printf(n);C语言程序设计Soochow University22冒泡数 组985420a0a1a2a3a4a5index=0;for(i=1;i6;i+)if(aindexai)index=imax=aindex;aindex=a5;a5=max;选择排序排序985420985420985420985420085429C语言程序言程序设计23SoochowUniversitySoochowUniversity9a0index=0;选择排序99990C语言程序设计2数 组085429a0a1a2a3a4a5max=a0;index=0;for(i=1;i5;i+)if(maxai)max=ai;index=iaindex=a4;a4=max;选择排序排序085429085429085429025489index=0;for(i=1;i5;i+)if(aindexai)index=imax=aindex;aindex=a4;a4=max;C语言程序言程序设计24SoochowUniversitySoochowUniversity0a0max=a0;index=0;选择排序00数 组025489a0a1a2a3a4a5选择排序排序025489025489024589index=0;for(i=1;i4;i+)if(aindexai)index=imax=aindex;aindex=a3;a3=max;C语言程序言程序设计25SoochowUniversitySoochowUniversity0a0选择排序000index=0;C语言程序设计25数 组024589a0a1a2a3a4a5选择排序排序024589024589index=0;for(i=1;i3;i+)if(aindexai)index=imax=aindex;aindex=a2;a2=max;C语言程序言程序设计26SoochowUniversitySoochowUniversity0a0选择排序00index=0;C语言程序设计26S数 组024589a0a1a2a3a4a5选择排序排序024589结论结论:如果有如果有n n个数,则要进行个数,则要进行n-1n-1趟比较。在第趟比较。在第1 1趟比趟比较中要进行较中要进行n-1n-1次两两比次两两比较,在第较,在第j j趟比较中要进趟比较中要进行行n-jn-j次两两比较。次两两比较。index=0;for(i=1;i2;i+)if(aindexai)index=imax=aindex;aindex=a1;a1=max;C语言程序言程序设计27SoochowUniversitySoochowUniversity0a0选择排序0结论:index=0;C语言程序设计27数 组C语言程序言程序设计SoochowUniversitySoochowUniversity28选择排序排序q原理原理v每次循每次循环选择没有排序的元素中的最小元素置没有排序的元素中的最小元素置于元素序列的开始于元素序列的开始vN-S图输入数组输入数组aindex=kfor i=k+1 to n-1ai aindexindex=iaindexakYNfor k=0 to n-2输出数组输出数组aC语言程序设计Soochow University28选择数 组C语言程序言程序设计SoochowUniversitySoochowUniversity29选择排序程序排序程序voidmain()inti,index,k,n,temp,a10;for(i=0;i10;i+)scanf(“%d”,&ai);for(k=0;k10;k+)index=k;for(i=k+1;i10;i+)if(aiaindex)index=i;temp=aindex;aindex=ak;ak=temp;for(i=0;i tempai+1=aiYNfor k=2 to n-1输出数组输出数组a排序排序a0,a1ai+1=tempbreak;i0a0=tempYNC语言程序设计Soochow University31插入数 组C语言程序言程序设计SoochowUniversitySoochowUniversity32一一维数数组应用用举例例q统计数字序列中数字序列中0-9中各数中各数值出出现的次数的次数v数字序列保存于一个整型数数字序列保存于一个整型数组中中q任意从任意从键盘上上输入一个正整数(最大入一个正整数(最大为6553565535),),请将它逆序将它逆序输出出v如:如:输入:入:64934;64934;则输出:出:4394643946v对每一个数每一个数进行如下行如下处理理q提取个位数字:提取个位数字:v让数字序列数字序列对10求余求余q控制循控制循环1.每次循每次循环让整数减去个位数,并除以整数减去个位数,并除以102.当当(1)结果的个位数果的个位数为0时,表示整数数字,表示整数数字检测完完毕。C语言程序设计Soochow University32一维数 组C语言程序言程序设计SoochowUniversitySoochowUniversity33二二维数数组q多多维数数组的空的空间想象想象v二维数组:二维数组:一个表格或一个平面矩阵一个表格或一个平面矩阵v一维数组:一维数组:一列长表或一个向量一列长表或一个向量v多维数组:多维数组:多维空间的一个数据列阵多维空间的一个数据列阵v三维数组:三维数组:三维空间的一个方阵三维空间的一个方阵C语言程序设计Soochow University33二维数 组C语言程序言程序设计SoochowUniversitySoochowUniversity34二二维数数组的定的定义q格式格式v 名称名称长度度1长度度2;v说明:明:1 1)长度度1和和长度度2常常量量表表达达式式,其其中中长度度1 1表表示示行行数数,长度度2 2表表示列数示列数2 2)内存中二)内存中二维数数组的元素按行存放的元素按行存放C语言程序设计Soochow University34二维数 组C语言程序言程序设计SoochowUniversitySoochowUniversity35地址地址地址地址 值值值值 数组元素数组元素数组元素数组元素b b0000b b0101b b0202b b1010b b1111b b1212b b2020b b2121b b22223003000 0H H3003004 4H H3003008 8H H300300C CH H3010H3010H3014H3014H3018H3018H301CH301CH30302020H H例如:例如:整型数组整型数组 b33=1,2,3,4,5,6,7,8,9;123456789C语言程序设计Soochow University35地址数 组C语言程序言程序设计SoochowUniversitySoochowUniversity36问题:有了二维数组的基础,那么多维问题:有了二维数组的基础,那么多维数组如何定义呢?数组如何定义呢?定义三维数组定义三维数组:float a234;float a234;注意:注意:多维数组元素在内存中的排列顺序:多维数组元素在内存中的排列顺序:第第一一维维的的下下标标变变化化最最慢慢,最最右右边边的的下下标标变化最快。变化最快。二二维数数组的定的定义C语言程序设计Soochow University36问题数 组C语言程序言程序设计SoochowUniversitySoochowUniversity37二二维数数组的使用的使用格式:格式:名称名称下下标1下下标2下下标范范围0下下标1-1;0下下标2-1下下标可以可以为常量、常量、变量、表达式或函数量、表达式或函数C语言程序设计Soochow University37二维数 组C语言程序言程序设计SoochowUniversitySoochowUniversity38二二维数数组的的说明明q重要的理解重要的理解v严格区分在定格区分在定义数数组时用的用的a34和引用元素和引用元素时的的a34的区的区别。前者。前者a34用来定用来定义数数组的的维数和各数和各维的大小,后者的大小,后者a34中的中的3和和4是是下下标值,a34a34代表某一个元素。代表某一个元素。q记住:记住:v(1)数数组下下标总是从是从0开始!开始!v(2)一一维数数组的最大下的最大下标总是数是数组长度减度减1!v(3)二二维数数组或多或多维数数组的最大下的最大下标总是其是其维数减数减1和各和各维大小减大小减1。C语言程序设计Soochow University38二维数 组C语言程序言程序设计SoochowUniversitySoochowUniversity39二二维数数组的初始化的初始化 1、按行初始化:、按行初始化:例如:例如:int a32=2,3,2,4;2、整体初始化:、整体初始化:例如:例如:int a23=2,3,4,1,8,9;3、全部元素初始化:、全部元素初始化:行可以省略行可以省略 例如:例如:int a3=2,3,4,5,6,7;C语言程序设计Soochow University39二维数 组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;等价于等价于inta34=1,0,0,0,5,0,0,0,9,0,0,0;inta34=1,5,6;相当于相当于inta34=1,5,6,0;二维数组的初始化二维数组的初始化C语言程序言程序设计40SoochowUniversitySoochowUniversityint a34=1,2,3,4,5,6,7,数 组inta34=1,2,3,4,5,6,7,8,9,10,11,12;等价等价于于:inta4=1,2,3,4,5,6,7,8,9,10,11,12;inta4=0,0,3,0,10;合法合法二维数组的初始化二维数组的初始化C语言程序言程序设计41SoochowUniversitySoochowUniversityint a34=1,2,3,4,5,6,7,8,9数 组C语言程序言程序设计SoochowUniversitySoochowUniversity42二二维数数组与一与一维数数组的关系的关系 两两维数数组和一和一维数数组的关系:的关系:例 int a34;a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23每个元素ai由包含4个元素的一维数组组成二维数组a是由3个元素组成014523a01a02a03a10a11a00a13a20a21a22a23a1267101189a0a1a2C语言程序设计Soochow University42二维数 组C语言程序言程序设计SoochowUniversitySoochowUniversity43二二维数数组程序程序举例例(1)(1)q将一个二将一个二维数数组行和列元素互行和列元素互换,存到另一个二,存到另一个二维数数组中。中。v原理:原理:bji=aij#includevoidmain()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);printf(arrayb:n);for(i=0;i=2,i+)for(j=0;j=1;j+)printf(%5d,bij);printf(n);C语言程序设计Soochow University43二维数 组C语言程序言程序设计SoochowUniversitySoochowUniversity44二二维数数组程序程序举例例(2)(2)q问题v有一个有一个34的矩的矩阵,要求,要求编程序求出其中程序求出其中值最大最大的那个元素的的那个元素的值,以及其所在的行号和列号。,以及其所在的行号和列号。vN-S流程流程图C语言程序设计Soochow University44二维数 组C语言程序言程序设计SoochowUniversitySoochowUniversity45例例(2)源程序源程序#includevoidmain()inti,j,row=0,colum=0,max;inta34=1,2,3,4,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;/*ifend*/printf(“max=%d,row=%d,colum=%dn”,max,row,colum);C语言程序设计Soochow University45例(数 组C语言程序言程序设计SoochowUniversitySoochowUniversity46二二维数数组程序程序举例例(2)q编程打印下列形式的程打印下列形式的杨辉三角三角(10行行)1 11121133114641 1 510 10 5116152015 61nij=ni-1j-1+ni-1jC语言程序设计Soochow University46二维数 组C语言程序言程序设计SoochowUniversitySoochowUniversity47字符数组与字符串字符数组与字符串q字符数字符数组v存放字符数据的数存放字符数据的数组,字符数,字符数组中的一个元素存放一个中的一个元素存放一个字符。字符。q字符串字符串v字字符符串串:双双引引号号括括起起的的多多个个字字符符序序列列,例例如如:“abc”,“1”,“abc123”v字符串尾:系字符串尾:系统自自动添加添加0 /ASCII为零的字符零的字符v字符串的含字符串的含义:字符串的起始位置:字符串的起始位置v字符串的存字符串的存储:利用字符数利用字符数组qchar s10=“Hello”;qchar s=”Hello”;/数数组的的长度度为6qchar s10=2,3,4,5,0;/字符形式的串字符形式的串qchar s10=2,3,4,5;/字符形式,不是字符串字符形式,不是字符串C语言程序设计Soochow University47字符数 组C语言程序言程序设计SoochowUniversitySoochowUniversity48字符串的字符串的输入入/输出出q利用利用scanf/printf进行:行:char str20=“Hello world”;scanf(“%s”,str);/str数数组名,表示起始位置,代表串的起始位置名,表示起始位置,代表串的起始位置printf(“%s”,str);/输出从出从str开始的串开始的串v说明:说明:(1)scanf中不需要求地址运算,直接用数中不需要求地址运算,直接用数组名;名;(2)printf中中给出数出数组名,名,输出遇到出遇到0结束束;(3)scanf输入串,以空格和回入串,以空格和回车键和和Tab键进行分割行分割q例如例如charstr13;scanf(%S,Str);如果如果输入以下入以下12个字符个字符Howareyou?How0C语言程序设计Soochow University48字符数 组C语言程序言程序设计SoochowUniversitySoochowUniversity49字符串的字符串的输入入/输出出q利用利用puts/gets进行:行:puts(数数组名名);输出出字字符符串串,并并将将0转换成成换行行输出。出。gets(数数组名名);输入入字字符符串串;只只能能以以回回车键作作为分割符分割符v说明:说明:q一般情况下,字符串的一般情况下,字符串的输入采用入采用gets函数函数q使用使用这两个函数两个函数时,需要,需要#include q用用puts函数函数输出的字符串中可以包含出的字符串中可以包含转义字符字符C语言程序设计Soochow University49字符数 组C语言程序言程序设计SoochowUniversitySoochowUniversity50例如:例如:char str=ChinanBeijing;puts(str);输出结果:输出结果:ChinaBeijing 在输出时,将字符串结束标志0转换成n,即输出完字符串后换行。字符串的字符串的输入入/输出出C语言程序设计Soochow University50例如数 组C语言程序言程序设计SoochowUniversitySoochowUniversity51字符串数字符串数组:二二维字符数字符数组二维字符数组初始化二维字符数组初始化 例 char fruit7=“Apple”,”Orange”,”Grape”,”Pear”,”Peach”;fruit0fruit1fruit2fruit3fruit4Apple00Orange0Grape00Pear000Peach00C语言程序设计Soochow University51字符数 组C语言程序言程序设计SoochowUniversitySoochowUniversity52字符串相关的系字符串相关的系统函数函数(string.h)例如:例如:charstr130=“PeoplesRepublicof”;charstr2=“China”;printf(“%s”,strcat(str1,str2);u字符串连接函数字符串连接函数strcat格式:格式:strcat(字符数组字符数组1,字符数组字符数组2)功能:把字符数组功能:把字符数组2连到字符数组连到字符数组1后面后面返值:返回字符数组返值:返回字符数组1的首地址的首地址说明:说明:字符数组字符数组1必须足够大必须足够大 连接前连接前,两串均以两串均以0结束结束;连接后连接后,串串1的的0取消取消,新串最后加新串最后加0C语言程序设计Soochow University52字符数 组C语言程序言程序设计SoochowUniversitySoochowUniversity53u字符串拷贝函数字符串拷贝函数strcpy格式:格式:strcpy(字符数组字符数组1,字符串字符串2)功能:将字符串功能:将字符串2,拷贝到字符数组,拷贝到字符数组1中去中去返值:返回字符数组返值:返回字符数组1的首地址的首地址说明:说明:字符数组字符数组1必须足够大必须足够大 拷贝时拷贝时0一同拷贝一同拷贝 不能使用赋值语句为一个字符数组赋值不能使用赋值语句为一个字符数组赋值字符串相关的系字符串相关的系统函数函数(string.h)例如:例如:charstr130=“PeoplesRepublicof”;charstr2=“China”;printf(“%s”,strcpy(str1,str2);C语言程序设计Soochow University53字符数 组C语言程序言程序设计SoochowUniversitySoochowUniversity54u字符串比较函数字符串比较函数strcmp格式:格式:strcmp(字符串字符串1,字符串字符串2)功能:比较两个字符串功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(比较规则:对两串从左向右逐个字符比较(ASCII码),码),直到遇到不同字符或直到遇到不同字符或0为止为止返值:返回返值:返回int型整数,型整数,a.若字符串若字符串1 字符串字符串2,返回正整数返回正整数 c.若字符串若字符串1=字符串字符串2,返回零返回零说明:字符串比较不能用说明:字符串比较不能用“=”,必须用必须用strcmp字符串相关的系字符串相关的系统函数函数(string.h)C语言程序设计Soochow University54字符数 组C语言程序言程序设计SoochowUniversitySoochowUniversity55u字符串长度函数字符串长度函数strlen格式:格式:strlen(字符数组字符数组)功能:计算字符串长度功能:计算字符串长度返值:返回字符串实际长度,不包括返值:返回字符串实际长度,不包括0在内在内例 对于以下字符串,strlen(s)的值为:(1)char s10=A,0,B,C,0,D;(2)char s=“tv0willn”;(3)char s=“x69072n”;字符串相关的系字符串相关的系统函数函数(string.h)C语言程序设计Soochow University55字符数 组strlwr函数函数-转换为小写的函数小写的函数q其一般形式其一般形式为strlwr(字符串字符串)q函数的作用是将字符串中大写字母函数的作用是将字符串中大写字母换成小写字成小写字母母字符串相关的系字符串相关的系统函数函数(string.h)C语言程序言程序设计56SoochowUniversitySoochowUniversitystrlwr函数-转换为小写的函数字符串相关的系统函数数 组strupr函数函数-转换为大写的函数大写的函数q其一般形式其一般形式为strupr(字符串字符串)q函数的作用是将字符串中小写字母函数的作用是将字符串中小写字母换成大写字成大写字母母字符串相关的系字符串相关的系统函数函数(string.h)C语言程序言程序设计57SoochowUniversitySoochowUniversitystrupr函数-转换为大写的函数字符串相关的系统函数数 组C语言程序言程序设计SoochowUniversitySoochowUniversity58字符串的字符串的应用用举例例(1)q问题v有有3个字符串个字符串,要求找出其中最大者。要求找出其中最大者。v今今设一个二一个二维的字符数的字符数组str,大小大小为320,即有即有3行行20列列,每一行可以容每一行可以容纳20个字符。下个字符。下图表示此二表示此二维数数组的情况。的情况。解题思路:解题思路:可以把可以把str0、str1、str2看作看作3个一维字符数组个一维字符数组,它它们各有们各有20个元素。可以把它们如同一维数组那样进行处理。可以用个元素。可以把它们如同一维数组那样进行处理。可以用gets函数分别读入函数分别读入3个字符串。经过二次比较个字符串。经过二次比较,就可得到值最大者就可得到值最大者,把它放在把它放在一维字符数组一维字符数组String中。中。C语言程序设计Soochow University58字符数 组C语言程序言程序设计SoochowUniversitySoochowUniversity59例例题(1)源程序源程序#includevoidmain()charstring20,str320;inti;for(i=0;i0)strcpy(string,str0);elsestrcpy(string,str1);if(strcmp(str2,string)0)strcpy(string,str2);printf(“nthelargeststringis n%sn,string);C语言程序设计Soochow University59例题数 组C语言程序言程序设计SoochowUniversitySoochowUniversity60字符串的字符串的应用用举例例(2)q问题v输入一行字符,入一行字符,统计其中有多少个其中有多少个单词,单词之之间用空格分隔开。用空格分隔开。C语言程序设计Soochow University60字符数 组C语言程序言程序设计SoochowUniversitySoochowUniversity61例例题(2)源程序源程序#includevoidmain()charstring81;inti,num=0,word=0;charc;gets(string);for(i=0;(c=stringi)!=0;i+)if(c=)word=0;elseif(word=0)word=1;num+;printf(Thereare%dwordsintheline.n,num);C语言程序设计Soochow University61例题
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!