第4章数组和字符串.ppt

上传人:sccc 文档编号:5635728 上传时间:2023-08-04 格式:PPT 页数:93 大小:1.70MB
返回 下载 相关 举报
第4章数组和字符串.ppt_第1页
第1页 / 共93页
第4章数组和字符串.ppt_第2页
第2页 / 共93页
第4章数组和字符串.ppt_第3页
第3页 / 共93页
第4章数组和字符串.ppt_第4页
第4页 / 共93页
第4章数组和字符串.ppt_第5页
第5页 / 共93页
点击查看更多>>
资源描述

《第4章数组和字符串.ppt》由会员分享,可在线阅读,更多相关《第4章数组和字符串.ppt(93页珍藏版)》请在三一办公上搜索。

1、1,第4章数组和字符串,2,第4章 数组和字符串,4.1 数组的概念 4.2 一维数组4.3 二维数组4.4 字符串与字符函数,3,4.1 数组的概念,问题的提出:第一个问题:输入100个学生的“C程序设计”课程的成绩,将这100个分数从小到大输出。第二个问题:输入100个学生的“C程序设计”课程的期中和期末成绩,算出总评成绩,总评成绩为“30%期中成绩+70%期末成绩”,计算总评成绩的分数段情况。,4,1.数组的定义,按序排列的同类数据元素的集合就称为数组。从概念上来说,数组是一组变量,这组变量应该满足下列条件:具有有相同的名字 具有相同的数据类型 在存储器中连续存放。按数组元素类型的不同,

2、数组又可分为数值型数组字符型数组指针型数组结构体型数组,5,2.数组的数据类型,数组的数据类型可以是各种基本数据类型如int、float、double、char、long等。还可以是:指针型结构体型共用体型枚举型(以上类型后续章节介绍)同一数组中的所有元素必须是相同类型的。,6,3.数组的维数,一维数组元素有一个下标,如a1二维数组元素有两个下标,如a11三维数组三个下标,如a111C语言的数组可以是多维的,但一般常用的是一维数组和二维数组。,7,4.2一维数组,4.2.1一维数组的定义4.2.2一维数组的初始化4.2.3一维数组的引用,8,4.2.1一维数组的定义,一维数组定义的语法格式如下

3、:类型说明符 数组名 数组长度;其中:(1)“类型说明符”可以是任何一种基本数据类型或构造数据类型。例如:int data5;/*整型数组data,有5个元素。*/char string20;/*字符型数组string,有20个元素*/(2)“数组名”命名规则和变量命名规则相同。(3)数组名后的“数组长度”表示数组中数据元素的个数,数组长度只能是一个整型常量。,9,(4)一个数组定义语句中可以只定义一个数组,也可以定义多个数组,还可以同时定义数组和变量。例如:float b10,c20,f;定义了:单精度浮点型数组b,有10个元素;单精度浮点型数组c,有20个元素;浮点型变量f。,10,程序段

4、一:#define Size 5main()int aSize,bSize+10;/*正确*/程序段二:main()int n=5;int datan;/*错误*/,例如:,11,一组red整数,12,16位,数组red有13个元素,下标为012注意:没有red13。,定义整型数组red,13,4.2.2一维数组的初始化,初始化是指在数组定义时给数组元素赋予初值。格式:类型说明符 数组名常量表达式=数据值1,数据值2,数据值n;注意:数组初始化是在编译阶段进行的,由可执行语句完成的,因此不能将初始化的“=”与赋值号混淆。规定:可以只给部分元素赋初值。没有赋初值的元素:对于数值型数组,自动赋初值

5、为0;对字符型数组,自动赋初值为空字符。例如:,14,int red13=1,2,3,4;则red4red12的初值都为0。只能给元素逐个赋值,不能给数组整体赋值。例如:给数组red中的13个元素全部赋值“2”只能用以下形式来表示:int red13=2,2,2,2,2,2,2,2,2,2,2,2,2;而不能为了方便写成如下的形式:int red13=2;初始化数组时,允许省略数组的长度。例如:int red13=1,2,3,4,5,6,7,8,9,10,11,12,13;可写为:int red=1,2,3,4,5,6,7,8,9,10,11,12,13;,15,4.2.3一维数组的引用,格式

