教学材料《C语言》-第六章_第1页
教学材料《C语言》-第六章_第2页
教学材料《C语言》-第六章_第3页
教学材料《C语言》-第六章_第4页
教学材料《C语言》-第六章_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.1一维数组的定义与引用

6.1.1一维数组的定义在C语言中,数组的每个元素只有一个下标时,称这样的数组为一维数组。一维数组的定义方式如下:类型说明符数组名[常量表达式];【说明】(1)类型说明符是指任一种基本数据类型或构造类型。(2)数组名是指用户定义的数组标识符(数组名中存放的是该片连续单元的首地址,由编译分配,是个固定的常数)。在同一程序里,数组名不能与其他变量名相同。下一页返回6.1一维数组的定义与引用

(3)常量表达式表示数据元素的个数(数组的长度),它可以包含整型常量、整型常量表达式或整型符号常量。例如:inta[10];

/∗整型数组a有10个元素∗/floatb[10],c[20];/∗实型数组b有10个元素,实型数组c有20个元素∗/charch[20];/∗字符数组ch有20个元素∗/(4)不允许对数组的大小进行动态定义。例如,下面定义数组的方法是错误的。intn;scanf("%d",&n);inta[n];(5)一维数组的功能:将数组的有关信息(数组名、类型、长度、维数)通知计算机,以便分配相应连续的存储单元。上一页下一页返回6.1一维数组的定义与引用

6.1.2一维数组的引用与使用变量类似,数组必须先定义后使用。一个数组元素就相当于一个变量,使用时等同于相同数据类型的普通变量。通常,一维数组各元素分配在连续的内存单元中,只能逐个引用数组元素,不能一次引用整个数组。引用一维数组元素的一般形式:数组名[下标]其中,“下标”可以是整型常量、变量或整型表达式。例如,以下都是合法引用数组元素。a[0]=a[5]+a[7]-a[2∗3]a[i+j]a[i++]上一页下一页返回6.1一维数组的定义与引用

【说明】(1)下标编号从0开始,并且下标值不能大于数组长度减1。系统编译时不检查数组的边界是否超界,由程序员自己确保所编的程序中没有出现数组下标越界的情况。在上例中,若使用a[10]、ch[20],就是错误的,但编译系统并不报错;对a[10]、ch[20]的操作实际上是对内存其他空间的操作,因此可能造成严重后果。(2)注意定义数组和数组元素引用的区别。例如:inta[10];

/∗定义数组a的长度为10∗/t=a[6];/∗引用数组a中序号为6的元素。不代表数组a长度为6∗/上一页下一页返回6.1一维数组的定义与引用

【例6-1】对10个数组元素依次赋值为0、1、2、3、4、5、6、7、8、9,要求按逆序输出。分析:定义一个长度为10的整型数组,将数组元素依次赋值为0~9,有一定规律,可以用循环来赋值,并用循环来逆序输出这10个数,先输出最后的元素,按照下标从大到小输出这10个元素。上一页下一页返回6.1一维数组的定义与引用

上一页下一页返回6.1一维数组的定义与引用

运行结果:程序说明:数组元素的下标常用循环变量来控制。一维数组的数据元素通常由一个for循环语句引用实现。上一页下一页返回6.1一维数组的定义与引用

6.1.3一维数组的初始化一维数组的初始化就是给一维数组元素赋初值。初始化操作既可以在定义一维数组的同时完成,也可以在数组定义之后进行。一维数组定义并初始化的格式如下:类型说明符数组名[下标]={初值列表};其中,在{}中的各数据值即各元素的初值,各值之间用逗号间隔。例如:inta[10]={0,1,2,3,4,5,6,7,8,9};上一页下一页返回6.1一维数组的定义与引用

对一维数组初始化通常采用以下三种方式进行:(1)在定义数组时,为数组全部元素赋初值。例如:inta[10]={0,1,2,3,4,5,6,7,8,9};相当于a[0]=0;a[1]=1;a[2]=2;…;a[9]=9;又如:intb[5]={0,0,0,0,0};可以写成intb[5]={0};相当于给b数组中的全部元素赋值为0。上一页下一页返回6.1一维数组的定义与引用

