1、1PPT课件 数组的概念数组的概念数组的应用数组的应用数组的定义数组的定义授课内容授课内容字符串字符串常见错误常见错误2PPT课件例例:某班有某班有5050名学生名学生,求该班成绩的平均分求该班成绩的平均分#include void main()int j,sum,s;float ave;sum=0;for(j=1;js;sum=sum+s;ave=sum/50.0;cout“ave=”ave;假设现在不仅要求平均分,还要求高于平均分假设现在不仅要求平均分,还要求高于平均分的人数的人数,那就不能只使用一个变量那就不能只使用一个变量s s了了,而需要而需要5050个变量个变量,但这样一来输入、输
2、出、计算都会变得但这样一来输入、输出、计算都会变得繁琐繁琐.在这种情况下在这种情况下,我们可以使用数组类型我们可以使用数组类型,说明一个含有说明一个含有5050个元素的数组个元素的数组,每个数组元素存每个数组元素存放一个成绩放一个成绩,成绩的输入、输出、计算都可通过成绩的输入、输出、计算都可通过循环来实现循环来实现引入引入3PPT课件#include void main()int i,overn=0,mark50;float ave=0;for(i=0;imark i;ave=ave+marki;ave=ave/50;for(i=0;i=ave)overn+;cout“平均分:平均分:”ave
3、“高于平均高于平均分的人数有:分的人数有:”n;int an;._ 常量表达式中不能有变量常量表达式中不能有变量 常量表达式的值不能是实数常量表达式的值不能是实数_ 下标从下标从0开始开始,a0,a1 a9,没有,没有a10;_ 常量表达式的值为元素的个数常量表达式的值为元素的个数错误错误9PPT课件一维数组的存储结构一维数组的存储结构a_ 一个数组的所有元素都是连续存储的一个数组的所有元素都是连续存储的_ 数组元素为数组元素为:a0,a1,a2.a9int a10;_ 所占空间为所占空间为:类型长度类型长度*元素个数元素个数 84 :66 80 95101010141018 :1046a0a
4、1a2 :a910PPT课件数组元素的引用形式数组元素的引用形式_ 数组元素的引用数组元素的引用:数组名数组名下标下标a0=a2+a4*2240int a10;a0=2;下标下标 说明说明(1)下标可以是整型常量或整型表达式下标可以是整型常量或整型表达式 如如:a1 ,a2*3(2)数组定义为数组定义为 int a5,数组长度为数组长度为5 而下标在而下标在0-4之内之内,即即a0-a4注意注意:如果出现如果出现 a5=72;编译时不会指出错误编译时不会指出错误,系统会系统会将将a4后下一个存储单元后下一个存储单元 赋值为赋值为72,但这样可能会破坏数但这样可能会破坏数组以外其他变量的值。组以
5、外其他变量的值。11PPT课件一维数组的初始化一维数组的初始化1.概念概念:在定义一维数组时对各元素指定初始在定义一维数组时对各元素指定初始 值称为数组的初始化值称为数组的初始化如如:int a5=1,3,5,7,9 ;2.说明说明(1)初值用初值用 括起来括起来,数据之间用逗号分开数据之间用逗号分开.(2)对数组的全体元素指定初值,可以不指明数组对数组的全体元素指定初值,可以不指明数组的长度的长度,系统会根据系统会根据 内数据的个数确定数组内数据的个数确定数组的长度。的长度。如如:int a =1,3,5,7,9 ;12PPT课件(3)对数组中部分元素指定初值对数组中部分元素指定初值(这时不
6、能这时不能 省略数组长度省略数组长度)如如:int a5=1,3,5;(4)使数组中的全部元素初始值都为使数组中的全部元素初始值都为 0 如如:int a5=0,0,0,0,0 ;更简单的写法:更简单的写法:int a5=0 ;13PPT课件例例:输入输入50个成绩个成绩,求平均分求平均分输出高于平均分的个数输出高于平均分的个数#include void main()int i,overn=0,mark50;float ave=0;for(i=0;imark i;ave=ave+marki;ave=ave/50;for(i=0;i=ave)overn+;cout“平均分:平均分:”ave“高高
7、于平均分的人数有:于平均分的人数有:”ai;输入整个数组元素输入整个数组元素:for(i=0;iai;输出方法:输出方法:输出第输出第i个数组元素:个数组元素:coutai;输出整个数组元素:输出整个数组元素:for(i=0;i10;i+)coutai;15PPT课件_例例:用一维数组求用一维数组求Fibonacci 数列数列#includevoid main()int i;int f 20 =1,1;for(i=2;i20;i+)f i =f i-2 +f i-1;for(i=0;i20;i+)if(i%5=0)coutn;cout“t”f i;1 1 0 0 0 0 :0f0f1f2f3f
8、4f5 :f19i=2f2=f0+f1i=3f3=f1+f2i=4f4=f2+f32358676516PPT课件例例:输入一个数据,在已知数组中查找是否有该数据输入一个数据,在已知数组中查找是否有该数据 5 8 0 1 9 2 6 3 7 49a0a1a2a3a4a5a6a7a8a9#include void main()int i,x;int a10=5,8,0,1,9,2,6,3,7,4;cinx;for(i=0;i10;i+)if(x=ai)cout“find!”endl;break;if(i=10)cout“no find!”endl;17PPT课件#include Void main
9、()int f20=1,1,j;for(j=2;j=0;j-)/逆序显示逆序显示 coutfj;coutaij;输入整个数组的元素:输入整个数组的元素:for(i=0;i2;i+)for(j=0;jaij;输出方法:输出方法:输出第输出第i行第行第j列列元素:元素:coutaij;输出整个数组的元素:输出整个数组的元素:for(i=0;i2;i+)for(j=0;j3;j+)coutaij;26PPT课件例例:有一个有一个3*4的矩阵的矩阵,编程求编程求出其中的最大值及其所在的行出其中的最大值及其所在的行号和列号。号和列号。27PPT课件52093712610418maxrowcol1212#
10、include void main()int i,j,row=0,col=0,max;int a34=5,2,0,9,3,7,12,6,10,4,1,8;max=a00;for(i=0;i3;i+)for(j=0;jmax)max=aij;row=i;col=j;cout“max=”max;cout“max=a”row col;输出输出:max=12max=a1228PPT课件例例:将一个矩阵进行转置将一个矩阵进行转置(即原来的行变为列即原来的行变为列)5209371261041840#includevoid main()int a34,b43,i,j;for(i=0;i3;i+)for(j=
11、0;jaij;for(i=0;i3;i+)for(j=0;j4;j+)bji=aij;for(i=0;i4;i+)for(j=0;j3;j+)cout bij;cout endl;输入数组输入数组a进行矩阵转置进行矩阵转置输出数组输出数组ba02b20a21b1229PPT课件练习:输出杨辉三角。11 11 2 11 3 3 11 4 6 4 1#include#includevoid main()int i,j,a1010=0;for(i=0;i10;i+)ai0=1;aii=1;for(i=2;i10;i+)for(j=1;ji;j+)aij=ai-1j+ai-1j-1;for(i=0;i
12、10;i+)for(j=0;j10-i;j+)cout ;for(j=0;j=i;j+)coutsetw(4)aij ;coutendl;30PPT课件课堂练习:课堂练习:1.数组元素数组元素ai是该数组中的第是该数组中的第个元素个元素.2.元素类型为元素类型为int的数组的数组a10共占用共占用字节的存储空字节的存储空间,其中元素间,其中元素a5的字节地址为的字节地址为.3.元素类型为元素类型为double的数组的数组a46共占用共占用字节的字节的存储空间,其中元素存储空间,其中元素a25的字节地址为的字节地址为.4.元素类型为元素类型为char的数组的数组a1030共占用共占用字节的字节的
13、存储空间,其中元素存储空间,其中元素a34的字节地址为的字节地址为.答案答案:1.i+1 2.40 a+20 3.192 a+136 4.300 a+94 31PPT课件利用数组进行数值计算利用数组进行数值计算3 数组的应用数组的应用利用数组进行统计利用数组进行统计 数据排序数据排序冒泡法冒泡法选择法选择法查找数据查找数据 顺序查找(不要求数组元素有序排列)顺序查找(不要求数组元素有序排列)二分查找(要求数组元素有序排列)二分查找(要求数组元素有序排列)32PPT课件基本算法举例基本算法举例1.排序排序(1)冒泡法排序冒泡法排序 例:输入例:输入5个数个数,进行由小到大排序进行由小到大排序:9
14、 8 5 4 2算法:两两比较,大数向后移,找到最大数放在最后,再在剩余的的4个数中进行两两比较,找到最大数,以此类推.总是小数往前放,大数往后放,相当于气泡上升,故称之为:冒泡法冒泡法33PPT课件85429542842524比较4次第一轮比较3次第二轮比较2次第三轮比较1次第四轮9854289542859428549285425842548254242452对 个数,则要进行趟扫描,在第 趟扫描中要进行 次比较。可以推知:34PPT课件/*排序排序*/for(i=0;iN-1;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;35PPT课件#include#defi
15、ne N 10void main()int i,j,aN,t;for(i=0;iai;for(i=0;iN;i+)/输出输出 coutai ;/*排序排序*/for(i=0;iN-1;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;for(i=0;iN;i+)/输出输出 coutai ;36PPT课件(2)选择法排序选择法排序特点:比较后不立即互换元素,而是记下其位置并在每一轮比较完毕后和()互换排序过程:(1)首先通过9次比较,从10个数中找出最小的,将它与第1个数交换第一趟选择排序,结果最小的数被安置在第1个元素位置上(2)再通过8次比较,从剩余的9个数中找出次小
16、的数,将它与第2个数交换第二趟选择排序(3)重复上述过程,共经过9趟排序后,排序结束37PPT课件 49 38 65 97 76 13 27 kj第1趟(i=0):1349 13 38 65 97 76 49 27 2738 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第2趟(i=1):第3趟(i=2):第4趟(i=3):第5趟(i=4):第6趟(i=5):38PPT课件输入10个数给a0 到 a9fo
17、r i=0 to 8for j=i+1 to 9ajak真假k=j输出a0 到 a9k=iai ak交换i!=k真假39PPT课件#include const int N=10;void main()int aN,i,j,k,t;for(i=0;iai;for(i=0;iN-1;i+)k=i;for(j=i+1;jN;j+)if(ajak)k=j;if(k!=i)t=ai;ai=ak;ak=t;for(i=0;iN;i+)coutai;A0 A1 A2 A n-1 A0 A1 A2 A n-1 A0 A i-1 A i .A n-1 A0 A1.A n-2 A n-1 40PPT课件例:在有序
18、数组中插入一个数后使原数组例:在有序数组中插入一个数后使原数组仍然有序。仍然有序。例如:例如:3 5 7 12 18(m=5),),将将b=10插入插入步骤:步骤:(1)要找到要找到b在数组中的位置在数组中的位置(2)给给b让位置让位置(3)将将b放到该位置上放到该位置上(4)数组元素的个数数组元素的个数 m 加加 141PPT课件3571218(2)357121218(3)for(i=0;ib)break;for(j=m-1;j=i;j-)aj+1=aj;ai=b;121810(1)3571218a0a1a2a3a4a5m=m+1;(4)42PPT课件3 5 7 10 12 18(m=6),
19、将将b=10删除删除步骤:步骤:(1)要找到要找到b在数组中的位置在数组中的位置(2)后面的数组元素依次前移后面的数组元素依次前移,覆盖该位置覆盖该位置 上的数组元素即可实现删除上的数组元素即可实现删除(3)数组元素的个数数组元素的个数 m 减减 1例:在有序数组中删除一个数例:在有序数组中删除一个数,例如例如:43PPT课件357101218(1)357101218(2)357121218for(i=0;im;i+)if(ai=b)break;101218for(j=i;jc0c1c2;for (i=0;i ci;2.整个数组的输入输出,即按数组名输入输出整个数组的输入输出,即按数组名输入输
20、出 (仅用于字符数组仅用于字符数组),因数组名本身代表数组的,因数组名本身代表数组的 首地址首地址字符数组的输入和输出字符数组的输入和输出51PPT课件注意注意:(1)输入、输出字符串时不包括输入、输出字符串时不包括“”(2)cin输入时系统一直读取字符,直到遇到输入时系统一直读取字符,直到遇到“空白空白 符符”为止。为止。例如:输入数据例如:输入数据 hello world C数组中内容为数组中内容为hellocoutc;cinsetw(20)c;52PPT课件补充补充get()函数函数(包含在包含在“iostream.h”)如想输入含空格的字符串,如如想输入含空格的字符串,如“hello
21、worldhello world”只能使用只能使用get()get()函数函数,使用格式如下:,使用格式如下:cin.getcin.get(字符数组名,字符串长度,规定的结束符字符数组名,字符串长度,规定的结束符)其中,规定的结束符省略时,默认为回车键。其中,规定的结束符省略时,默认为回车键。如:如:char str20;char str20;cin.getcin.get(str,20)(str,20)53PPT课件字符串处理函数字符串处理函数字符串函数的原型保存在字符串函数的原型保存在中中v 字符串连接函数字符串连接函数:strcat(s1,s2);char*strcat(char*s1,c
22、onst char*s2);连接连接s1和和s2两个字符串赋给两个字符串赋给s1,返回,返回s1的值的值v 字符串拷贝函数字符串拷贝函数:strcpy(s1,s2);char*strcpy(char*s1,const char*s2);将将s2中的字符串赋给中的字符串赋给s1,返回,返回s1的值的值v 字符串比较函数字符串比较函数:strcmp(s1,s2)v 求字符串长度函数:求字符串长度函数:strlen(s)函数值为整数函数值为整数(返回字符个数返回字符个数)(参数为字符数组名)(参数为字符数组名)54PPT课件5 字符数组程序应用字符数组程序应用v 字符串的长度字符串的长度v 逆序逆序
23、v 字符串函数字符串函数55PPT课件_例:求字符串长度例:求字符串长度扫描数组扫描数组,只要不是只要不是0,计数器就加计数器就加1源程序源程序:#includevoid main()int i;char s50;cins;for(i=0;i50&si!=0;i+);cout“Lengh of“s“is”i;ac d0bifor(i=0;i50&si+!=0;);ii=056PPT课件字符串连接函数字符串连接函数/*例:例:STRCAT*/#includevoid main()int i,j;char s140,s220;cins1s2;for(i=0;i40&s1i!=0;i+);for(j
24、=0;j20&s2j!=0;j+)s1i+=s2 j;s1i=0;/*s1i=s2j;*/couts1;s1s2acd0beg0facdebfg0s1/i=strlen(s1);57PPT课件 /*例:例:STRCPY*/#include void main()char p180,p280;int i;cinp2;for(i=0;p2i!=0;i+)p1i=p2i;p1i=0;cout“p1=“p1“np2=“p2“n”;58PPT课件字符串复习59PPT课件字符数组字符数组用来存放字符数据的数组是字符数组,用来存放字符数据的数组是字符数组,字符数组中字符数组中的一个元素存放一个字符的一个元素
25、存放一个字符。一、字符数组的定义一、字符数组的定义char 数组名数组名常量表达式常量表达式;char c4;/*每个元素占一个字节每个元素占一个字节*/c0=I;c1=m;c2=_;类型类型数组名数组名数组大小数组大小60PPT课件二、字符数组的初始化二、字符数组的初始化与数值数组的初始化相同,取其相应字符的与数值数组的初始化相同,取其相应字符的ASCII值。值。char c10=I,a,m,a,b,o,y;随机随机yob a ma Icc0c961PPT课件如果字符个数大于数组长度,做错误处理;如果数值个数如果字符个数大于数组长度,做错误处理;如果数值个数小于数组长度,后面的字节全部为小于
26、数组长度,后面的字节全部为0。如果省略数组长度,则字符数即为数组长度。如果省略数组长度,则字符数即为数组长度。static char c=I,a,m,a,g,i,r,l;同理,也可定义和初始化一个二维或多维的字符数组。分同理,也可定义和初始化一个二维或多维的字符数组。分层或省略最后一维。层或省略最后一维。char st1=65,66,68;ABD62PPT课件三、字符数组的引用三、字符数组的引用void main(void)char c10=I,a,m,a,b,o,y;int i;for(i=0;i10;i+)coutci;cout“n”;定义定义输出输出63PPT课件四、字符串和字符串结束标
27、志四、字符串和字符串结束标志C+语言将字符串作为字符数组来处理。语言将字符串作为字符数组来处理。字符串常量:字符串常量:“CHINA”,在机内被处理成一个在机内被处理成一个无名的字符型一维数组无名的字符型一维数组。CHINA 0C+语言中约定用语言中约定用0作为字符串的结束标志,作为字符串的结束标志,它占内存空间,但不计入串长度。它占内存空间,但不计入串长度。有了结束标志有了结束标志0后,程序往往后,程序往往依据它判断字符串是否结束依据它判断字符串是否结束,而不是根据定义时设定的长度而不是根据定义时设定的长度。64PPT课件字符串与字符数组的区别:字符串与字符数组的区别:char a=C,H,
28、I,N,A;char c=“CHINA”;随机随机随机随机ANIHC长度占长度占5个字节个字节随机随机0ANIHC长度占长度占6个字节个字节字符数组字符数组字符串字符串65PPT课件可以用字符串的形式为字符数组赋初值可以用字符串的形式为字符数组赋初值char c=“I am a boy”;/*长度长度11字节,以字节,以0结尾结尾 */char a=I,a,m,a,b,o,y;/*长度长度10字节字节 */如果数组定义的长度大于字符串的长度,后面均为如果数组定义的长度大于字符串的长度,后面均为0。char c10=“CHINA”;00000ANIHCc0的的ASCII为为0,而而(空格空格)的
29、的ASCII为为32。66PPT课件char w=T,u,r,b,o,0;Turbo 0char w=“Turbo0”;Turbo 0char w=“Turbo0”;Turbo 0char w=Turbo0;非法非法67PPT课件char a25=“abcd”,“ABCD”;abcd0ABCD 0在在语句中语句中字符数组不能用赋值语句字符数组不能用赋值语句整体赋值整体赋值。char str12;str=“The String”;str为字符数组在内存中存储的地址,一经定义,便成为常为字符数组在内存中存储的地址,一经定义,便成为常量,不可再赋值。量,不可再赋值。char str12=“The S
30、tring”;非法,在语句中赋值非法,在语句中赋值定义数组,开辟空定义数组,开辟空间时赋初值间时赋初值68PPT课件字符数组的输入输出字符数组的输入输出 逐个字符的输入输出。这种输入输出的方法,通常是使逐个字符的输入输出。这种输入输出的方法,通常是使用循环语句来实现的。如:用循环语句来实现的。如:char str10;cout“输入十个字符:输入十个字符:”;for(int i=0;istri;/A .A行将输入的十个字符依次送给数组行将输入的十个字符依次送给数组str中的各个元素。中的各个元素。定义定义赋值赋值69PPT课件把字符数组作为字符串输入输出。对于一维字符把字符数组作为字符串输入输
31、出。对于一维字符数组的输入,在数组的输入,在cincin中仅给出中仅给出数组名数组名;输出时,在;输出时,在coutcout中也只给出中也只给出数组名数组名。void main(void)char s150,s260;cout s1;cin s2;cout “n s1=“s1;cout “n s2=“s2 “n”;输入:输入:abcdstringcin只能输入一个单只能输入一个单词,不能输入一行词,不能输入一行单词。单词。数组名数组名数组名数组名输出到输出到0为止为止70PPT课件当要把当要把输入的一行输入的一行作为一个字符串送到字符数组作为一个字符串送到字符数组中时,则要使用函数中时,则要使
32、用函数cin.getline()。这个函数的第。这个函数的第一个参数为字符数组名,第二个参数为允许输入一个参数为字符数组名,第二个参数为允许输入的最大字符个数。的最大字符个数。cin.getline(数组名数组名,数组空间数数组空间数);char s180;.cin.getline(s1,80);首先开辟空间首先开辟空间参数是数组名参数是数组名71PPT课件void main(void)char s381;cout”输入一行字符串输入一行字符串:”;cin.getline(s3,80);/A cout”s3=”s3n;/B当输入行中的字符个数小于当输入行中的字符个数小于80时,将实际输入的字符
33、串时,将实际输入的字符串(不包括换行符)全部送给(不包括换行符)全部送给s3;当输入行中的字符个数大;当输入行中的字符个数大于于80时,只取前面的时,只取前面的80个字符送给字符串。个字符送给字符串。定义定义从键盘接收一行字符从键盘接收一行字符输出到输出到0为止为止72PPT课件六、字符串处理函数六、字符串处理函数C中没有对字符串变量进行赋值、合并、比较中没有对字符串变量进行赋值、合并、比较的运算符,但提供了许多的运算符,但提供了许多字符串处理函数字符串处理函数,用户可,用户可以调用以调用#include“string.h”所有字符串处理函数的实参都是所有字符串处理函数的实参都是字符数组名字符
34、数组名73PPT课件1、合并两个字符串的函数、合并两个字符串的函数 strcat(str1,str2)static char str120=“I am a”;static char str2=“boy”;strcat(str1,str2);Iama00boy 0Iamaboy0将第二个字符串将第二个字符串 str2 接到第一个字符串接到第一个字符串 str1 后。后。注意:第一个字符串要有足够的空间。注意:第一个字符串要有足够的空间。空间足够大空间足够大74PPT课件2、复制两个字符串的函数、复制两个字符串的函数 strcpy(str1,str2)static char str120=“I a
35、m a”;static char str2=“boy”;strcpy(str1,str2);00amaIstr10yobstr200a0yobstr1strcpy(str1,“CHINA”);0ANIHCstr1strcpy(“CHINA”,str1);str1=str2;str1=“CHINA”;字符串正确赋值字符串正确赋值均为非法均为非法75PPT课件3、比较两个字符串的函数、比较两个字符串的函数 strcmp(str1,str2)此函数用来比较此函数用来比较str1和和str2中字符串的内容。函数对字符串中字符串的内容。函数对字符串中的中的ASCII字符字符逐个两两比较逐个两两比较,直到
36、遇到不同字符或,直到遇到不同字符或0为止。函数值由两个对应字符相减而得。为止。函数值由两个对应字符相减而得。该函数具有返回值,返回值是两字符串对应的该函数具有返回值,返回值是两字符串对应的第一个第一个不同不同的的ASCII码的差值。码的差值。若两个字符串完全相同,函数值为若两个字符串完全相同,函数值为0。if(strcmp(str1,str2)=0).用来判断两字符用来判断两字符串是否相等串是否相等76PPT课件static char str120=“CHINA”;static char str2=“CHINB”;cout strcmp(str1,str2)endl;输出:输出:-1stati
37、c char str120=“CHINA”;static char str2=“AHINB”;coutstrcmp(str1,str2)endl;输出:输出:2if(str1=str2)cout“yesn”;if(strcmp(str1,str2)=0)cout“yesn”;非法非法正确正确77PPT课件4、求字符串长度的函数、求字符串长度的函数 strlen(str1)长度不包括长度不包括0。函数参数为数组名,返回值为数组首字母到函数参数为数组名,返回值为数组首字母到0的长度。的长度。并非数组在内存中空间的大小。并非数组在内存中空间的大小。char s80;strcpy(s,“abcd”);
38、coutstrlen(s)endl;输出:输出:400a0yobstr1输出:输出:3coutstrlen(str1)endl;coutsiziof(s)endl;输出:输出:8078PPT课件char str120=“CHINA”;coutstrlen(str1)endl;输出:输出:5char sp=“x69082”;coutstrlen(sp)endl;输出:输出:6char sp=“tv0willn”;coutstrlen(sp)endl;输出:输出:3char str120=“a book”;coutstrlen(str1)endl;输出:输出:179PPT课件5、strlwr(st
39、r1)将将str1中的大写字母转换成小写字母。中的大写字母转换成小写字母。6、strupr(str1)将将str1中的小写字母转换成大写字母。中的小写字母转换成大写字母。80PPT课件7、函数、函数strncmp(字符串字符串1,字符串字符串2,maxlen)函数原型为函数原型为:int strncmp(char str1,char str2,int m)第三个参数为正整数,它限定了至多比较的字符个数第三个参数为正整数,它限定了至多比较的字符个数若字符串若字符串1或字符串或字符串2的长度小于的长度小于maxlen的值时,函数的的值时,函数的功能与功能与strcmp()相同。相同。当二个字符串的
40、长度均大于当二个字符串的长度均大于maxlen的值时,的值时,maxlen为至为至多要比较的字符个数。多要比较的字符个数。coutstrncmp(“China”,“Chifjsl;kf”,3)n;输出:输出:081PPT课件第三个参数为正整数,它限定了至多拷贝的字符个数第三个参数为正整数,它限定了至多拷贝的字符个数若若字符串字符串2的长度小于的长度小于maxlen的值时,函数的功能与的值时,函数的功能与strcpy()相同。相同。当字符串当字符串2的长度大于的长度大于maxlen的值时,的值时,maxlen为至多要拷为至多要拷贝的字符个数。贝的字符个数。8、函数、函数strncpy(字符数组名
41、字符数组名1,字符串字符串2,maxlen)函数原型为函数原型为:void strncmp(char str1,char str2,int m)82PPT课件char s90,s190;strncpy(s,abcdssfsdfk,3);/Astrncpy(s1,abcdef ,90);/Bcoutsendl;couts1endl;输出:输出:abc输出:输出:abcdef注意,二字符串之间不能直接进行比较注意,二字符串之间不能直接进行比较,赋值等操赋值等操作作,这些操作必须通过字符串函数来实现。这些操作必须通过字符串函数来实现。空间足够大空间足够大83PPT课件7 7 常见错误常见错误1、数组
42、下标越界。、数组下标越界。如:如:int a10=1,2,3,4,5,6,7,8,9,10;for(i=1;i=10;i+)cout ai;C+规定定义时用规定定义时用a10,表示数组有,表示数组有10 个元素,个元素,而不是可以用的最大下标值为而不是可以用的最大下标值为10。数组只包括。数组只包括a0到到a910 个元素,因此用个元素,因此用a10超出范围。超出范围。for(i=0;i=9;i+)cout ai;84PPT课件2、数组整体赋值。、数组整体赋值。int a10;int b10=1,2,3,4,5,6;a=b;+不允许对数组进行整体操作,如果把数不允许对数组进行整体操作,如果把数
43、组组 a 赋值给数组赋值给数组 b,需要用循环语句来实现。,需要用循环语句来实现。for(i=0;i10;i+)ai=bi;85PPT课件3、误以为数组名代表数组中全部元素。、误以为数组名代表数组中全部元素。main()int a4=1,2,3,4;cout a;企图用数组名代表全部元素。企图用数组名代表全部元素。+中,数组名代表数组首地址,不能通过中,数组名代表数组首地址,不能通过数组名输出数组名输出4个整数。个整数。cout a0 a1 a2 a3);或:或:for(i=0;i=3;i+)cout ai;86PPT课件4、引用数组元素时使用圆括号。、引用数组元素时使用圆括号。cout a(
44、5);5、向一个字符数组赋字符串。、向一个字符数组赋字符串。char str20;str=I am a boy.;这种错误和第二种错误为一种错误,即不支这种错误和第二种错误为一种错误,即不支持对数组的整体操作。持对数组的整体操作。strcpy(str,I am a bpy.);87PPT课件6、构造字符串时忘记在末尾应加、构造字符串时忘记在末尾应加0。i=0;while(ch=getchar()!=n)stri+=ch;cout str;由于构造的字符串没有加结束标志,当用由于构造的字符串没有加结束标志,当用cout函函数输出数输出str时,从时,从str的起始地址开始一个个的输出,的起始地址开始一个个的输出,输出完读入的字符后,没有遇到输出完读入的字符后,没有遇到0,继续输出,这,继续输出,这时的内容已不再是字符串中的字符。因此,时的内容已不再是字符串中的字符。因此,在自己在自己构造一个字符串时,一定不要忘记在末尾加上构造一个字符串时,一定不要忘记在末尾加上0。88PPT课件i=0;while(ch=getchar()!=0)stri+=ch;stri=0;coutstr;89PPT课件
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。