6、:数组名下标表达式其中:数组下标可以是整型变量或整型表达式,任何一个数组元素的引用都可以看成是一个变量的使用。下标从0开始,不能大于数组长度-1例如:data4、datai+j、datai+都是合法的引用方式。,16,【例4.1】数组m8存储其下标值,反向输出m的值。#includemain()int i,m8;for(i=0;i=0;i-)printf(%d,mi);,程序的运行结果如下:7 6 5 4 3 2 1 0,17,允许用表达式表示下标。【例4.2】在数组m8中存储偶数并输出。#includemain()int i,m8;for(i=0;i8;)mi+=2*i+2;for(i=0;

7、i=7;i+)printf(%d,mi);,程序的最后运行结果如下:2 4 6 8 10 12 14 16,18,一维数组应用举例,19,例1:用数组方式读入5个整数,并求和。,/*sum of 5 interger*/#include stdio.hvoid main()int i,data5,sum=0;printf(nPlease enter 5 integer:);for(i=0;i5;i+)scanf(%d,20,例2:用数组方式解决Fibonacci数列问题,求出Fibonacci数列的前20项存储在数组中,并将数组内容输出。,前一章的程序:用迭代思想#include stdio.

8、hvoid main()int a,b,j,f;a=1;b=1;printf(%10d%10d,a,b);for(j=3;j=20;j+)f=a+b;a=b;b=f;printf(%10d,f);if(j%5=0)printf(n);,21,#include stdio.hvoid main()int i,fib20=1,1;/*初始化*/printf(n);for(i=2;i20;i+)fibi=fibi-1+fibi-2;for(i=1;i=20;i+)printf(%10d,fibi-1);if(i%5=0)printf(“n”);/*每行输出5个*/,22,例3:输入100个整数,求出

9、最小的数以及第一个最小的数在数组中的下标。分析:用一个变量min_allo记住最小元素的下标开始时,假设第0的元素最小,min_allo=0循环从第一个元素开始,到第99个元素结束判断该元素是否比下标为min_allo的元素还要小,如果是,就让min_allo记住这个新的最小元素的位置。,23,#include stdio.h#define SIZE 100void main()int i,dataSIZE;int min_allo;/*记录最小元素的下标*/printf(nPlease input%d int:,SIZE);for(i=0;iSIZE;i+)scanf(%d,24,例4:输入

10、10个整数,从小到大排列并输出。,何为冒泡排序法算法:(从小到大)将两个相邻的数比较,将小的调换到前头.每一趟把最大的数放到正确的位置。何为选择排序法算法:每次找到最小的数,再和相应位置的数调换位置。,25,985420,1、用冒泡法对10个数进行升序排序算法:(从小到大)将两个相邻的数比较,将小的调换到前头.每一趟把最大的数放到正确的位置。,895420,859420,854920,854290,854209,第一趟,结果,第5次,第4次,第3次,第2次,第1次,第二趟,26,27,冒泡法程序main()int a11,i,j,t;printf(“input 10 number:n”);fo

11、r(i=1;iai+1)t=ai;ai=ai+1;ai+1=t;printf(“the sorted numbers:n”);for(i=1;i11;i+)printf(“%4d”,ai);,28,985420,085429,025489,024589,交换过程,结果,第5步,第4步,第3步,第2步,第1步,024589,024589,2、用选择法对10个数进行升序排序。算法:每次将最小的数放到正确的位置。,思路:设有m个数,排序过程分为m-1个步骤:第1步、在m个数中找出最小数,然后和第一个数交换,前1个数已经排好序。第2步、在m-1个数中找出最小数,然后和第2个数交换,前2个数已经排好序。