(2)只给部分数组元素赋初值,其余自动赋0。例如:inta[5]={6,2,3};大括号中初值的数量必须小于或等于数组长度,当初值数量小于数组长度时,数值型数组的元素的初值由系统自动赋值为0,结果相当于a[0]=6;a[1]=2;a[2]=3;a[3]=0;a[4]=0(3)当对全部数组元素赋初值时,可以不指定数组长度。系统会根据所赋初值的个数来确定数组的长度。例如:inta[]={1,2,3,4,5};自动定义数组的长度为5,完全等价于inta[5]={1,2,3,4,5};【注意】如果被定义数组长度与提供初值的个数不相同,则数组长度不能省略。上一页下一页返回6.1一维数组的定义与引用

6.1.4一维数组应用实例【例6-2】用数组解决斐波那契数列问题。斐波那契数列:F1=1F2=1Fn=Fn-1+Fn-2

(n>2)分析:在例5-11中,用简单变量来处理斐波那契数列,只定义了3个变量,程序可以顺序计算并输出各数,但不能在内存中保存这些数。因此,如果想直接输出数列中第20个数,很困难。但用数组来处理,就很简单。每一个数组元素代表数列中的一个数,依次求出各个数并存放在相应的数组元素中。利用数组来表示数列的通项f[i]=f[i-2]+f[i-1](i=2~20);用if语句来控制换行,每行输出5个数据。程序的N-S图如图6.1所示。上一页下一页返回6.1一维数组的定义与引用

上一页下一页返回6.1一维数组的定义与引用

运行结果:上一页下一页返回6.1一维数组的定义与引用

【例6-3】在一批数中求最大数和最小数,并将最大数与最小数互换位置。分析:由于后一个问题涉及位置,故用数组来存数。(1)输入:for循环输入6个整数。(2)为变量min、max赋初值max=min=a[0]。(3)依次将a[i]和max、min比较(循环):若max≤a[i],令max=a[i],记录大数的位置k=i;若min≥a[i],令min=a[i],记录小数的位置j=i;(4)遍历后,将max与min互换,a[k]=min;a[j]=max。(5)输出:for循环输出互换位置的6个整数。程序的N-S图如图6.2所示。上一页下一页返回6.1一维数组的定义与引用

上一页下一页返回6.1一维数组的定义与引用

上一页下一页返回6.1一维数组的定义与引用

运行结果:上一页下一页返回6.1一维数组的定义与引用

【例6-4】用起泡法对数组中的5个整数按从小到大的顺序进行排序。分析:起泡法排序过程(相邻元素两两比较)如下:(1)比较第1个数与第2个数,若为逆序(a[0]>a[1]),则交换;然后比较第2个数与第3个数;依次类推,直至第n-1个数和第n个数比较为止。第1趟冒泡排序,将结果最大的数被安置在最后一个元素位置。(2)对前n-1个数进行第2趟冒泡排序,结果是次大的数被安置在第n-1个元素位置。(3)重复上述过程,经过n-1趟冒泡排序后,排序结束。比较过程如图6.3所示。上一页下一页返回6.1一维数组的定义与引用

第1趟(共4次比较)后,大数78沉底,小数浮起;第2趟(共3次比较)后,得到次大数67,排在倒数第二个位置;……如此进行下去,可以推知,5个数要比较4趟。如果有n个数,则要比较n-1趟。在第j趟比较中,要进行n-j次两两比较(因为已经有j-1个数排好序)。由前面的分析可知:(1)要排序的数必须放入数组。(2)用二重循环控制排序过程:外循环j控制比较的趟数(n-1趟);内循环i控制一趟比较的次数(n-j次)。程序的N-S图如图6.4所示。上一页下一页返回6.1一维数组的定义与引用

上一页下一页返回6.1一维数组的定义与引用

运行结果:上一页下一页返回6.1一维数组的定义与引用

【例6-5】用选择法对数组中的6个整数进行由小到大的排序。分析:选择法排序过程:先将6个数中最小的数与a[0]交换;再将余下的5个数中最小的一个与a[1]交换……每比较一趟,就找出一个未经排序的数中最小的一个,6个数排序,共比较5趟。比较过程如图6.5所示。第1趟,将6个数中最小的数1与a[0]交换;第2趟,将余下的5个数中最小数3与a[1]交换,因为a[1]就是最小数,所以不交换;第3趟,将余下的4个数中最小数5与a[2]交换;第4趟,将余下的3个数中最小数8与a[3]交换;第5趟,将余下的2个数中最小数10与a[4]交换,至此排序完成。上一页下一页返回6.1一维数组的定义与引用

