-高级语言程序设计-苏版-第6章 -数组_第1页
-高级语言程序设计-苏版-第6章 -数组_第2页
-高级语言程序设计-苏版-第6章 -数组_第3页
-高级语言程序设计-苏版-第6章 -数组_第4页
-高级语言程序设计-苏版-第6章 -数组_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

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

文档简介

1、123保存大量保存大量同类型的同类型的相关数据相关数据45a9a8a7 a1a0数组首地址数组首地址基类型基类型下标从下标从0开始开始6a9a8a7 a1a078如:如: int a5=6,2,3;int a5=6,2,3;等价于等价于: : a0=6; a1=2;a2=3; a3=0; a4=0;a0=6; a1=2;a2=3; a3=0; a4=0; int a=1,2,3,4,5,6;int a=1,2,3,4,5,6;编译系统根据初值个数确定数组编译系统根据初值个数确定数组长度(元素个长度(元素个数数)int a5=0int a5=0,0 0,0 0,0 0,00; 或或 int a5

2、=0int a5=0;910main() int a4 = 1,2,3,4, b4; b = a; 解决方法解决方法 方法方法1:1:逐个元素赋值逐个元素赋值 b0=a0; b1=a1; b2=a2; b3=a3; 方法方法2:2:通过循环赋值通过循环赋值 int i; for (i=0;i4;i+) bi = ai; 原因原因: :数组名表示数组的首地址数组名表示数组的首地址, ,其值不可改变其值不可改变! !11121312345612078910111415只能逐个对数组元素进行操作(字符数组例外)只能逐个对数组元素进行操作(字符数组例外)int a10,i;scanf( %d ,&am

3、p;ai);for (i=0;i10;i+) scanf( %d ,&ai);printf( %d ,ai);for (i=0;i10;i+) printf( %d ,ai);16程序运行结果:81 64 49 36 25 16 9 4 1 017步骤步骤: :1. 1. 输入输入:for:for循环输入循环输入1010个整数个整数2. 2. 处理处理: :(a) (a) 先令先令max=min=x0max=min=x0(b) (b) 依次用依次用xixi和和max,minmax,min比较比较( (循环循环) ) 若若maxxi,maxxi,minxi,令令min=ximin=xi3

4、. 3. 输出输出: :maxmax和和min min 18#include void main() int x10,i,max,min; for(i=0;i10;i+) printf(“ Enter x%d:n“ , i+1);scanf(%d, &xi); max=min=x0; for(i=1;i10;i+) if(maxxi) min=xi; printf(Max is %dn,max); printf(Min is %dn,min);#include #define SIZE 10void main() int xSIZE,i,max,min; for(i=0;iSIZE;i

5、+) printf(“ Enter x%d:n“ , i+1);scanf(%d, &xi); max=min=x0; for(i=1;iSIZE;i+) if(maxxi) min=xi; printf(Max is %dn,max); printf(Min is %dn,min);19)3()2(12) 1(1121nFFFnFnFnnn20)3()2(12) 1(1121nFFFnFnFnnn21方法一:方法一: i i: 0: 04 a4 ai i a9-i a9-i 22方法二:方法二: for(for(i i=0,j=9; =0,j=9; i ija1,则交换;然后比较第二

6、个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上(2)对前n-1个数进行第二趟冒泡排序,结果使前n-1个数中最大的数被安置在 第n-1个元素位置(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束例5:排序问题:冒泡排序(交换排序)、选择排序24例例38 49 65 76 13 27 30 97 第一趟38 49 65 13 27 30 76 第二趟38 49 13 27 30 65 第三趟38 13 27 30 49 第四趟13 27 30 38 第五趟13 27 30 第六趟49 38 65 97 76 13 27 30

7、初始顺序n=8384976971397972730971376762713652765306513134949304927382738303876 13 27 第七趟用冒泡法对8个数排序(图解)30如果有如果有n n个个数,则要数,则要进行进行n-1n-1趟趟比较。比较。在第在第j j趟比趟比较中要进较中要进行行n-jn-j次两次两两比较。两比较。25输入输入8个数给个数给a0 到到 a7for i=1 to 7for j=0 to 7-iajaj+1真真假假ajaj+1输出输出a0 到到 a7#include void main() int a8,i,j,t; for(i=0;i8;i+)

8、scanf(%d,&ai); for(i=1;i=7;i+) for (j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; for(i=0;i8;i+)printf(%d ,ai);数据定义:数据定义:数组:数组:a8循环变量:循环变量:i,j 外循环:外循环:i=1 to 7 内循环:内循环:j=0 to 7-i交换:交换: ajaj+1交换中间变量:交换中间变量:t26方法方法2 2:用简单用简单选择法选择法对对7 7个个数(数(少少1-1-画图方便画图方便)排序)排序 选择排选择排序序排序过程排序过程: : 由小到大排序由小到大排序(1 1)首先)首先从从n n个

9、数中找出最小的个数中找出最小的(通过(通过n-1n-1次比较次比较),),将它将它与第一个数交换与第一个数交换第一趟选择排序第一趟选择排序,结果,结果最小最小的数被安的数被安置在置在第一个元素位置第一个元素位置上上;(2 2)再从剩余的)再从剩余的n-1n-1个数中找出个数中找出次小次小的的数(数(通过通过n-2n-2次比较次比较),将它与第二个数交换,将它与第二个数交换第二趟选择排序第二趟选择排序;(3 3)重复上述过程,共经过)重复上述过程,共经过n-1n-1趟趟排序后,排序结束排序后,排序结束。27例初始: 49 38 65 97 76 13 27 kji=11349一趟: 13 38

10、65 97 76 49 27 i=22738二趟: 13 27 65 97 76 49 38 三趟: 13 27 38 97 76 49 65 四趟: 13 27 38 49 76 97 65 五趟: 13 27 38 49 65 97 76 六趟: 13 27 38 49 65 76 97 kkkkjjjjjjjjjj例 用简单选择法对10个数排序28#include void main() int a7,i,j,k,t; for(i=0;i7;i+) scanf(%d,&ai); for(i=1;i=6;i+) k=i-1; for(j=i; j=6;j+) if(ajak) k=

11、j; if(k!=i-1) t=ai-1; ai-1=ak; ak=t; for(i=0;i7;i+)printf(%d ,ai);冒泡排序、选择排序比较次数:冒泡排序、选择排序比较次数: (n-1)+(n-2)+1=n(n-1)/2输入输入7个数给个数给a0 到到 a6for i=1 to 6for j=i to 6ajak真真假假k=j输出输出a0 到到 a7k=i-1k!=i-1真真假假ai ak29 存储类型数据类型数组名存储类型数据类型数组名 常量表达式常量表达式 常量表达式常量表达式 ;例例: : intint a34; a34; float b25; float b25; int

12、int c234; c234; intint a3,4; a3,4; ( ) 行数行数列数列数元素个数元素个数= =行数行数* *列数列数303132下图表示对下图表示对a34数组存数组存放的顺序放的顺序 int a32a01a10a11a20a21014523a00a00 a01a10 a11a20 a2133int c23401234567.20212223c000c001c002c003c010c011c012c013c020c021c022c023c100c101c102c103c110c111c112c113c120c121c122c12334例 int a34;2016172018

13、1920202120222320089201011201213201415200012002320045200067a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23每个元素ai由包含4个元素的一维数组组成二维数组a是由3个元素组成a0a1a2行名014523a01a02a03a10a11a00a13a20a21a22a23a1267101189a0a1a2二维数组可被看作是一种特殊的一维数组;二维数组可被看作是一种特殊的一维数组;它的元素又是一个一维数组。它的元素又是一个一维数组。35例如:例如: a23 a23 表示表示a a数组的第三行四列的元素。

14、数组的第三行四列的元素。 下标可以是整型表达式,如下标可以是整型表达式,如 a2-12a2-12* *2-12-1 不要写成不要写成 a2,3a2,3,a2-1,2a2-1,2* *2-12-1形式形式 数组定义数组定义时方括号中给出的是某一维的长度;只能是时方括号中给出的是某一维的长度;只能是常量常量 数组元素数组元素中下标是该元素的位置标识;常量,中下标是该元素的位置标识;常量,变量变量或表达式或表达式 36数组元素可以出现在表达式中,也可以被赋值数组元素可以出现在表达式中,也可以被赋值例如:例如:b12=a23/2b12=a23/2在使用数组元素时,应该注意下标值应在已定义的数组大小的在

15、使用数组元素时,应该注意下标值应在已定义的数组大小的范围内。范围内。intint a34; / a34; /* * 定义定义a a为为3 34 4的数组的数组 * */ / a34=3; a34=3; 37383940414243数组的输入和输出只能数组的输入和输出只能逐个逐个对数组元素进行操作对数组元素进行操作(字符数组例外)(字符数组例外)int a23,i,j;输入第输入第i行第行第j列元素:列元素:scanf(“%d”,&aij);输入整个数组元素:输入整个数组元素:for (i=0;i2;i+) for(j=0;j3;j+) scanf(“%d”,&aij);输出第输

16、出第i行第行第j列列元素:元素:printf(“%d”,aij);输出整个数组元素:输出整个数组元素:for (i=0;i2;i+) for(j=0;j3;j+) printf(“%d”,aij);4445464748495051525354555657哈,找到了!哈,找到了!事先不必排序事先不必排序58哈,找到了!哈,找到了!按升序排序按升序排序59唉,没找到!唉,没找到!60找到时返回找到时返回下标位置下标位置找不到时找不到时 返回返回-1-1若未按学号排序,若未按学号排序,则如何修改程序?则如何修改程序?61void DataSort(int score, long num, int n

17、) /*选择法选择法*/ int i, j, k, temp1; long temp2; for (i=0; in-1; i+) k = i; for (j=i+1; jn; j+) if (numj numk) k = j; /*记录最大数下标位置记录最大数下标位置*/ if (k != i) /*若最大数不在下标位置若最大数不在下标位置i*/ temp1 = scorek; scorek = scorei; scorei = temp1; temp2 = numk; numk = numi; numi = temp2; 按学号由小按学号由小到大排序到大排序62a00a01a02a10a11

18、a12a00a01a02a10a11a12实际传送的是数组第一个元素的地址实际传送的是数组第一个元素的地址63a00a01a02a10a11a12a00a01a02a10a11a12实际传送的是数组第一个元素的地址实际传送的是数组第一个元素的地址偏移偏移1*3+2646566可省略数组第一维的长度可省略数组第一维的长度不能省略第二维的长度不能省略第二维的长度67686970一串以一串以00结尾的字符在结尾的字符在CC语言中被看作字符串语言中被看作字符串用用双引号双引号括起的一串字符是括起的一串字符是字符串常量字符串常量,CC语言自动为语言自动为其添加其添加00终结符终结符CC语言并语言并没有没

19、有为字符串提供任何为字符串提供任何专门的表示法专门的表示法,完全使,完全使用字符数组和字符指针来处理用字符数组和字符指针来处理用来用来存放字符数据存放字符数据的数组是字符数组的数组是字符数组每个元素都是字符类型的数组每个元素都是字符类型的数组字符数组是数组的一个字符数组是数组的一个特殊情况特殊情况,定义、引用方法同前,定义、引用方法同前,但也有其,但也有其独特独特的引用方法。的引用方法。71例例 int c10, ch34;例例 char c10, ch34;72 例例 char ch5=B,o,y;char ch5=B,o,y;ch0ch0B Bo oy y0000逐个字符赋值逐个字符赋值c

20、h1ch1 ch2ch2 ch3ch3 ch4ch4 例例 char ch5=H,e,l,l,o;char ch5=H,e,l,l,o;ch0ch0H He el ll lo o逐个元素赋值逐个元素赋值ch1ch1 ch2ch2 ch3ch3 ch4ch4如果初值个数如果初值个数小于小于数组长度,则只将这些字符赋给数组中前面那些元素,数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为其余的元素自动定为空字符空字符。 例例 char diamond5=char diamond5=.,., .,.,* *,.,.,* *,.,.,* *, , * *, , ., ., ., .,

21、. , ,* *,.,.,* *, , .,.,* *,., .,., .,* *;二维字符数组初始化二维字符数组初始化. . .* *0000. .* *. .* *00* *. . . .* *. .* *. .* *00. . .* *0000diamond0diamond0diamond1diamond1diamond2diamond2diamond3diamond3diamond4diamond473 例例 char ch6=“Hello”; char ch6=“Hello”; char ch=“Hello”;用字符串常量用字符串常量ch0Helloch1ch2ch3ch40ch57

22、4以字符串方式赋值时,必须保证数组元素个数以字符串方式赋值时,必须保证数组元素个数字符个数字符个数+1+1。(后面自动加一个(后面自动加一个00) char a char a6 6=“hello”; =“hello”; char fruit7=“Apple”,”Orange”, ”Grape”,”Pear”,”Peach”;char fruit7=“Apple”,”Orange”, ”Grape”,”Pear”,”Peach”;二维字符数组初始化二维字符数组初始化fruit0fruit0fruit1fruit1fruit2fruit2fruit3fruit3fruit4fruit4A Ap p

23、p pl le e0000OOr ra an ng ge e00GGr ra ap pe e0000P Pe ea ar r000000P Pe ea ac ch h000075例:例: #include void main() char a11= “I am happy”, b10; int i; for (i=0;i10;i+) scanf(“%c”,&bi); for (i=0;i11;i+) printf(“%c”,ai); printf(“n”); for (i=0;i10;i+) printf(“%c”,bi);76例例:用用%c void main() char str5

24、; int i; for(i=0;i5;i+) scanf(“%c”, &stri); for(i=0;i5;i+) printf(“%c”, stri);例例:用用%s void main() char str5; scanf(“%s”, str); printf(“%s”, str);用字符数组名用字符数组名,遇遇0结束结束例:用例:用putcharfor (i=0; si!=0; i+) putchar(si); putchar(n);77使用使用scanfscanf函数和格式控制函数和格式控制%s%s接收字符串给数组时,接收字符串给数组时,scanfscanf函数中的地址表列部

25、分应该是函数中的地址表列部分应该是数组名数组名。如果地址表列部分写成如果地址表列部分写成某个数组元素的地址某个数组元素的地址,所接收的,所接收的字符串将从该元素开始存入数组。字符串将从该元素开始存入数组。#includevoid main()char a20=abc;scanf(%s,&a2);printf(%sn,a);scanf(%s, a);等价于等价于 :scanf(%s,&a0);输入:输入:Hello输出:输出:abHello不加不加&78使用使用printfprintf函数和格式控制函数和格式控制%s%s输出字符数组中的字符串时输出字符数组中的字符串时,p

26、rintfprintf函数中的输出表列部分应该是函数中的输出表列部分应该是数组名数组名。如果输出。如果输出表列部分写成某个表列部分写成某个数组元素的地址数组元素的地址,输出将从该元素开,输出将从该元素开始。始。#includevoid main()char a20=abc;scanf(%s,&a2);printf(%sn,&a2);输入:输入:Hello输出:输出:Hello79#includevoid main()char a20;scanf(%s,a);printf(%sn,a);输入:输入:How are you?输出:输出:How使用使用scanfscanf函数和格式控

27、制函数和格式控制%s%s接收用户输入的字符串时接收用户输入的字符串时,如果字符串中,如果字符串中包含有空格包含有空格,将只接收第一个空格前面,将只接收第一个空格前面的字符串部分。的字符串部分。80#includevoid main()char a20=a,b, 0 ,c,d,0,e,f; printf(%sn,a);输出:输出:ab#includevoid main() char a20=a,b, 0 ,c,d,0,e,f; int i; for(i=0;i20;i+) printf(%c,ai); printf(n);输出:输出:ab cd ef使用使用printfprintf函数输出数组中

28、函数输出数组中的字符串时,遇到字符串结的字符串时,遇到字符串结束标志束标志00时输出停止时输出停止,不,不输出输出00及其以后其它元素及其以后其它元素的值。的值。假如字符数组中有假如字符数组中有多个多个00,仅输出第一个仅输出第一个00之前之前各各元素的值。元素的值。81(5 5)使用)使用scanfscanf函数和格式控制函数和格式控制%s%s接收字符串给数组时接收字符串给数组时,字符串包含的,字符串包含的字符个数数组长度减字符个数数组长度减1 1(6 6)使用)使用scanfscanf函数和格式控制函数和格式控制%c%c接收字符串给数组时接收字符串给数组时,可以在字符串末尾,可以在字符串末

29、尾人为添加一个字符串结束标志人为添加一个字符串结束标志00 82#include void main() char a15,b5,c5; scanf(%s%s%s,a,b,c); printf(a=%snb=%snc=%sn,a,b,c); scanf(%s,a); printf(a=%sn,a);输出:输出:a=How b=are c=you? a=How运行情况:运行情况:输入:输入:How are you?输入:输入:How are you?scanf中中%s输入时输入时,遇遇空格或、空格或、tab键或回车键或回车结束结束83使用字符串使用字符串输入、输出函数时,应把库文件输入、输出函数

30、时,应把库文件“stdio.h”stdio.h”包含到程序中包含到程序中;使用;使用其它字符串处理函数时,应把库文件其它字符串处理函数时,应把库文件“string.h”string.h”包含到程序中包含到程序中格式:格式:gets(gets(字符数组字符数组) )功能功能:从键盘输入一以回车结束的字符串放入字符数组中,:从键盘输入一以回车结束的字符串放入字符数组中, 并自动加并自动加00说明:说明:输入串长度应小于字符数组长输入串长度应小于字符数组长 (1 1)getsgets函数执行时仅需要一个地址,函数执行时仅需要一个地址,对该地址对该地址是不是数组首地址并不作要求是不是数组首地址并不作要

31、求。#include#includevoid main()void main() char s20=abc;char s20=abc; gets(gets(&s2)&s2); ; printf(%sn,s);printf(%sn,s); (2 2)getsgets函数以函数以回车回车作为用户输入作为用户输入字符串字符串结束的标志结束的标志,能够,能够接收包含空接收包含空格格的字符串的字符串 (3 3)getsgets函数一次只能接收一个字函数一次只能接收一个字符串给一个字符数组,符串给一个字符数组, 84格式:格式:puts(puts(字符数组字符数组) )功能:功能:向显示器

32、输出字符串(输出完,换行)向显示器输出字符串(输出完,换行)说明:说明:字符数组必须以字符数组必须以00结束结束#include#includevoid main()void main() char a20;char a20;gets(a);gets(a);puts(a);puts(a); (1 1)putsputs函数的参数可函数的参数可以是字符数组,也可以以是字符数组,也可以是字符串常量。是字符串常量。例如:例如:puts(I am a boy);puts(I am a boy);(2 2)putsputs函数的参数可函数的参数可以是字符数组中某个元以是字符数组中某个元素的地址,这时输出将

33、素的地址,这时输出将从该元素开始从该元素开始3 3)putsputs函数运行时,输函数运行时,输出第一个字符串结束标出第一个字符串结束标志志00前的所有字符,然前的所有字符,然后将后将00作为回车输出,作为回车输出,可以包含转义字符。可以包含转义字符。 #include#includevoid main()void main() char a20=a,b, 0 ,c,d,0,e,f;char a20=a,b, 0 ,c,d,0,e,f;puts(a);puts(a); 输出:输出:abab85格式:格式:strcatstrcat( (字符数组字符数组1,1,字符数组字符数组2)2)功能:功能:

34、把字符数组把字符数组2 2连到字符数组连到字符数组1 1后面后面返值:返值:返回字符数组返回字符数组1 1的首地址的首地址说明:说明:字符数组字符数组1 1必须足够大必须足够大 连接前连接前, ,两串均以两串均以00结束结束; ;连接后连接后, ,串串1 1的的00取消取消, , 新串最后加新串最后加0086char str130=Peoples Republic of ;char str2=China;printf(%s,strcat(str1,str2); 输出:输出:Peoples Republic of China 87 一般形式:一般形式:strcpystrcpy( (字符数组字符数

35、组1 1,字符串,字符串2) 2) 作用:作用:将字符串将字符串2 2复制到字符数组复制到字符数组1 1中去。中去。 例如:例如: char str1 char str11010,str2str2=China;=China; strcpystrcpy(str1(str1,str2); str2); 88(1 1)字符数组字符数组1 1必须定义得必须定义得足够大足够大,以便容纳被复制的字符串。,以便容纳被复制的字符串。字符数组字符数组1 1的长度不应小于字符串的长度不应小于字符串2 2的长度。的长度。 (2 2)字符数组字符数组1 1必须写成数组名形式必须写成数组名形式( (如如str1)str

36、1),字符串字符串2 2可以是字可以是字符符数组名数组名,也可以是一个,也可以是一个字符串常量字符串常量。如。如strcpystrcpy(str1(str1,China)China); (3 3)复制时连同字符串后面的)复制时连同字符串后面的00一起复制一起复制到字符数组到字符数组1 1中。中。 (4 4)可以用)可以用strcpystrcpy函数将字符串函数将字符串2 2中中前面若干个字符前面若干个字符复制到字符数复制到字符数组组1 1中去。中去。例如例如: :strcpystrcpy(str1(str1,str2str2,2 2); );作用是将作用是将str2str2中中前面前面2 2个