12、第k步、在m-k+1个数中找出最小数,然后和第k个数交换,前k个数已经排好序。这样一直到第m-1步结束。,29,main()int a10,i,j,t,k;for(i=0;i10;i+)scanf(“%d”,选择法程序:,作业:请画出选择排序法的流程图。并分析两种排序法的区别。,30,思考用冒泡法和选择法如何解决第一个问题:输入100个学生的“C程序设计”课程的成绩,将这100个分数从小到大输出?,31,用一维数组解决第二个问题:输入100个学生的“C程序设计”课程的期中和期末成绩,算出总评成绩,总评成绩为“30%期中成绩+70%期末成绩”,计算总评成绩的分数段情况。分析:本题要使用三个平行的

13、一维数组。两个数组的第i个元素分别记录了一个学生的期中成绩和期末成绩。第三个数组的第i个元素由另两个数组的第i个元素计算得到。,32,score1,期中成绩,score2,期末成绩,finalScore,总评期中成绩30期末成绩70,剪不断,理还乱!有没有更好的方法?请看二维数组!,33,4.3 二维数组,4.3.1 二维数组的定义4.3.2 二维数组的初始化4.3.3 二维数组的引用,34,4.3.1二维数组的定义,语法:类型说明符 数组名行数列数其中“行数”表示第一维下标的长度“列数”表示第二维下标的长度。,35,如果一维数组是一排平房,那么二维数组就是一栋楼房,36,例如:int m45

14、;/*定义了一个数组名为m的二维数组,其中行数为4、列数为5*/该数组的数组元素共有45=20个,分别为:m00,m01,m02,m03,m04m10,m11,m12,m13,m13m20,m21,m22,m23,m23m30,m31,m32,m33,m34,37,题外话.多维数组的扩展,多维数组可以由二维数组扩展而得到,例如:int m234;定义了一个数组名为m的三维数组,按顺序进行展开后的各个元素值分别如下:m000,m001,m002,m003m010,m011,m012,m013m020,m021,m022,m023m100,m101,m102,m103m110,m111,m112,

15、m113m120,m121,m122,m123,38,关于二维数组的说明:,(1)二维数组在概念上是二维的,也就是说其下标在两个方向上变化。(2)在语言中,二维数组是按行排列的。(3)数组元素所占的存储空间大小跟其类型有关系。(4)一个二维数组可以看成为若干个一维数组。如m45中包括了四个一维数组:m0,m1,m2,m3注意:m0、m1、m2和m3不能当作数组元素使用,因为它们是一维数组名,不是一个单纯的数组元素。,39,stu_score是一个53的二维数组。表示共有5个学生(5行),每行第一列是期中成绩,第二列是期末成绩,第三列期中30%期末70,存储方式,40,计算机的内存是连续编址的,

16、C语言的编译系统采用按行排列。,a34,41,4.3.2二维数组的初始化,语法:数据类型说明符 数组名行数列数=数据值,数据值,数据值,数据值,数据值,数据值;或者数据类型说明符 数组名行数列数=数据值,数据值,数据值;,42,说明:,(1)二维数组初始化和一维数组初始化的方法基本相同。区别:二维数组可按行分段初始化,也可以按行连续初始化。例如对数组m43:按行分段初始化可写为:int m43=78,65,80,67,89,65,53,68,98,57,88,67;其中,78,65,80是赋给第一行3个数组元素的,这里可以看成是赋给一维数组m0的;67,89,65是赋给第二行3个数组元素的,这

17、里可以看成是赋给一维数组m1的;依次类推。,43,按行连续初始化可写为:int m43=78,65,80,67,89,65,53,68,98,57,88,67;各元素获得的初值和第种方式的结果完全相同。C语言规定,用这种方式给二维数组赋初值时,是先按行、后按列的顺序进行的。(2)可以只对部分元素赋初值,未赋初值的元素自动取0值。例如:int m34=1,2,3;是对每一行的第一列元素赋值,未赋值的元素取0值。赋值后各元素的值依次为:1 0 0 02 0 0 03 0 0 0,44,例如:对数组a32:int a32=5,6,7,8,9,10;/*按行分段初始化*/int a32=5,6,7,8

18、,9,10;/*按行连续初始化*/上面两种初始化的结果是完全相同的。,45,下面两种初始化int a32=5,7,9;/*按行分段初始化*/int a32=5,7,9;/*按行连续初始化*/则结果却完全不一样。,46,(3)如果对全部元素赋初值,则第一维的长度可以省略,编译系统会自动计算出来。例如:int m33=1,2,3,4,5,6,7,8,9;可以写为:int m3=1,2,3,4,5,6,7,8,9;注意:使用这种方法赋初值,必须给出所有数组元素的初值,否则系统将作出错处理。列数绝对不能省略,即不能写成:int m3=1,2,3,4,5,6,7,8,9;,为什么?,47,【例4.4】从

19、键盘上输入一个34的矩阵,将其转换后形成43矩阵输出。分析:矩阵的转置是将矩阵的行和列进行互换,使其行成为列,列成为行例如:,即:mji,nij,m34,n43,48,#includemain()int m34,n43,i,j;printf(Please enter the number of m34:n);for(i=0;i3;i+)/*输入一个34的矩阵存放在数组m中*/for(j=0;j4;j+)scanf(%d,49,程序的运行情况为:Please enter the number of m34:1 1 1 12 2 2 23 3 3 3The number of n43 is:1 2

20、 31 2 31 2 31 2 3,50,4.3.3二维数组的引用,二维数组元素的引用形式为:数组名下标表达式1下标表达式2其中,行下标不能大于行数-1,列下标不能大于列数-1。例如:定义了int stu_score53;则以下都是正确的引用:stu_score00stu_score12stu_score31而stu_score33是不正确的引用。,51,【例4.5】求矩阵m34各个元素中的最小值,并输出最小值元素所在的行和列。#includemain()int i,j;int x,y;int m34=12,1,2,4,2,3,4,5,5,6,7,8;int min=m00;for(i=0;i

21、mij)min=mij;x=i;y=j;printf(The min of m34 is%d.n,min);printf(The row of min is%d and the colum of min is%d.,x,y);,The min of m34 is 1.The row of min is 0 and the colum of min is 1.,52,练一练:判断下面程序的运行结果:,#include stdio.hvoid main()int i,j,a32;for(i=0;i3;i+)for(j=0;j2;j+)aij=i+j;for(i=0;i3;i+)for(j=0;j2