上一页下一页返回6.1一维数组的定义与引用

运行结果:上一页下一页返回6.1一维数组的定义与引用

【例6-6】有一个9个数的有序数组,插入一个数,使该数组中的数据依然有序。分析:解决上述问题可采用重排序和插入算法。重排序是指将数据插入数组尾部,将数组重新排序。插入算法是指仅移动部分数据,该算法使用效率高,多被采用。插入算法分为前插和后插两种方法。假定数组a是有序数组(定义数组时的元素个数应为9+1个),在指定位置k处插入一个元素。1)前插算法(1)给a数组输入一组有序数,给x赋值。(2)查找插入点:若x的值大于尾元素的值,则将x插在队尾之后。否则将数组中各元素逐一与x比较,一旦x<=a[i](即找到插入点i),就跳出循环。(3)将a[i]及其之后的元素向后平移一位,以便腾出a[i],插入x。(4)a[i]=x,输出a数组。上一页下一页返回6.1一维数组的定义与引用

上一页下一页返回6.1一维数组的定义与引用

上一页下一页返回6.1一维数组的定义与引用

2)后插算法(1)给a数组输入一组有序数,给x赋值。(2)反向遍历数组:若x的值大于某元素的值,则跳出循环(找到插入点);否则,将当前元素向后平移(腾出位置)。(3)a[i+1]=x,输出a数组。上一页下一页返回6.1一维数组的定义与引用

上一页下一页返回6.1一维数组的定义与引用

运行结果:上一页返回6.2二维数组的定义与引用

6.2.1二维数组的定义当数组元素具有两个下标时,称为二维数组。二维数组的定义方式如下:类型说明符数组名[常量表达式1][常量表达式2];【说明】(1)类型说明符是指定全体数组元素的数据类型。(2)常量表达式1表示第1维下标长度(即行数),常量表达式2表示第2维下标长度(即列数)。(3)二维数组的作用:主要处理具有行列结构的数据(矩阵)。例如:inta[3][4];定义a为3×4(3行4列)的整型数组,共存放3×4=12个整数。floatx[5][8];定义x为5×8(5行8列)的实型数组,共存放5×8=40个实数。下一页返回6.2二维数组的定义与引用

【注意】不能写成:inta[3,4];floatx[5,8];在C语言中,二维数组中元素排列顺序是按行存放的。可将二维数组看成是特殊的一维数组,它的每个元素又是一个一维数组。例如,可将a数组看作一个一维数组,它有3个元素:a[0],a[1],a[2],每个元素又是一个包含4个元素的一维数组,如图6.6所示。即:先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有4个元素,也是依次存放。上一页下一页返回6.2二维数组的定义与引用

6.2.2二维数组的引用和一维数组一样,在C语言中不能一次引用整个二维数组,只能引用其中的单个数组元素。一个数组元素就相当于一个变量,使用时等同于相同数据类型的普通变量。通常,二维数组各元素分配在连续的内存单元中,二维数组的引用方式如下:数组名[下标1][下标2]【说明】(1)下标1和下标2可以是整型常量或整型表达式,如a[2-1][2∗2-1]。(2)下标的最大取值不能越界,即要注意数组定义和数组元素引用的区别。例如:inta[3][4];

/∗下标下限值是a[0][0],下标上限值是a[2][3]∗/a[3][4]=5;/∗超出了数组下标的取值范围,引用错误∗/上一页下一页返回6.2二维数组的定义与引用

6.2.3二维数组的初始化可以用下面的方法对二维数组初始化。(1)按行给二维数组赋全值。例如:inta[2][3]={{1,2,3},{4,5,6}};

/∗按行分段初始化∗/或:inta[2][3]={1,2,3,4,5,6};/∗按行连续初始化∗/或:inta[][3]={1,2,3,4,5,6};/∗省略第一维长度,但第二维长度不能省∗/b[2][4]={0};/∗所有的元素被赋值0∗/上一页下一页返回6.2二维数组的定义与引用