37、个字符复制到字符复制到str1str1中去,然后再加一个中去,然后再加一个00。 89(5 5)不能用赋值语句将一个字符串常量或字符数组直接给一个)不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。字符数组。 如:如: str1=China; str1=China; 不合法不合法 str1=str2; str1=str2; 不合法不合法用用strcpystrcpy函数只能将一个字符串复制到另一个字符数组中去。函数只能将一个字符串复制到另一个字符数组中去。用赋值语句只能将一个字符赋给一个字符型变量或字符数组元用赋值语句只能将一个字符赋给一个字符型变量或字符数组元素。素。 下面是合法的使

38、用下面是合法的使用: :char a5,c1,c2;c1=A; c2=B;a0=C; a1=h; a2=i; a3=n; a4=a; 90一般形式:一般形式:strcmpstrcmp( (字符串字符串1 1,字符串,字符串2) 2) 作用:作用:比较字符串1和字符串2。 从左到右依次比较对应字符的ASCII,大者认为对应串大。(1) 如果字符串1=字符串2,函数值为0。(2) 如果字符串1字符串2,函数值为一正整数(1)。(3) 如果字符串1str2) printf(yes);而只能用:if(strcmp(str1,str2)0) printf(yes);92一般形式:一般形式:strlens

39、trlen ( (字符数组字符数组) ) 作用:测试字符串长度的函数函数的值:字符串中的实际长度(不包括0在内)。例例 对于以下字符串,对于以下字符串,strlenstrlen(s)(s)的值为:的值为:(1 1) char char strstr1010=China;=China;(2 2) char s10=A,0,B,C,0,D; char s10=A,0,B,C,0,D;(3 3) char s =“tv0willn”; char s =“tv0willn”;答案:答案:5 5 1 3 1 3 93【例例1 1】输入一串字符,长度小于输入一串字符,长度小于5050,统计字符串中相邻字符