22、;j+)printf(%10d,aij);printf(n);,53,输入100个学生的“C程序设计”课程的期中和期末成绩,算出总评成绩,总评成绩为“30%期中成绩+70%期末成绩”,计算总评成绩的分数段情况。分析:本题将定义一个二维数组 int score1003;使用数组score的每一行记录一个学生的期中成绩、期末成绩和总评成绩。,用二维数组解决第二个问题:,54,程序如下:,#include stdio.h#define SIZE 100void main()int i,j,flag,s;int grade6=0;int scoreSIZE3;float temp;i=0;while(

23、i=0 else,55,printf(n007Error data!Please input two scores a student again:);temp=.3*scorei0+.7*scorei1;/*计算总评成绩*/scorei2=(int)temp;i+;for(i=0;iSIZE;i+)/*将总评成绩分段(按照5分制*/s=scorei2/10;switch(s)case 0:case 1:case 2:case 3:case 4:case 5:grade2=grade2+1;break;case 6:case 7:grade3=grade3+1;break;case 8:gra

24、de4=grade4+1;break;case 9:case 10:grade5=grade5+1;break;,56,for(i=0;iSIZE;i+)/*输出期中、期末和总评成绩*/for(j=0;j3;j+)printf(%4d,scoreij);printf(n);for(i=2;i6;i+)printf(nThere are%d students in grade%d.,gradei,i);,57,4.4 字符串与字符函数,4.4.1字符数组4.4.2字符串与字符数组4.4.3字符串处理函数4.4.4字符串函数应用举例,58,4.4.1字符数组,1.字符数组的定义2.字符数组的初始化

25、3.字符数组举例,59,1.字符数组的定义,格式:类型名 数组名数组元素个数;其中的“类型名”必须是char。例如:char c10;定义了一个名为c的字符数组,包含10个元素。和数值数组一样,字符数组也可以是二维或多维数组。例如:char c89;,60,2.字符数组的初始化,在定义字符数组时,可以直接对字符数组进行初始化。如:char str6=H,e,l,l,o;给字符数组赋初值时,如果花括号中字符的个数大于字符数组定义的数据元素的个数,则编译系统会报告出错。如果花括号中数据元素的个数小于字符数组定义的数据元素的个数,初始化中未给出数据元素值的对应元素被自动赋值为空字符0。如:上面定义的

26、str赋值后各元素的值如下所示:c0=Hc1=ec2=lc3=lc4=oc5=0,61,【例4.8】输出一个钻石图形。#includemain()static char diamond 5=,*,*,*,*,*,*,*,*;/*第二维大小不能省略*/int i,j;for(i=0;i5;i+)/*逐行*/for(j=0;j5;j+)/*逐列*/printf(%c,diamondij);printf(n);,*,3.字符数组举例,62,例:以$符号为终止符号接收一组字符,并逆序输出这组字符。,#include stdio.hvoid main()char c80;int i;puts(Pleas