(2)可以对部分元素赋初值,未赋初值的元素自动取0值。但应表达清楚。例如:inta[3][4]={{1,2},{3},{8}};赋值后的元素值为又如:int[3][4]={1,2,3,8}赋值后的元素值为上一页下一页返回6.2二维数组的定义与引用

(3)在程序中对二维数组访问一般利用双循环。例如:for(j=0;j<3;j++)

/∗行数∗/for(k=0;k<4;k++)/∗列数∗/scanf(“%d”,&a[j][k]);/∗按行输入∗/a[3][2]=20;/∗给a[3][2]元素赋值∗/上一页下一页返回6.2二维数组的定义与引用

6.2.4二维数组应用实例【例6-7】将一个二维数组的行元素和列元素互换,存入另一个二维数组(转置)。分析:(1)将a数组初始化(或赋值),并输出。(2)用二重循环进行转置b[j][i]=a[i][j]。(3)输出b数组。程序的N-S图如图6.7所示。上一页下一页返回6.2二维数组的定义与引用

上一页下一页返回6.2二维数组的定义与引用

上一页下一页返回6.2二维数组的定义与引用

【例6-8】有一个3×4的矩阵,求出其中值最大的那个元素的值,以及所在的行号和列号。分析:先假设a[0][0]是最大的数,将其值存入max变量,然后将所有元素的值与之比较,若比较的值比max的值大,则将较大的值存入max,并将行号和列号分别存入row和column中;若比较的值比max中的小,则继续比较下一个。最终,max中存入的是数组12数中最大的数,row和column中存入的是该数的行号和列号。程序的N-S图如图6.8所示。上一页下一页返回6.2二维数组的定义与引用

上一页下一页返回6.2二维数组的定义与引用

上一页返回6.3字符数组的定义与引用

在C语言中只有字符变量而没有专门的字符串变量,字符串的存储依赖于字符数组。字符数组是用来存放和处理字符数据的特殊数组。字符数组又称为字符串,可以把字符型一维数组看作字符串变量。下一页返回6.3字符数组的定义与引用

6.3.1字符数组的定义字符数组的定义方式:char数组名[常量表达式];其中,常量表达式表示字符数组的长度。例如:charc[5];即c[0]='h';c[1]='a';c[2]='p';c[3]='p';c[4]='y';由于字符型与整型是相互通用的,因此上面的定义可改为intc[5];即c[0]='h';c[1]='a';c[2]='p';c[3]='p';c[4]='y';但此时,每个数组元素占2个字节的内存单元。上一页下一页返回6.3字符数组的定义与引用

6.3.2字符数组的初始化如果在定义字符数组时不进行初始化,那么数组中各元素的值是未知的。对字符数组初始化通常可以采用以下两种方式进行:1.将字符逐个赋予字符数组中的各个元素例如:chara[4]={'G','o','o','d'};表示把4个字符分别赋给a[0]~a[3]这4个元素。如果括号{}中字符个数大于数组长度(元素个数),则按语法错误处理。反之,如果花括号中字符个数小于数组长度,则只给数组中前面的元素赋值,后面的元素自动定位空字符('\0')。例如:charcity[5]=“Beijing”;

/∗语法错误∗/chara[8]={'G','o','o','d'};上面定义字符数组的存储结构图如图6.9所示。上一页下一页返回6.3字符数组的定义与引用

为了测定实际字符串长度,C语言规定了一个“字符串结束标志”,即'\0'。当遇到字符'\0'时,表示字符串结束。'\0'占内存空间,但不计入串的长度。即:一个长度为n的字符串,其占用的内存为n+1个字节空间,最后一个字节是字符串的结束标志。上一页下一页返回6.3字符数组的定义与引用

2.使用字符串常量给字符数组赋初值字符串常量是用一对双引号括起来的若干个字符组成的常量,编译系统对有n个字符组成的字符串常量总是分配n+1个字节的存储空间。例如:chara[5]={"Good"};或chara[5]="Good";可以写成chara[]="Good";a数组总共分配5个字节的存储空间,在a[4]中存入的是'\0'。如果将一个字符数组作为字符串使用,则在定义该字符数组时,数组的大小应是该字符串的有效长度加1。上一页下一页返回6.3字符数组的定义与引用

【注意】定义字符串类型时,长度不能省略。例如:charstr[];