40、对,统计字符串中相邻字符对出现的频次,然后输出统计结果。比如输入出现的频次,然后输出统计结果。比如输入“abcs123”abcs123”,因为,因为a a与与b b、b b与与c c、1 1与与2 2、2 2与与3 3都是相邻字符对,所以输出都是相邻字符对,所以输出4 4。#include#include void main()void main() char s50; char s50;intint i,ni,n; ;gets(s);gets(s);i i=0;=0;n=0;n=0;while(si+1!=0)while(si+1!=0) if(sif(si i+1= =si+1)+1= =

41、si+1) n+; n+;i i+;+; printfprintf(%d(%dn,nn,n); ); 分析:分析:n将字符存入数组;将字符存入数组;n循环:比较各数组元素与其相循环:比较各数组元素与其相邻数组元素的关系,如果满足条邻数组元素的关系,如果满足条件(件( if(s if(si i+1= =si+1) +1= =si+1) ),则计),则计数加数加1 1;n最后输出统计结果。最后输出统计结果。94【例例2 2】输入一串字符,长度小于输入一串字符,长度小于5050,统计字符串中包含多少个,统计字符串中包含多少个单词,输出统计结果。比如输入单词,输出统计结果。比如输入“I am a bo

42、y”I am a boy”,输出,输出4 4。#include#include#include#includevoid main()void main() char s50;char s50;int i,m,n;int i,m,n;gets(s);gets(s);m=strlen(s);m=strlen(s);n=0;n=0;if(m0)if(m0) for( for(i i=0;i=0;im;im;i+)+) if(sif(si i!= != & si+1= = ) & si+1= = ) n+; n+; n+; n+; printf(%dn,n);printf(%dn,n); 分析:分析:n首先将字符串存入数组首先将字符串存入数组;n循环:循环:比较数组中各元素与其相比较数组中各元素与其相邻数组元素的关系,如果该数组邻数组元素的关系,如果该数组元素为字符,而其相邻元素为空元素为字符,而其相邻元素为空格格( s si i!= != & si+1= = & si+1= = ),则认为存在一个单词,计数加则认为存在一个单词,计数加1 1;n最后输出统计结果。最后输出统计结果。加上最后一加上最后一个单词个单词95【例例3 3】输入输入3 3个字符串,个字符串,输

温馨提示

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

评论

0/150

提交评论