程序设计基础第6章.ppt
程 序 设 计 基 础,主讲教师:崔莉莉,基本类型,数据类型,构造类型,整型 int字符型 char实型(浮点型),数组类型结构体类型,单精度 float双精度 double,指针类型,空类型 void,构造类型数据是由基本类型数据按一定规则组成,它们的具体组成要由编程者按实际需要决定。,第7章 用类型批量数据组织的编程与调试,学习目标:理解数组的基本概念 熟练掌握一维数组的基本使用 掌握二维数组的基本使用,章节:7.1一维数组7.2二维数组7.3字符数组和字符串7.4应用举例,构造数据类型之一数组:是一些具有相同数据类型且按一定的次序排列的变量集合,即有序数据的集合,用数组名标识。元素:属同一数据类型,用数组名和下标确定。每个数组元素都具有相同的变量名,但具有不同的序号(下标)。只有一个下标的数组称为一维数组,有两个下标的数组称为二维数组。以此类推,C语言允许使用任意维数的数组。数组元素可以是基本数据类型(int、float、char等),也可以是构造数据类型,但最低一级必须是基本类型。,一维数组的定义定义方式:数据类型 数组名常量表达式;,合法标识符,unsigned int类型的正整数,元素个数下标从0开始,:数组运算符单目运算符优先级(1)左结合不能用(),例 int a6;,数组名是地址常量,表示数组元素在内存中的起始地址a0。,7.1 一维数组,例如:float salary100;/存放100个职工的工资(以实数形式存放),数组名,命名方法和变量名相同,采用方括号,而不是圆括号,不能写成float salary(100);其中100表示数组长度,即元素的个数。,应为,int n;cinn;int an;,#define n 10;/或const int n=10;int an;,错误提示:expected constant expression cannot allocate an array of constant size 0 a:unknown size,一个数组被定义后,系统将在内存中为它分配一块含有n个(n为数组长度)存储单元的存储空间,每个存储单元包含的字节数等于元素类型的长度。如对于一个含有6个int型元素的数组,它将对应6*4=24个字节的存储空间。注意:常量表达式中可以包括常量和符号常量,不能包含变量。,int a10;,或,一维数组的引用数组必须先定义,后使用只能逐个引用数组元素,不能一次引用整个数组数组元素表示形式:数组名下标其中:下标可以为常量,也可以为变量或表达式,但其值必须是整数,否则将产生编译错误与数组的定义格式相同,但出现的位置是不同的,当出现在变量定义语句时则为数组定义,而当出现在表达式中时则为一个元素。,例 int num-5;(表示数组长度的常量表达式必须是正的整型常量表达式,通常是一个大于或等于1的整型常量),例 int a10;couta;()必须 for(j=0;j10;j+)coutajt;(),例 int data5;data5=10;/C语言对数组不作越界检查,使用时要 注意,假定n为一常量对于一个含有n个元素的数组(int an;),C语言规定:它的下标依次为0,1,2,.,n-1,因此全部n个元素依次为a0,a1,a2,.,an-1,其中假定a为数组名。例如:假定an为一个已定义的数组,则下面都是访问该数组的下标变量的合法格式:a5/下标为一个常数 ai/下标为一个变量 aj+/下标为后增1表达式 a2*x+1/下标为一般表达式,初始化方式在程序运行时初始化可以用赋值语句或输入语句在程序执行时实现初始化。,在定义数组时初始化数据类型数组名N=值1,值2,值3,值N,;,说明:数组不初始化,其元素值为随机数对static数组元素不赋初值,系统会自动赋以0值,一维数组的初始化,引用数组元素之前,必须保证数组的元素已经被赋予确定的值,int a5=1,2,3,4,5;等价于:a0=1;a1=2;a2=3;a3=4;a4=5;,当全部数组元素赋初值时,可不指定数组长度,如 int a5=6,2,3;等价于:a0=6;a1=2;a2=3;a3=0;a4=0;,static int a5;等价于:a0=0;a1=0;a2=0;a3=0;a4=0;,只给部分数组元素赋初值,int a=1,2,3,4,5,6;编译系统根据初值个数确定数组维数,int main()int a10,i;for(i=0;i10;i+)ai=i;,int main()int a10,i;for(i=0;i ai;,如果声明数组时,在方括号中指定了元素个数,那么初始化时的数据个数就不能超过所指定的元素个数。int a 5=1,2,3,4,5,6;(错误)初始化时,数据个数可以少于声明数组时在方括号中指定的元素个数,但不能一个也没有。int b5=;(错误)如果声明数组时,在方括号中不指定元素个数,那么必须紧接着进行初始化。int c;(错误),声明一个能存放5个整数的数组s,批量读入一组数,批量写入一组数。,#include using namespace std;void main()int s5;/声明存放5个整数的数组sfor(int i=0;i si;for(i=0;i=4;i+)/读出数组元素s0,s1,s2,s3,s4的值,输出到屏幕上cout si t;cout endl;,程序举例,程序举例,例 读10个整数存入数组,找出其中最大值和最小值,步骤:1.输入:for循环输入10个整数2.处理:(a)先令max=min=a0(b)依次用ai和max,min比较(循环)若maxai,令min=ai3.输出:max和min,#include using namespace std;#define N 10int main()int aN,i,max,min;coutai;max=min=a0;for(i=1;iai)min=ai;coutMaximum value is maxendl;coutMinimum value is minendl;return 0;,运行结果:Enter 10 integers:1:22:33:14:55:96:87:48:129:3010:23Maximum value is 30Minimum value is 1,例 用数组求Fibonacci数列前20个数,#include#include using namespace std;int main()int i;int f20=1,1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;i20;i+)if(i%5=0)coutn;coutsetw(6)fi;coutendl;return 0;,例 用冒泡法对10个数排序,排序过程:(1)比较第一个数与第二个数,若为逆序a0a1,则交换;然 后比较第二个数与第三个数;依次类推,直至第n-1个数和第 n个数比较为止第一趟冒泡排序,结果最大的数被安置在 最后一个元素位置上(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在 第n-1个元素位置(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束,例,38,49,76,97,13,97,27,97,30,97,13,76,76,76,27,30,13,65,27,65,30,65,13,13,49,49,30,49,27,38,27,38,30,38,#include using namespace std;int main()int a11,i,j,t;coutai;coutai+1)t=ai;ai=ai+1;ai+1=t;coutThe sorted numbers:endl;for(i=1;i11;i+)coutai;return 0;,例 用简单选择法对10个数排序,排序过程:(1)首先通过n-1次比较,从n个数中找出最小的,将它与第一个数 交换第一趟选择排序,结果最小的数被安置在第一个元素位置上(2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换第二趟选择排序(3)重复上述过程,共经过n-1趟排序后,排序结束,例,初始:49 38 65 97 76 13 27,i=1,13,49,一趟:13 38 65 97 76 49 27,i=2,27,38,六趟:13 27 38 49 65 76 97,#include using namespace std;int main()int a11,i,j,k,min;coutai;coutendl;for(i=1;i10;i+)min=ai;k=i;for(j=i+1;j=10;j+)if(ajak)min=aj;k=j;ak=ai;ai=min;coutThe sorted numbers:endl;for(i=1;i11;i+)coutai;return 0;,#include iostream#include iomanip“using namespace std;#define N 6int main()int aN,bB-60,c=1,2,3,4,5,6,i;for(i=0;iaibi;for(i=0;iN;i+)coutsetw(6)ai;coutendl;for(i=0;iN;i+)coutsetw(6)bi;coutendl;for(i=0;iN;i+)ci=ai+bN-i-1;for(i=0;iN;i+)coutsetw(6)ci;coutendl;return 0;,数组定义:必须用常量表达式,数组元素引用,二维数组的定义定义方式:数据类型数组名常量表达式常量表达式;,数组元素的存放顺序原因:内存是一维的二维数组:按行序优先多维数组:最右下标变化最快,例 int a34;float b25;int c234;int a3,4;(),行数,列数,元素个数=行数*列数,7.2 二维数组,二维数组理解,a是一个二维数组,具有3行4列,共定义了12个int型变量;第一维下标变化范围为02,第二维下标变化范围为03。数组各元素在内存中连续存放,按行排列(因内存是一维存储空间)。a是数组名且表示数组在内存中的首址。,二维数组a是由3个元素组成,每个元素ai由包含4个元素的一维数组组成,按元素排列顺序初始化,二维数组元素的引用形式:数组名下标下标二维数组元素的初始化分行初始化:,程序举例,例 将二维数组行列元素互换,存到另一个数组中(23矩阵转置),例 求二维数组中最大元素值及其行列号,#include using namespace std;int main()int a34=1,2,3,4,9,8,7,6,-10,10,-5,2;int i,j,row=0,column=0,max;max=a00;for(i=0;imax)max=aij;row=i;column=j;coutmax=max,row=row,column=columnendl;return 0;,例 读入下表中值到数组,分别求各行、各列及表中所有数之和,#include#include using namespace std;int main()int x54,i,j;for(i=0;ixij;for(i=0;i3;i+)x4i=0;for(j=0;j5;j+)xj3=0;for(i=0;i4;i+)for(j=0;j3;j+)xi3+=xij;x4j+=xij;x43+=xij;,for(i=0;i5;i+)for(j=0;j4;j+)coutsetw(5)xij;coutendl;return 0;,逐个字符赋值初始化会在程序处理变量ch时发生错误,因为C不知道其中的字符串到哪个元素为止。此外,如果花括号中提供的字符个数小于数组长度,将只为数组的前几个元素赋初值,其余的元素自动被赋予空字符。如果初值个数大于数组长度,则认为是语法错误。正确的做法是在初始化时加上结束符,即 char ch6=H,e,l,l,o,0;,用字符串常量初始化会自动地在最后一个字符后面加上一个0,作为字符串的结束符。由于字符串的长度在程序的运行过程中允许发生变化,所以C+要依靠结束符来判断字符串的结束,声明数组时必须留出这个位置,换句话说,方括号中指定的元素个数必须大于将来存放字符串的最大长度。,与整型实型数组的初始化不同,声明数组时在方括号中指定了元素个数后,初始化的字符串可以是没有字符的空串,即”。,字符数组定义,字符数组的初始化逐个字符赋值用字符串常量字符数组的引,例 char c10,ch34;,4.3 字符数组和字符串,例 输出一个字符串,#include using namespace std;int main()char c10=I,a,m,a,b,o,y;int i;for(i=0;i10;i+)coutci;coutendl;return 0;,例 计算给定字符串的长度,不包括结束符0。#include using namespace std;int main()char str=Happy;int i;i=0;while(stri!=0)i+;coutThe length of string is iendl;return 0;,字符串字符串及其结束标志无字符串变量,用字符数组处理字符串字符串结束标志:0,结果:The length of string is 5,字符串的输入输出,输出1)屏幕输出,#include using namespace std;int main()char a=China;couta;/a为数组名,将字符串输出至屏幕。,字符串的输入输出,输出2)字符串输出和整数、实数、字符输出的区别,对于整数、实数和字符,cout每次只能输出一个。对于字符串既可一次输出,也可按字符多次输出。当字符串一次输出时,系统根据0找到字符串尾。若按字符一个个输出,cout根据字符串中字符个数输出。,for(i=0;i字符串中字符个数;i+)coutai;,字符串的输入输出,输入1)键盘输入,#include iostream.hvoid main()char a100;cina;/*a为数组名,从键盘输入多个字符,以回车作为结束,系统自动在读入的字符串未尾添加0。*/,字符串的输入输出,输入2)字符串输入和整数、实数、字符输入的区别,对于整数、实数和字符,cin每次只能输入一个。对于字符串既可一次输入,也可按字符多次输入。当字符串一次输入时,系统自动在尾部添加0。若按字符一个个输入,必须已知字符个数,并且应由用户程序在其末尾添加0。,#include using namespace std;int main()char a10;int i;for(i=0;iai;a9=0;,例从键盘读入一字符串,计算出其长度(即有效字符个数),将长度输出至屏幕。#include using namespace std;int main()char s100;cins;int i=0;while(si!=0)i+;couti;return 0;,字符串的输入输出,用于存储字符串的字符数组,其元素可以通过下标运算符访问,这与一般字符数组和其他任何类型的数组是相同的。除此之外,还可以对它进行整体输入输出操作和有关的函数操作。如假定a11为一个字符数组,则:(1)cina;(2)couta;是允许的,即允许在提取或插入操作符后面使用一个字符数组名实现向数组输入字符串或输出数组中保存的字符串的目的。计算机执行上述第一条语句时,要求用户从键盘上输入一个不含空格的字符串,用空格或回车键作为字符串输入的结束符,系统就把该字符串存入到字符数组a中,当然在存入的整个字符串的后面将自动存入一个结束符0。,字符串的输入输出,例如:字符数组长度为10输入字符串string,结果为string输入字符串str ing,结果为str输入字符串stringandchar,结果报错。输入字符串“string”,结果为“string”注意:输入的字符串的长度要小于数组a的长度,这样才能够把输入的字符串有效地存储起来,否则是程序设计的一个逻辑错误,可能导致程序运行出错。另外,输入的字符串不需要另加双引号定界符,只要输入字符串本身即可,假如输入了双引号则被视为一般字符。,例题:编写程序,实现功能:输入一字符串,计算并输出该字符串的长度。确定算法:用字符数组str256保存字符串,用整型变量strlen记录长度,初值为0。1.显示输入提示信息 2.输入字符串到str 3.循环变量i取初值0 4.如果stri的值是0转到6 5.strlen加1,i加1,转回到4 6.输出strlen的值,#include using namespace std;int main()char str256=;int strlen=0;cout str;int i=0;while(stri!=0)strlen+;i+;cout 字符串的长度 strlen n;return 0;,例题:编写程序,实现功能:输入一字符串,计算并输出其中字母e(大小写不论)的个数。确定算法:用字符数组str256保存字符串,用整型变量count记录字母e的个数,初值为0。1.显示输入提示信息 2.输入字符串到str 3.循环变量i取初值0 4.如果stri的值是0,转到7 5.如果stri的值是字符e或E,count加1 6.i加1,转回到4 7.输出count的值,#include using namespace std;int main()char str256=;int count=0;cout str;int i=0;while(stri!=0)if(stri=e|stri=E)count+;i+;cout 字符串中e或E的个数 count n;return 0;,例:从键盘输入2个字符串,再把第2个字串接到第1个字串的后面。char str180;char str280;int i,j;cin str1;/abcin str2;/cdei=0;while(str1i!=0)i+;/i=2,j=0;while(str2j!=0)str1i=str2j;i+;j+;str1i=0;cout 拼接后字符串:str1 n;/abcde,0 1 2,0 1 2 3,0 1 2 3 4 5,例:从键盘输入两个字符串,再把第二个字符串接到第一个字符串的后面。char str180;char str280;int i,j;cin str1;cin str2;i=0;while(str1i!=0)i+;,j=0;while(str2j!=0)str1i+=str2j+;/i+;/j+;str1i=0;cout 拼接后字符串:str1 n;,char str180,str280;int i,j;cin str1;cin str2;i=0;while(str1i!=0)i+;j=0;while(str1i+=str2j+)!=0);cout 拼接后字符串:str1 n;,进一步的简化也是可行的:while(str1i+=str2j+);注意其循环结束条件,例:输入一字符串,分别统计其中26个字母(大小写不论)的个数。char str80;int i,count26;cin str;i=0;for(i=0;i26;i+)counti=0;,while(stri!=0)switch(stri)case a:case A:count0+;break;case b:case B:count1+;break;case z:case Z:count25+;break;,while(si!=0)if(si=a),例题:编写程序,实现功能:键盘选择币种,输入金额,然后折算成人民币金额输出。假定每一百单位外币折合人民币如下:,确定算法:用实型数组list4存放汇率,从下标1开始使用,在声明时初始化;用整型变量choice存放键盘输入的选择,用实型变量money存放键盘输入的金额,用实型变量rmb存放计算结果。1.显示选择的提示信息 2.从键盘输入选择到choice 3.如果choice等于0,转到4;如果choice等于1或2或3,转到5;如果choice为其他,值转到9 4.结束运行 5.显示输入金额的提示信息 6.从键盘输入金额到money 7.计算并输出 8.转到10 9.显示错误信息 10.转回到1,#include#include using namespace std;int main()float list4=0,1221.25,106.125,827.75;int choice;float money,rmb;while(1)cout choice;switch(choice)case 0:exit(0);,case 1:case 2:case 3:cout money;rmb=money*listchoice/100;cout 折算人民币金额 rmb endl;break;default:cout 无此币种;return 0;,例题:编写程序,实现功能:输出斐波纳契数列的前20项,斐波纳契数列的开头2项依次是0和1,以后的每一项都等于前两项之和(0,1,1,2,3,5,)。确定算法:用整型数组numbers20存放数列的前20项,从下标0开始使用,开头2项在声明时初始化 1、循环变量i取初值3 2、如果i 19,转到5 3、numbersi=numbersi-2+numbersi-1 4、i加1,转回到2 5、跳出本次循环,执行下一条语句,进入另一个新循环,循环变量i取初值1 6、如果i 19,转到9 7、输出numbersi 8、i加1,转回到6 9、结束运行,#include using namespace std;int main()int numbers21=0,1;/其余各位为零int i;for(i=2;i=19;i+)numbersi=numbersi-2+numbersi-1;for(i=0;i=19;i+)cout numbersi t;cout endl;return 0;,例题:编写程序,实现功能:从键盘输入一个整数k,输出k+1,k+2,k+3,k+4,k+20这20个数,每行输出5个数。确定算法:用整型数组numbers20存放数据,从下标0开始使用;用变量count计算一行中已经输出的个数,在声明时初始化为0。1、从键盘输入k 2、循环变量i取初值1 3、如果i 19,转到6 4、numbersi=k+i 5、i加1,转回到3 6、跳出本次循环,执行下一条语句,进入新循环,i取初值1 7、如果i 19,转到13 8、输出numbersi 9、count加1 10、如果count=5,继续执行11,否则转到12(控制每行输出5个数)11、输出换行count的值恢复为0 12、i加1,转回到7 13、结束运行,#include using namespace std;int main()int numbers20;int i,k,count=0;cout k;for(i=0;i=19;i+)numbersi=k+i;for(i=0;i=19;i+)cout numbersi t;count+;if(count=5)cout endl;count=0;cout endl;return 0;,例题:编写程序,实现功能:从键盘输入一个学生成绩,然后将其插入到一个降序排列的成绩表中,插入后的成绩表仍然保持降序,最后输出结果。假定成绩表存放在数组scores中,输入的成绩是x,首先要在成绩表中从头开始找到第一个比x小的成绩,x就应该插在这个成绩之前,为了空出x的存放位置,从这个成绩开始,直到最后一个成绩,都要向后移动一个位置。确定算法:假定成绩表中原有N个成绩,用实型数组scoresN+2存放N个成绩,从下标1开始,在声明时初始化,多余一个位置准备插入新的成绩;用实型变量x存放键盘输入的成绩。1、输出原来的成绩表,输入x 2、准备用变量p对准插入位置,p的初值为1 3、只要p不大于N,并且x的值小于scoresp的值,就反复把p加1 4、循环变量i的初值为N 5、如果i小于p,转到8 6、把scoresi的值复制到scoresi+1 7、i减1,转回到5 8、把x的值复制到scoresp 9、输出新的成绩表,#include using namespace std;#define N 5 int main()float scoresN+2=0,92,88,72,59,32;float x;int p,i;cout x;p=1;,while(p p;i-)scoresi+1=scoresi;scoresp=x;cout 新成绩表:;for(i=1;i=N+1;i+)cout scoresi;cout n;return 0;,例题:编写程序,实现功能:对一个包含10个成绩的无序成绩表进行排序,其成为降序排列的成绩表,最后输出结果。,首先,成绩表的第1个位置应当放整个成绩表中的最高成绩。在整个成绩表中寻找一个最高成绩,然后把它换到第1个位置。其次,排除已经处理妥当的第1个位置,在其余位置上寻找一个最大的,然后把它换到第2个位置。再,排除已经处理妥当的前2个位置,在其余位置上寻找一个最大的,然后把它换到第3个位置。依此类推,等到倒数第2个位置处理妥当,整个成绩表就是降序排列的成绩表。如无序成绩表:67,34,90,88,55,74,95,82,43,92,寻找最高成绩的程序,其核心片段如下max=scores1;max_index=1;for(i=2;i max)max=scoresi;max_index=i;成绩表存放在数组scores11中,从下标1的位置开始存放。用变量max保存当前的最大值,用变量max_index保存当前的最大值所在的位置。外循环变量j表示处理第几个位置,内循环变量i控制寻找当前循环中的最大值。,max_index=1、scoresmax_index=671)i=2scores2=34 scoresmax_index=67max_index=33)i=4scores4=88 scoresmax_index=90max_index=77)i=8scores8=82 scoresmax_index=95max_index=7不变8)i=9scores9=43 scoresmax_index=95max_index=7不变9)i=10scores10=92 scoresmax_index=95max_index=7不变结果:max_index=7、scoresmax_index=95,确定算法:1、循环变量j的初值取1 2、如果j=10,循环结束转到10 3、用变量max保存scoresj的值,max_index的初值取j 4、循环变量i的初值取j+1 5、如果i 10,转到8 6、如果scoresi max,用scoresi的值刷新max的值,让max_index记下i的值 7、循环变量i加1,转回到5 8、交换scoresmax_index和scoresj的值 9、循环变量j加1,转回到2 10、输出scores中的10个成绩数据,#include using namespace std;int main()int scores11=0,67,34,90,88,55,74,95,82,43,92;int max,max_index,i,j;for(j=1;j max)max=scoresi;max_index=i;scoresmax_index=scoresj;scoresj=max;,cout 排序结果;for(j=1;j=10;j+)cout scoresj;cout endl;return 0;,最简单的一种加密方法:约定一个字符变换表,把字符串中的每个字符都按变换表转换成另一个字符。例题:编写程序,实现功能:从键盘输入一个完全由小写字母组成的字符串,用上述的简单方法加密。输出加密后的字符串。,确定算法:先用一个字符型数组list依次保存abcdxyz这26个小写字母的转换结果字符。显然这个数组中的26个字符不能有重复,否则将导致两个不同的原始字母都转换成同一个字符,以后无法正确解密。1、输入原始字符串到str 2、循环变量i取初值0 3、如果stri的值是0,转到7 4、stri的值减去97,得到这个字母在小写字母表中的序号,用变量j保存这个序号 5、以j的值作为下标,在list中得到这个字母的转换结果,保存到stri取代原始字母 6、i加1,转回到3,进行下一个字母的加密转换 7、输出转换后的str,结束运行,#include using namespace std;int main()char list27=kczuytmxsejdlribnhvawofpgq;char str80;int i,j;cout str;i=0;while(stri!=0)j=stri-97;stri=listj;i+;cout 加密成为:str n;return 0;,字符串连接函数strcat格式:strcat(字符数组1,字符数组2)功能:把字符数组2连到字符数组1后面返值:返回字符数组1的首地址说明:字符数组1必须足够大 连接前,两串均以0结束;连接后,串1的0取消,新串最后加0,字符串拷贝函数strcpy格式:strcpy(字符数组1,字符串2)功能:将字符串2,拷贝到字符数组1中去返值:返回字符数组1的首地址说明:字符数组1必须足够大 拷贝时0一同拷贝 不能使用赋值语句为一个字符数组赋值,例 char str120,str220;str1=“Hello!”;()str2=str1;(),常用的字符串处理函数包含在头文件#include,例 strcpy与strcat举例,#include#include using namespace std;int main()char destination25;char blank=,c=C+,visual=Visual;strcpy(destination,visual);strcat(destination,blank);strcat(destination,c);coutdestinationendl;return 0;,Visual C+,字符串比较函数strcmp格式:strcmp(字符串1,字符串2)功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或0为止返值:返回int型整数,a.若字符串1 字符串2,返回正整数 c.若字符串1=字符串2,返回零说明:字符串比较不能用“=”,必须用strcmp,字符串长度函数strlen格式:strlen(字符数组)功能:计算字符串长度返值:返回字符串实际长度,不包括0在内,例 对于以下字符串,strlen(s)的值为:(1)char s10=A,0,B,C,0,D;(2)char s=tv0willn;(3)char s=x69082n;,答案:1 3 1,#include#include void main()char str1=Hello!,str2=How are you?,str20;int len1,len2,len3;len1=strlen(str1);len2=strlen(str2);if(strcmp(str1,str2)0)strcpy(str,str1);strcat(str,str2);else if(strcmp(str1,str2)0)strcpy(str,str2);strcat(str,str1);else strcpy(str,str1);len3=strlen(str);coutstrendl;coutLen1=len1,Len2=len2,Len3=len3endl;,例 strcmp与strlen举例,How are you?Hello!Len1=6,Len2=12,Len3=18,例 比较 int a23=5,6,7,8;与 int a23=5,6,7,8;,例 int a10;float f2=1.2,2.2;,例 int a5;a=2,4,6,8,10;,例 int a10;float i=3;ai=10;,例 char name0;float weight10.3;int array-100;,例 char str=“Hello”;char str=H,e,l,l,o;,练习,教学与实验辅导(第3版)实验6,