/∗错误定义∗/上一页下一页返回6.3字符数组的定义与引用

6.3.3字符数组的引用在C语言中,对于数值型数组只能逐个引用数组元素而不能一次引用整个数组。而对于字符串数组,在写程序时,既可以逐个引用字符串中的单个字符,又可以一次引用整个字符串数组。在使用字符数组时,逐个引用字符串中的单个字符,可以通过使用数组名及其下标来实现;一次引用整个字符串数组,也可以通过使用数组名来实现。上一页下一页返回6.3字符数组的定义与引用

【例6-9】利用逐个引用字符串中的单个字符,将字符数组中的全部元素输出。上一页下一页返回6.3字符数组的定义与引用

【例6-10】利用一次引用整个字符串数组,将字符数组中的全部元素输出。上一页下一页返回6.3字符数组的定义与引用

6.3.4字符数组的输入与输出字符数组的输入输出可以有以下两种方法。1.逐个字符输入与输出在scanf和printf函数中使用格式符“%c”输入或输出一个字符。例如:

scanf("%c",&a[i]);printf("%c%c%c",a[0],a[1],a[2]);2.整个字符串一次输入与输出在scanf和printf函数中使用格式符“%s”输入或输出一个字符串。例如:

chara[]="China";printf("%s",a);在内存中字符数组a的存储结构如图6.10所示。上一页下一页返回6.3字符数组的定义与引用

【说明】(1)用%s输出时,无论数组元素有多少个,遇到第1个'\0'即结束。(2)输出字符不包括结束符'\0'。'\0'代表ASCII码值为0的字符,从ASCII码表中可以查到,ASCII码为0的字符是一个不可以显示的字符。(3)用scanf函数输入一个字符串时,系统会自动加上字符串结束符'\0'。例如:chara[6];scanf("%s",a);输入数据:China↙上一页下一页返回6.3字符数组的定义与引用

(4)在前面介绍过,scanf的各输入项必须以地址方式出现,而在C语言中规定,数组名就代表了该数组的首地址。整个数组是以首地址开头的一块连续的内存单元。设数组a的首地址为2000,即a[0]的单元地址为2000,则数组名a就代表这个首地址。因此,在a前面不能再加地址运算符&。如果写为“scanf("%s",&a);”,就是错误的,必须直接写出数组名。上一页下一页返回6.3字符数组的定义与引用

(5)用scanf函数输入多个字符串时,可用空格分隔开。例如:charstr1[5],str2[5],str3[5];scanf("%s%s%s",str1,str2,str3);输入数据:Howareyou?↙输入后,str1、str2、str3数组的存储结构图如图6.11所示。但是,如果改为charstr[13];scanf("%s",str);输入数据:Howareyou↙上一页下一页返回6.3字符数组的定义与引用

则只会将“How”输入,因为当用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串的结束符。所以只将空格前的字符“How”送入str数组。str数组存储结构图如图6.12所示。从输出结果可以看出,空格以后的字符都未能输出。为了避免这种情况,应采取上面的方法,多设几个字符数组,分段存放含空格的串。上一页下一页返回6.3字符数组的定义与引用

(6)输出字符串的方法:printf("%s",a);其执行的过程:按字符数组名a找到其数组起始地址,然后逐个输出数组中的各个字符,直到遇到字符串终止标志'\0'为止。上一页下一页返回6.3字符数组的定义与引用

6.3.5字符串处理函数C函数库提供了一些用来处理字符串的函数,使用这些函数可大大减轻编程的负担。使用输入/输出的字符串函数前,程序应包含头文件“stdio.h”;使用其他字符串函数前,程序则应包含头文件“string.h”。上一页下一页返回6.3字符数组的定义与引用

下面介绍几种最常用的字符串函数。1.字符串输出函数(puts函数)格式:puts(字符数组/字符串);功能:将数组中的字符串(以'\0'结束的字符序列)输出到终端,即在屏幕上显示该字符串,输完换行。即puts(str);与printf(“%s\n”,str);等价。用puts函数输出的字符串可以包含转义字符。上一页下一页返回6.3字符数组的定义与引用

例如:charstr[]={“China\nBeijing”};puts(str);输出:ChinaBeijing上一页下一页返回6.3字符数组的定义与引用