27、e input a string:);for(i=0;(ci=getchar()!=$;i+);/*读入一组字符*/for(i-;i=0;i-)/*从最后一个字符开始逆向输出*/putchar(ci);,63,4.4.2字符串与字符数组,1.字符串初始化赋值2.用二维数组存放多个字符串3.字符数组的输入/输出4.字符串大小的比较,64,1.字符串初始化赋值,语言允许用字符串的方式对数组作初始化赋值。具体有两种方式:(1)按单个字符的方式赋初值,其中必须有一个字符是字符串的结束标记。例如:char s=1,2,3,0;(2)直接在初值表中用双引号写一个字符串常量。例如:char s=“123”;

28、/*相当于char s4=“123”;*/其中的“”可以省略,如:char s=123;s0的值为1,s1的值为2,s2的值为3,s3的值为0。字符数组s中存放的是一个字符串。,65,2.用二维数组存放多个字符串,当需要处理多个字符串时,可以采用二维数组,此时二维数组的列值取最大字符串的长度。例如:存放三个字符串”123”、”ab”、”A”可采用如下的形式:char s34=123,ab,A;表示:,66,3.字符数组的输入/输出,关于字符数组的输入/输出,有如下规定:(1)逐个字符输入/输出。用格式符%c输入/输出一个字符。(2)将整个字符串一次性输入/输出。用格式符%s对整个字符串进行一次

29、性输入/输出。注意:使用%s格式从键盘上向字符数组中输入字符串时,回车换行符或空格符号均作为字符串的结束标记。,67,#includemain()char c5=H,e,l,l,o;int i;for(i=0;i7;i+)printf(%c,ci);printf(n);,程序的运行结果都是:Hello,【例4.9,4.10】对字符数组中的元素进行逐个输出和字符串方式输出的比较。,#includemain()char c=“Hello;printf(%sn,c);,68,【例4.11】请输入一个长度小于20的字符串,并将该字符串输出。#includemain()char m20;printf(i

30、nput string:n);scanf(%s,m);printf(%sn,m);,程序运行情况为:input string:hello humanhello,空格以后的字符都未能输出(字符串以空格或回车作为串的结束符)。为了避免这种情况,可多设几个字符数组分段存放含空格的串。,69,程序可改写成如下形式:#icludemain()char m16,m26;printf(input string:n);scanf(%s%s,m1,m2);printf(%s%s n,m1,m2);,修改后的程序运行情况为:input string:abcd efghiabcd efghi,70,4.字符串大小的

31、比较,字符串可以进行大小比较,比较时按照从前向后的顺序逐个字符比大小。字符大的对应字符串就大。例如:abcd小于bcde。如果全部字符均相同,则字符串相等。例如:abcd等于abcd。如果字符串长度不等,而前面字符均相同,则长度大的字符串为大。例如:abcd大于abc。,71,4.4.3字符串处理函数,1.字符串输出函数puts2.字符串输入函数gets3.测试字符串长度函数strlen 4.字符串连接函数strcat5.字符串比较函数strcmp6.字符串拷贝函数strcpy7.小写变大写函数strupr8.大写变小写函数strlwr,72,1.字符串输出函数puts,调用形式:puts(字

32、符数组);功能:把字符数组中的字符串输出到显示器,即在屏幕上显示该字符串的内容。其中,字符串的结束标记将转换成回车换行符。,73,【例4.12】puts函数的应用举例。#includestdio.hmain()char c=HellonHuman;puts(c);,程序运行后,将在显示器上输出:Hellohuman,74,#include stdio.hvoid main()char str=Hello;printf(%s,str);printf(%s,str);运行结果?,#include stdio.hvoid main()char str=Hello;puts(str);puts(str

33、);运行结果:?,读程序:,75,2.字符串输入函数gets,调用形式:gets(字符数组);功能:从键盘上输入一个字符串,并存入到指定的字符数组中。【例4.13】gets函数的应用举例。#includestdio.hmain()char m20;printf(input string:n);gets(m);puts(m);,程序的运行情况为:Input string:hello human hello human,76,可以看出当输入的字符串中含有空格时,输出仍为全部字符串。这说明gets函数并不以空格作为字符串输入结束的标志,而只以回车作为输入结束的标志。注意:gets函数和使用%s格式的

34、scanf函数都可以从键盘接受字符串,但在输入时有所区别:(1)对于scanf函数,回车或空格都看成字符串结束标记;(2)对于gets函数,只有“回车”才作为字符串结束标记,“空格”看成字符串的一部分。说明:puts函数和gets函数只能输入/输出一个字符串。例如:puts(str1,str2);和gets(str1,str2,str3);都是错误的。,77,3.测试字符串长度函数strlen,功能:测试指定字符串的实际长度(不含字符串结束标志0),并返回字符串的长度。调用形式:strlen(字符数组);其中函数的参数可以是字符型数组名或字符串常数函数的返回值是字符串长度。,78,【例4.14

