欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C数组及其应用实用.pptx

    • 资源ID:87124772       资源大小:615.85KB        全文页数:89页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C数组及其应用实用.pptx

    数组的概念数组的应用数组的定义授课内容字符串常见错误第1页/共89页例例:某班有某班有5050名学生名学生,求该班成绩的平均分求该班成绩的平均分#includevoidmain()intj,sum,s;floatave;sum=0;for(j=1;js;sum=sum+s;ave=sum/50.0;cout“ave=”ave;假设现在不仅要求平均分,还要求高于平均分的假设现在不仅要求平均分,还要求高于平均分的人数人数,那就不能只使用一个变量那就不能只使用一个变量s s了了,而需要而需要5050个个变量变量,但这样一来输入、输出、计算都会变得繁但这样一来输入、输出、计算都会变得繁琐琐.在这种情况下在这种情况下,我们可以使用数组类型我们可以使用数组类型,说明说明一个含有一个含有5050个元素的数组个元素的数组,每个数组元素存放一每个数组元素存放一个成绩个成绩,成绩的输入、输出、计算都可通过循环成绩的输入、输出、计算都可通过循环来实现来实现引入引入第2页/共89页#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“高于平均分的人数有:”n;intan;._常量表达式中不能有变量常量表达式的值不能是实数_下标从0开始,a0,a1a9,没有a10;_常量表达式的值为元素的个数错误错误第8页/共89页一维数组的存储结构a_ 一个数组的所有元素都是连续存储的_数组元素为数组元素为:a0,a1,a2.a9inta10;_所占空间为所占空间为:类型长度类型长度*元素个数元素个数 84 :66 80 95101010141018:1046a0a1a2:a9数组首地址第9页/共89页数组元素的引用形式_ 数组元素的引用:数组名下标a0=a2+a4*2240inta10;a0=2;下标下标说明(1)下标可以是整型常量或整型表达式如:a1,a2*3(2)数组定义为数组定义为inta5,数组长度为数组长度为5而下标在而下标在0-4之内之内,即即a0-a4注意注意:如果出现如果出现a5=72;编译时不会指出错误编译时不会指出错误,系统会系统会将将a4后下一个存储单元后下一个存储单元赋值为赋值为72,但这样可能会破坏数但这样可能会破坏数组以外其他变量的值。组以外其他变量的值。第10页/共89页一维数组的初始化1.概念概念:在定义一维数组时对各元素指定初始在定义一维数组时对各元素指定初始值称为数组的初始化值称为数组的初始化如如:inta5=1,3,5,7,9;2.说明说明(1)初值用初值用括起来括起来,数据之间用逗号分开数据之间用逗号分开.(2)对数组的全体元素指定初值,可以不指明数组对数组的全体元素指定初值,可以不指明数组的长度的长度,系统会根据系统会根据内数据的个数确定数组内数据的个数确定数组的长度。的长度。如如:inta=1,3,5,7,9;第11页/共89页(3)对数组中部分元素指定初值对数组中部分元素指定初值(这时不能这时不能省略数组长度省略数组长度)如如:inta5=1,3,5;(4)使数组中的全部元素初始值都为使数组中的全部元素初始值都为0如如:inta5=0,0,0,0,0;更简单的写法:更简单的写法:inta5=0;第12页/共89页例例:输入输入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“高于平均分的人数有:”ai;输入整个数组元素输入整个数组元素:for(i=0;iai;输出方法:输出方法:输出第输出第i个数组元素:个数组元素:coutai;输出整个数组元素:输出整个数组元素:for(i=0;i10;i+)coutai;第14页/共89页_例:用一维数组求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 :0f0f1f2f3f4f5:f19i=2f2=f0+f1i=3f3=f1+f2i=4f4=f2+f323586765第15页/共89页例例:输入一个数据,在已知数组中查找是否有该数据输入一个数据,在已知数组中查找是否有该数据 5 8 0 1 9 2 6 3 7 49a0a1a2a3a4a5a6a7a8a9#includevoidmain()inti,x;inta10=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“nofind!”endl;第16页/共89页#includeVoidmain()intf20=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;第25页/共89页例例:有一个有一个3*4的矩阵的矩阵,编程求编程求出其中的最大值及其所在的行出其中的最大值及其所在的行号和列号。号和列号。第26页/共89页52093712610418maxrowcol1212#includevoidmain()inti,j,row=0,col=0,max;inta34=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”rowcol;输出输出:max=12max=a12第27页/共89页例例:将一个矩阵进行转置将一个矩阵进行转置(即原来的行变为列即原来的行变为列)5209371261041840#includevoidmain()inta34,b43,i,j;for(i=0;i3;i+)for(j=0;jaij;for(i=0;i3;i+)for(j=0;j4;j+)bji=aij;for(i=0;i4;i+)for(j=0;j3;j+)coutbij;coutendl;输入数组a进行矩阵转置输出数组ba02b20a21b12第28页/共89页练习:输出杨辉三角。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;i10;i+)for(j=0;j10-i;j+)cout ;for(j=0;j=i;j+)coutsetw(4)aij ;coutendl;第29页/共89页课堂练习:1.数组元素ai是该数组中的第个元素.2.元素类型为int的数组a10共占用字节的存储空间,其中元素a5的字节地址为.3.元素类型为double的数组a46共占用字节的存储空间,其中元素a25的字节地址为.4.元素类型为char的数组a1030共占用字节的存储空间,其中元素a34的字节地址为.答案:1.i+1 2.40 a+20 3.192 a+136 4.300 a+94 第30页/共89页利用数组进行数值计算3数组的应用利用数组进行统计利用数组进行统计数据排序数据排序冒泡法冒泡法选择法选择法查找数据查找数据 顺序查找(不要求数组元素有序排列)顺序查找(不要求数组元素有序排列)二分查找(要求数组元素有序排列)二分查找(要求数组元素有序排列)第31页/共89页基本算法举例基本算法举例1.排序(1)冒泡法排序例:输入5个数,进行由小到大排序:98542算法:两两比较,大数向后移,找到最大数放在最后,再在剩余的的4个数中进行两两比较,找到最大数,以此类推.总是小数往前放,大数往后放,相当于气泡上升,故称之为:冒泡法冒泡法第32页/共89页85429542842524比较4次第一轮比较3次第二轮比较2次第三轮比较1次第四轮9854289542859428549285425842548254242452对n个数,则要进行n-1趟扫描,在第i趟扫描中要进行n-i次比较。可以推知:第33页/共89页/*排序*/for(i=0;iN-1;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;第34页/共89页#include#defineN10voidmain()inti,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;第35页/共89页(2)选择法排序选择法排序特点:比较后不立即互换元素,而是记下其位置并在每一轮比较完毕后和()互换排序过程:(1)首先通过9次比较,从10个数中找出最小的,将它与第1个数交换第一趟选择排序,结果最小的数被安置在第1个元素位置上(2)再通过8次比较,从剩余的9个数中找出次小的数,将它与第2个数交换第二趟选择排序(3)重复上述过程,共经过9趟排序后,排序结束第36页/共89页49386597761327kj第1趟(i=0):13491338659776492727381327659776493813273897764965132738497697651327384965977613273849657697kkkkjjjjjjjjjj第2趟(i=1):第3趟(i=2):第4趟(i=3):第5趟(i=4):第6趟(i=5):第37页/共89页输入10个数给a0到a9fori=0to8forj=i+1to9ajak真假k=j输出a0到a9k=iaiak交换i!=k真假第38页/共89页#includeconstintN=10;voidmain()intaN,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;A0A1A2An-1A0A1A2An-1A0Ai-1Ai.An-1A0A1.An-2An-1第39页/共89页例:在有序数组中插入一个数后使原数组例:在有序数组中插入一个数后使原数组仍然有序。仍然有序。例如:例如:3571218(m=5),),将将b=10插入插入步骤:步骤:(1)要找到要找到b在数组中的位置在数组中的位置(2)给给b让位置让位置(3)将将b放到该位置上放到该位置上(4)数组元素的个数数组元素的个数m加加1第40页/共89页b=10b=103571218(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)第41页/共89页357101218(m=6),将将b=10删除删除步骤:步骤:(1)要找到要找到b在数组中的位置在数组中的位置(2)后面的数组元素依次前移后面的数组元素依次前移,覆盖该位置覆盖该位置上的数组元素即可实现删除上的数组元素即可实现删除(3)数组元素的个数数组元素的个数m减减1例:在有序数组中删除一个数,例如:第42页/共89页357101218(1)357101218(2)357121218for(i=0;im;i+)if(ai=b)break;101218for(j=i;jc0c1c2;for(i=0;ici;2.整个数组的输入输出,即按数组名输入输出整个数组的输入输出,即按数组名输入输出(仅用于字符数组仅用于字符数组),因数组名本身代表数组的,因数组名本身代表数组的首地址首地址字符数组的输入和输出字符数组的输入和输出第50页/共89页注意注意:(1)输入、输出字符串时不包括输入、输出字符串时不包括“”(2)cin输入时系统一直读取字符,直到遇到输入时系统一直读取字符,直到遇到“空白空白符符”为止。为止。例如:输入数据例如:输入数据helloworldC数组中内容为数组中内容为hellocoutc;cinsetw(20)c;第51页/共89页补充get()函数(包含在“iostream.h”)如想输入含空格的字符串,如“hello worldhello world”只能使用get()get()函数,使用格式如下:cin.getcin.get(字符数组名,字符串长度,规定的结束符)其中,规定的结束符省略时,默认为回车键。如:char str20;char str20;cin.getcin.get(str,20)(str,20)第52页/共89页字符串处理函数字符串函数的原型保存在中v 字符串连接函数:strcat(s1,s2);char*strcat(char*s1,const 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)函数值为整数(返回字符个数)(参数为字符数组名)(参数为字符数组名)第53页/共89页5 字符数组程序应用字符数组程序应用v字符串的长度字符串的长度v逆序v字符串函数第54页/共89页_例:求字符串长度例:求字符串长度扫描数组扫描数组,只要不是只要不是0,计数器就加计数器就加1源程序源程序:#includevoidmain()inti;chars50;cins;for(i=0;i50&si!=0;i+);cout“Lenghof“s“is”i;ac d0bifor(i=0;i50&si+!=0;);ii=0第55页/共89页字符串连接函数字符串连接函数/*例:例:STRCAT*/#includevoidmain()inti,j;chars140,s220;cins1s2;for(i=0;i40&s1i!=0;i+);for(j=0;j20&s2j!=0;j+)s1i+=s2j;s1i=0;/*s1i=s2j;*/couts1;s1s2acd0beg0facdebfg0s1/i=strlen(s1);第56页/共89页 /*例: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”;第57页/共89页字符串复习第58页/共89页字符数组字符数组用来存放字符数据的数组是字符数组,用来存放字符数据的数组是字符数组,字符数组中字符数组中的一个元素存放一个字符的一个元素存放一个字符。一、字符数组的定义一、字符数组的定义char数组名数组名常量表达式常量表达式;charc4;/*每个元素占一个字节每个元素占一个字节*/c0=I;c1=m;c2=_;类型数组名数组大小第59页/共89页二、字符数组的初始化二、字符数组的初始化与数值数组的初始化相同,取其相应字符的与数值数组的初始化相同,取其相应字符的ASCII值。值。charc10=I,a,m,a,b,o,y;随机yob a ma Icc0c9第60页/共89页如果字符个数大于数组长度,做错误处理;如果数值个数如果字符个数大于数组长度,做错误处理;如果数值个数小于数组长度,后面的字节全部为小于数组长度,后面的字节全部为0。如果省略数组长度,则字符数即为数组长度。如果省略数组长度,则字符数即为数组长度。staticcharc=I,a,m,a,g,i,r,l;同理,也可定义和初始化一个二维或多维的字符数组。分同理,也可定义和初始化一个二维或多维的字符数组。分层或省略最后一维。层或省略最后一维。charst1=65,66,68;ABD第61页/共89页三、字符数组的引用三、字符数组的引用voidmain(void)charc10=I,a,m,a,b,o,y;inti;for(i=0;i10;i+)coutci;cout“n”;定义输出第62页/共89页四、字符串和字符串结束标志四、字符串和字符串结束标志C+语言将字符串作为字符数组来处理。语言将字符串作为字符数组来处理。字符串常量:字符串常量:“CHINA”,在机内被处理成一个无在机内被处理成一个无名的字符型一维数组名的字符型一维数组。CHINA0C+语言中约定用语言中约定用0作为字符串的结束标志,作为字符串的结束标志,它占内存空间,但不计入串长度。它占内存空间,但不计入串长度。有了结束标志有了结束标志0后,程序往往后,程序往往依据它判断字符串是否结依据它判断字符串是否结束束,而不是根据定义时设定的长度,而不是根据定义时设定的长度。第63页/共89页字符串与字符数组的区别:字符串与字符数组的区别:chara=C,H,I,N,A;charc=“CHINA”;随机随机ANIHC长度占长度占5个字节个字节随机0ANIHC长度占长度占6个字节个字节字符数组字符串第64页/共89页可以用字符串的形式为字符数组赋初值可以用字符串的形式为字符数组赋初值charc=“Iamaboy”;/*长度长度11字节,以字节,以0结结尾尾*/chara=I,a,m,a,b,o,y;/*长度长度10字节字节*/如果数组定义的长度大于字符串的长度,后面均为如果数组定义的长度大于字符串的长度,后面均为0。charc10=“CHINA”;00000ANIHCc0的的ASCII为为0,而而(空格空格)的的ASCII为为32。第65页/共89页charw=T,u,r,b,o,0;Turbo 0charw=“Turbo0”;Turbo 0charw=“Turbo0”;Turbo 0charw=Turbo0;非法第66页/共89页chara25=“abcd”,“ABCD”;abcd0ABCD0在在语句中语句中字符数组不能用赋值语句字符数组不能用赋值语句整体赋值整体赋值。charstr12;str=“TheString”;str为字符数组在内存中存储的地址,一经定义,便成为常为字符数组在内存中存储的地址,一经定义,便成为常量,不可再赋值。量,不可再赋值。charstr12=“TheString”;非法,在语句中赋值定义数组,开辟空间时赋初值第67页/共89页字符数组的输入输出字符数组的输入输出逐逐个个字字符符的的输输入入输输出出。这这种种输输入入输输出出的的方方法法,通通常常是是使使用循环语句来实现的。如:用循环语句来实现的。如:charstr10;cout“输入十个字符:输入十个字符:”;for(inti=0;istri;/A.A行将输入的十个字符依次送给数组行将输入的十个字符依次送给数组str中的各个元素。中的各个元素。定义赋值第68页/共89页把把字字符符数数组组作作为为字字符符串串输输入入输输出出。对对于于一一维维字字符符数数组组的的输输入入,在在cincin中中仅仅给给出出数数组组名名;输输出出时时,在在coutcout中也只给出中也只给出数组名数组名。voidmain(void)chars150,s260;couts1;cins2;cout“ns1=“s1;cout“ns2=“s2“n”;输入:输入:abcdstringcin只能输入一个单只能输入一个单词,不能输入一行词,不能输入一行单词。单词。数组名数组名输出到0为止第69页/共89页当要把当要把输入的一行输入的一行作为一个字符串送到字符数组中作为一个字符串送到字符数组中时,则要使用函数时,则要使用函数cin.getline()。这个函数的第一。这个函数的第一个参数为字符数组名,第二个参数为允许输入的最个参数为字符数组名,第二个参数为允许输入的最大字符个数。大字符个数。cin.getline(数组名数组名,数组空间数数组空间数);chars180;.cin.getline(s1,80);首先开辟空间参数是数组名第70页/共89页voidmain(void)chars381;cout”输入一行字符串输入一行字符串:”;cin.getline(s3,80);/Acout”s3=”s3n;/B当输入行中的字符个数小于当输入行中的字符个数小于80时,将实际输入的字符串时,将实际输入的字符串(不包括换行符)全部送给(不包括换行符)全部送给s3;当输入行中的字符个数大;当输入行中的字符个数大于于80时,只取前面的时,只取前面的80个字符送给字符串。个字符送给字符串。定义从键盘接收一行字符输出到0为止第71页/共89页六、字符串处理函数六、字符串处理函数C中没有对字符串变量进行赋值、合并、比较中没有对字符串变量进行赋值、合并、比较的运算符,但提供了许多的运算符,但提供了许多字符串处理函数字符串处理函数,用户可,用户可以调用以调用#include“string.h”所有字符串处理函数的实参都是所有字符串处理函数的实参都是字符数组名字符数组名第72页/共89页1、合并两个字符串的函数、合并两个字符串的函数strcat(str1,str2)staticcharstr120=“Iama”;staticcharstr2=“boy”;strcat(str1,str2);Iama00boy0Iamaboy0将第二个字符串将第二个字符串str2接到第一个字符串接到第一个字符串str1后。后。注意:第一个字符串要有足够的空间。注意:第一个字符串要有足够的空间。空间足够大第73页/共89页2、复制两个字符串的函数、复制两个字符串的函数strcpy(str1,str2)staticcharstr120=“Iama”;staticcharstr2=“boy”;strcpy(str1,str2);00amaIstr10yobstr200a0yobstr1strcpy(str1,“CHINA”);0ANIHCstr1strcpy(“CHINA”,str1);str1=str2;str1=“CHINA”;字符串正确赋值均为非法第74页/共89页3、比较两个字符串的函数、比较两个字符串的函数strcmp(str1,str2)此函数用来比较此函数用来比较str1和和str2中字符串的内容。函数对字符串中字符串的内容。函数对字符串中的中的ASCII字符字符逐个两两比较逐个两两比较,直到遇到不同字符或,直到遇到不同字符或0为止。函数值由两个对应字符相减而得。为止。函数值由两个对应字符相减而得。该函数具有返回值,返回值是两字符串对应的该函数具有返回值,返回值是两字符串对应的第一个第一个不同不同的的ASCII码的差值。码的差值。若两个字符串完全相同,函数值为若两个字符串完全相同,函数值为0。if(strcmp(str1,str2)=0).用来判断两字符串是否相等第75页/共89页staticcharstr120=“CHINA”;staticcharstr2=“CHINB”;coutstrcmp(str1,str2)endl;输出:输出:-1staticcharstr120=“CHINA”;staticcharstr2=“AHINB”;coutstrcmp(str1,str2)endl;输出:输出:2if(str1=str2)cout“yesn”;if(strcmp(str1,str2)=0)cout“yesn”;非法正确第76页/共89页4、求字符串长度的函数、求字符串长度的函数strlen(str1)长度不包括长度不包括0。函数参数为数组名,返回值为数组首字母到函数参数为数组名,返回值为数组首字母到0的长度。的长度。并非数组在内存中空间的大小。并非数组在内存中空间的大小。chars80;strcpy(s,“abcd”);coutstrlen(s)endl;输出:输出:400a0yobstr1输出:输出:3coutstrlen(str1)endl;coutsiziof(s)endl;输出:输出:80第77页/共89页charstr120=“CHINA”;coutstrlen(str1)endl;输出:输出:5charsp=“x69082”;coutstrlen(sp)endl;输出:输出:6charsp=“tv0willn”;coutstrlen(sp)endl;输出:输出:3charstr120=“abook”;coutstrlen(str1)endl;输出:输出:1第78页/共89页5、strlwr(str1)将将str1中的大写字母转换成小写字母。中的大写字母转换成小写字母。6、strupr(str1)将将str1中的小写字母转换成大写字母。中的小写字母转换成大写字母。第79页/共89页7、函数、函数strncmp(字符串字符串1,字符串字符串2,maxlen)函数原型为函数原型为:intstrncmp(charstr1,charstr2,intm)第三个参数为正整数,它限定了至多比较的字符个数第三个参数为正整数,它限定了至多比较的字符个数若字符串若字符串1或字符串或字符串2的长度小于的长度小于maxlen的值时,函数的的值时,函数的功能与功能与strcmp()相同。相同。当二个字符串的长度均大于当二个字符串的长度均大于maxlen的值时,的值时,maxlen为至为至多要比较的字符个数。多要比较的字符个数。coutstrncmp(“China”,“Chifjsl;kf”,3)n;输出:输出:0第80页/共89页第三个参数为正整数,它限定了至多拷贝的字符个数第三个参数为正整数,它限定了至多拷贝的字符个数若若字符串字符串2的长度小于的长度小于maxlen的值时,函数的功能与的值时,函数的功能与strcpy()相同。相同。当字符串当字符串2的长度大于的长度大于maxlen的值时,的值时,maxlen为至多要拷为至多要拷贝的字符个数。贝的字符个数。8、函数、函数strncpy(字符数组名字符数组名1,字符串字符串2,maxlen)函数原型为函数原型为:voidstrncmp(charstr1,charstr2,intm)第81页/共89页chars90,s190;strncpy(s,abcdssfsdfk,3);/Astrncpy(s1,abcdef,90);/Bcoutsendl;couts1endl;输出:输出:abc输出:输出:abcdef注注意意,二二字字符符串串之之间间不不能能直直接接进进行行比比较较,赋赋值值等等操操作作,这些操作必须通过字符串函数来实现。这些操作必须通过字符串函数来实现。空间足够大第82页/共89页7 7 常见错误1、数组下标越界。、数组下标越界。如:如: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;第83页/共89页2、数组整体赋值。、数组整体赋值。int a10;int b10=1,2,3,4,5,6;a=b;+不允许对数组进行整体操作,如果把数不允许对数组进行整体操作,如果把数组组 a 赋值给数组赋值给数组 b,需要用循环语句来实现。,需要用循环语句来实现。for(i=0;i10;i+)ai=bi;第84页/共89页3、误以为数组名代表数组中全部元素。、误以为数组名代表数组中全部元素。main()int a4=1,2,3,4;cout a;企图用数组名代表全部元素。企图用数组名代表全部元素。+中,数组名代表数组首地址,不能通过中,数组名代表数组首地址,不能通过数组名输出数组名输出4个整数。个整数。cout a0 a1 a2 a3);或:或:for(i=0;i=3;i+)cout ai;第85页/共89页4、引用数组元素时使用圆括号。、引用数组元素时使用圆括号。cout a(5);5、向一个字符数组赋字符串。、向一个字符数组赋字符串。char str20;str=I am a boy.;这种错误和第二种错误为一种错误,即不支持对数组的整体操作。strcpy(str,I am a bpy.);第86页/共89页6、构造字符串时忘记在末尾应加、构造字符串时忘记在末尾应加0。i=0;while(ch=getchar()!=n)stri+=ch;cout str;由于构造的字符串没有加结束标志,当用由于构造的字符串没有加结束标志,当用cout函函数输出数输出str时,从时,从str的起始地址开始一个个的输出,的起始地址开始一个个的输出,输出完读入的字符后,没有遇到输出完读入的字符后,没有遇到0,继续输出,这,继续输出,这时的内容已不再是字符串中的字符。因此,时的内容已不再是字符串中的字符。因此,在自己构在自己构造一个字符串时,一定不要忘记在末尾加上造一个字符串时,一定不要忘记在末尾加上0。第87页/共89页i=0;while(ch=getchar()!=0)stri+=ch;stri=0;coutstr;第88页/共89页感谢您的欣赏!第89页/共89页

    注意事项

    本文(C数组及其应用实用.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开