2.字符串输入函数(gets函数)格式:gets(字符数组/字符串);功能:从键盘输入一个字符串(以回车结束)放入数组,并且得到一个函数值,该函数值是字符数组的起始地址。例如:gets(str);从键盘输入:computergame↙将“computergame”字符串送入字符数组str(送14个字符,而不是13个字符),函数值为字符数组str的起始地址。当输入的字符串中含有空格时,输出仍为全部字符串。说明gets函数并不以空格作为字符串输入结束的标志,而只以回车作为输入结束。这是与scanf函数不同的。上一页下一页返回6.3字符数组的定义与引用

3.连接两个字符串函数(strcat函数)格式:strcat(字符数组1,字符数组2);功能:连接两个字符数组中的字符串,把“字符串2”接到“字符串1”后面,并删去“字符串1”后的串结束标志'\0',将结果放在“字符数组1”中。该函数的返回值为“字符数组1”的地址。例如:charstr1[30]={"China"};charstr2[]={"Beijing"};printf("%s",stract(str1,str2));输出:ChinaBeijing【注意】字符数组1应定义足够的长度,否则不能全部装入被连接的字符串。上一页下一页返回6.3字符数组的定义与引用

4.字符串复制函数(strcpy函数)格式:strcpy(字符数组1,字符数组2);功能:将“字符数组2”中的字符串复制到“字符数组1”。其中,“字符数组1”必须定义得足够大,以便容纳被复制的字符串。例如:charstr1[10];str2[]={"Beijing"};strcpy(str1,str2);执行后,str1的存储结构图如图6.13所示。上一页下一页返回6.3字符数组的定义与引用

【说明】(1)字符数组1的长度≥字符串2的长度。(2)复制时,连同'\0'一起复制。(3)不能把字符串或字符数组直接赋给一个字符数组。例如:charstr[6];str="China";

/∗错误,str表示一个地址∗/可用下面方法正确赋值:str[0]='C';str[1]='h';str[2]='i';str[3]='n';str[3]='a';或strcpy(str,"China");上一页下一页返回6.3字符数组的定义与引用

5.比较两个字符串函数(strcmy函数)格式:strcmy(字符串1,字符串2);功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。两个字符串比较的规则:对两个字符串从左至右逐个字符进行比较(按照ASCII码值的大小进行比较),直到出现不同的字符(或遇到'\0')为止。如果全部字符都相同,则两个字符串相等;若出现不同的字符,则以第一个不相同的字符的比较结果为准。(1)如果参加比较的两个字符串都由英文字母组成,其规律为:按字母表顺序,排在后面的比较大,小写字母要大于大写字母。(2)如果参加比较的两个字符串中含有其他字符,则以它们在ASCII码表中的值定。比较的结果由函数值返回,如表6-1所示。上一页下一页返回6.3字符数组的定义与引用

【注意】不能用下面形式来比较两个字符串:str1==str2或str1<str2或str1>str2只能用==0或strcmy(str1,str2)<0或strcmy(str1,str2)>0来判断。字符串的比较、复制、连接都必须使用函数。上一页下一页返回6.3字符数组的定义与引用

6.字符串长度测试函数(strlen函数)格式:strlen(字符串);功能:测试字符串实际长度(不含'\0'),并将其作为函数返回值。例如,strlen("China")值为5。7.转换为小写函数(strlwr函数)格式:strlwr(字符串);功能:将字符串中大写字母转换成小写字母。8.转换为大写函数(strupr函数)格式:strupr(字符串);功能:将字符串中小写字母转换成大写字母。上一页下一页返回6.3字符数组的定义与引用

6.3.6字符数组应用实例【例6-11】从键盘上输入一行英文句子(不超过80个字符),统计其中有多少个单词。分析:英文句子中单词的数目可由空格出现的次数来决定(连续的若干个空格作为一个空格;一行开头的空格不统计在内)。在测试时,如果某一个字符为非空格,而它前面的字符是空格,则表示新的单词开始,此时单词数加1。如果测试的当前字符为非空格,而其前面的字符也是非空格,则表示一个单词还没有结束。设字符串用str[100]存放,单词计数器为num,单词标志为word(word=0表示未出现新单词;word=1表示出现新单词)。程序的N-S图如图6.14所示。上一页下一页返回6.3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论