35、】strlen函数的应用举例。#include#includemain()int n;static char m=Hello Human;n=strlen(m);printf(The lenth of the string is%dn,n);,程序的运行结果如下:The lenth of the string is 11,79,4.字符串连接函数strcat,调用格式:strcat(字符数组1,字符数组2);功能:把字符数组2中的字符串连接到字符数组1 中字符串的后面,同时删去字符串1中的串标志0,组成新的字符串。该函数返回值是字符数组1的首地址。,80,【例4.15】strcat函数的应用举

36、例。#include#includemain()static char m130=My name is;char m210;printf(input your name:n);gets(m2);strcat(m1,m2);puts(m1);,程序的运行情况如下:input your name:humanMy name is human,81,5.字符串比较函数strcmp,strcmp函数用来对两个字符串进行比较,其调用格式为strcmp(字符串1,字符串2);其中,字符串1和字符串2可以是字符型数组名或字符串常数。功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回如下所示的

37、比较结果:字符串1等于字符串2时,返回值为:0。字符串1大于字符串2时,返回值为:字符串1-字符串2的值,大于0。字符串1小于字符串2时,返回值为:字符串1-字符串2的值,小于0。,82,【例4.16】strcmp函数的应用举例。#include#includemain()int n;static char m115,m2=hello human;printf(input a string:n);gets(m1);n=strcmp(m1,m2);if(n=0)printf(“m1 equale m2n);if(n0)printf(m1m2n);if(n0)printf(m1m2n);,程序运行

38、情况如下:input a string:abcdm1m2,83,6.字符串拷贝函数strcpy,调用格式:strcpy(字符数组1,字符数组2);功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志0也一同拷贝。说明:字符数组2也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。,84,【例4.17】strcpy函数的应用举例。#includestring.h main()char m115,m2=hello human;strcpy(m1,m2);puts(m1);printf(n);,程序的运行结果如下:hello human,85,7.小写变大写函数strupr,调用格

39、式:strupr(字符串);功能:strupr函数用来将字符串中的小写字母转换成大写字母,其他字符(包括大写字母和非字母)不转换。其中,函数的参数可以是字符型数组名或字符串常数,函数的返回值是转换后的字符串。upr表示uppercase。,86,【例4.18】将输入的字符串中的所有小写字母转换成大写字母,并输出。#include#include main()char str80;puts(please input a string:);gets(str);strupr(str);puts(str);,程序的运行情况为:please input a string:welcomeWELCOME,8

40、7,8.大写变小写函数strlwr,调用格式为 strlwr(字符串);功能:strlwr函数用来将字符串中的大写字母转换成小写字母,其他字符(包括小写字母和非字母)不转换。其中,函数的参数可以是字符型数组名或字符串常数,函数的返回值是转换后的字符串。lwr表示lowercase。,88,【例4.19】将输入的大写字母字符串转换成小写字母字符串,并输出。#include#include main()char st80;puts(please input a string:);gets(st);strlwr(st);puts(st);,程序运行情况为:please input a string:

41、WELCOMEwelcome,89,4.4.4字符串函数应用举例,【例4.21】统计输入的文字有多少个单词。#include stdio.hmain()char st80;int i,num=0,word=0;char c;puts(Please input a string:n);gets(st);/*输入一段文字到一维数组st*/for(i=0;(c=sti)!=0;i+)if(c=)word=0;/*c为空格,没出现单词*/,90,else if(word=0)word=1;num+;/*单词数累加*/printf(There are%d words in the linen,num);

42、,程序的运行情况如下:Please input a string:hello human ni hao There are 4 words in the line,91,【例4.22】利用二维数组,找出三个字符串中的最大者(ASCII值)。#includemain()char st20;char str320;/*每行一个字符串*/int i;puts(Please enter three string:);for(i=0;i0)strcpy(st,str0);/*字符串str0复制到st*/else strcpy(st,str1);if(strcmp(str2,st)0)strcpy(st,

43、str2);printf(nthe largest string is:%s.n,st);,92,该程序的运行情况如下:Please enter three string:hellohihurrythe largest string is:hurry.,93,作业,P121(上机)4(1)(2)(4);书面作业:1.请画出选择排序法的流程图。并分析选择法与冒泡法的区别。2.编写程序输入两个字符串,将在第一个字符串中出现的但在第二个字符串未出现的字符存放在第三个字符串变量中并输出。注意,允许第三个字符串有重复的字符,例如,第一个字符串是“ABACDEFGH”,第二个字符串是“BCD”,则第三个字符串是“AAEFGH”。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号