版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1C数组及其应用实用
数组的概念数组的应用数组的定义授课内容字符串常见错误第1页/共89页例:某班有50名学生,求该班成绩的平均分
#include<iostream.h>voidmain(){intj,sum,s;floatave;sum=0;for(j=1;j<=50;j++){cin>>s;sum=sum+s;}ave=sum/50.0;cout<<“ave=”<<ave;}假设现在不仅要求平均分,还要求高于平均分的人数,那就不能只使用一个变量s了,而需要50个变量,但这样一来输入、输出、计算都会变得繁琐.在这种情况下,我们可以使用数组类型,说明一个含有50个元素的数组,每个数组元素存放一个成绩,成绩的输入、输出、计算都可通过循环来实现引入第2页/共89页#include<iostream.h>voidmain(){inti,overn=0,mark[50];floatave=0;for(i=0;i<50;i++){cin>>mark[i];ave=ave+mark[i];}ave=ave/50;for(i=0;i<50;i++)if(mark[i]>=ave)overn++;cout<<“平均分:”<<ave<<“
高于平均分的人数有:”<<overn;}第3页/共89页1数组的概念
数组是一组有序数据的集合;数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来唯一的确定数组中的元素。
在科学计算和数据处理中,要用到成批数据,这些数据类型相同,且彼此间存在一定的顺序关系,为了便于处理,引入了数组类型。一维数组a[0]a[1]a[2]a[3]a[4]a[5]数列583296第4页/共89页1.数组:由具有相同类型的固定数量的元素组成的结构2.数组元素:每一个数组元素都是一个变量,为了与一般的变量相区别,我们称数组元素为下标变量3.下标变量在数组中的位置序号称下标下标变量的数据类型称为下标类型(或元素类型)数组的概念第5页/共89页一维数组一维数组的定义一维数组的存储结构数组元素的引用形式一维数组的初始化一维数组程序设计举例(算法)一维数组的输入和输出第6页/共89页
数组:是一组具有相同数据类型的变量的有序集合。
例如:
inta[10];
数组名常量表达式类型说明一维数组的定义
格式:类型标识符
数组名[常量表达式];第7页/共89页inta[10];
数组名:用户定义的标识符;数组名表示了一个存储区的首地址(即第一个数组元素的地址)intn;cin>>n;inta[n];…..
常量表达式中不能有变量常量表达式的值不能是实数
下标从0开始,a[0],a[1]…a[9],没有a[10];
常量表达式的值为元素的个数错误第8页/共89页一维数组的存储结构a
一个数组的所有元素都是连续存储的数组元素为:a[0],a[1],a[2]…..a[9]inta[10];所占空间为:类型长度*元素个数84:668095101010141018:1046a[0]a[1]a[2]:a[9]数组首地址第9页/共89页数组元素的引用形式
数组元素的引用:数组名[下标]a[0]=a[2]+a[4]*2240inta[10];a[0]=2;下标
说明(1)下标可以是整型常量或整型表达式
如:a[1],a[2*3](2)数组定义为inta[5],数组长度为5
而下标在0----4之内,即a[0]----a[4]注意:如果出现a[5]=72;编译时不会指出错误,系统会将a[4]后下一个存储单元赋值为72,但这样可能会破坏数组以外其他变量的值。第10页/共89页一维数组的初始化概念:在定义一维数组时对各元素指定初始值称为数组的初始化如:inta[5]={1,3,5,7,9};2.说明初值用{}括起来,数据之间用逗号分开.对数组的全体元素指定初值,可以不指明数组的长度,系统会根据{}内数据的个数确定数组的长度。如:inta[]={1,3,5,7,9};第11页/共89页(3)对数组中部分元素指定初值(这时不能省略数组长度)
如:inta[5]={1,3,5};
(4)使数组中的全部元素初始值都为0
如:inta[5]={0,0,0,0,0};更简单的写法:inta[5]={0};第12页/共89页例:输入50个成绩,求平均分输出高于平均分的个数#include<iostream.h>voidmain(){inti,overn=0,mark[50];floatave=0;for(i=0;i<50;i++){cin>>mark[i];ave=ave+mark[i];}ave=ave/50;for(i=0;i<50;i++)if(mark[i]>=ave)overn++;cout<<“平均分:”<<ave<<“
高于平均分的人数有:”<<overn;}第13页/共89页一维数组的输入和输出数组的输入和输出只能逐个对数组元素进行操作(字符数组例外)输入方法:定义:inta[10],i;输入第i个数组元素:cin>>a[i];输入整个数组元素:for(i=0;i<10;i++)cin>>a[i];输出方法:输出第i个数组元素:cout<<a[i];输出整个数组元素:for(i=0;i<10;i++)cout<<a[i];第14页/共89页例:用一维数组求Fibonacci
数列#include<iostream.h>voidmain(){inti;intf[20]={1,1};for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if(i%5==0)cout<<‘\n’;cout<<“\t”<<f[i];}}110000:0f[0]f[1]f[2]f[3]f[4]f[5]:f[19]i=2f[2]=f[0]+f[1]i=3f[3]=f[1]+f[2]i=4f[4]=f[2]+f[3]23586765第15页/共89页例:输入一个数据,在已知数组中查找是否有该数据58019263749a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]#include<iostream.h>voidmain(){inti,x;inta[10]={5,8,0,1,9,2,6,3,7,4};cin>>x;for(i=0;i<10;i++)if(x==a[i]){cout<<“find!”<<endl;break;}if(i==10)cout<<“nofind!”<<endl;}第16页/共89页#include<iostream.h>Voidmain(){intf[20]={1,1},j;for(j=2;j<=19;j++)//生成数列
f[j]=f[j-2]+f[j-1];for(j=19;j>=0;j--)//逆序显示
cout<<f[j];cout<<endl;}练习:把F数列倒序输出第17页/共89页2二维数组二维数组的定义二维数组的存储结构二维数组的初始化二维数组元素的引用形式二维数组的输入和输出二维数组程序设计举例第18页/共89页二维数组的定义格式:类型标识符数组名[常量表达式][常量表达式]intb[2][3];b为2×3(2行3列)的数组b[0]b[1]b----b[0][0]b[0][1]b[0][2]----b[1][0]b[1][1]b[1][2]102030405060b[0]b[1]b[0][0]b[0][1]b[0][2]第19页/共89页二维数组的存储结构intb[2][3];b[0]b[1]b[1][0]b[1][1]b[1][2]b[0][0]b[0][1]b[0][2]
存放顺序:按行存放,先顺序存放第一行的元素,再存放第二行的元素b[0]、b[1]可以作为数组名第20页/共89页a[1][0]a[1][1]a[1][2]a[2][0]a[2][1]a[2][2]a[0][0]a[0][1]a[0][2]a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]a[2][0]a[2][1]a[2][2]101010141018102210261030103410381042数组的元素在内存中是连续存放的
inta[3][3];的存放形式如下:a[0]a[1]a[2]C++将二维数组看作一维数组,其每个数组元素又是一个一维数组第21页/共89页二维数组的初始化intb[2][3]={{1,2,3},{4,5,6}};
intb[2][3]={1,2,3,4,5,6};
分行赋值
按数组排列的顺序赋值123456注意:此方法数据没有明显的界限,当数据较多时容易出错
将数据依次赋给元素
b[0][0],b[0][1]……b[1][2]第22页/共89页
intb[][3]={{1,2,3},{4,5,6}};intb[][];intb[][]={1,2,3,4,5,6};intb[n][m];错!
若全部都赋初值,第一维长度可省略第23页/共89页二维数组元素的引用形式数组名[下标1][下标2]b[0][2]=b[1][0]+b[0][0]-b[0][2];4132数组元素可以出现在表达式中,也可以被赋值引用形式:inta[3][4];….a[3][4]=4;错!注意:(1)每个下标都要用[]括起来如a[2][1]不能写成a[2,1](2)下标不要超过定义的范围
intb[][3]={{1,2,3},{4,5,6}};第24页/共89页二维数组的输入和输出数组的输入和输出只能逐个对数组元素进行操(字符数组例外)定义:inta[2][3],i,j;输入方法:输入第i行第j列元素:cin>>a[i][j];输入整个数组的元素:for(i=0;i<2;i++)for(j=0;j<3;j++)cin>>a[i][j];输出方法:输出第i行第j列元素:cout<<a[i][j];输出整个数组的元素:for(i=0;i<2;i++)for(j=0;j<3;j++)cout<<a[i][j];第25页/共89页例:有一个3*4的矩阵,编程求出其中的最大值及其所在的行号和列号。第26页/共89页52093712610418maxrowcol1212#include<iostream.h>voidmain(){inti,j,row=0,col=0,max;inta[3][4]={{5,2,0,9},{3,7,12,6},{10,4,1,8}};
max=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[i][j]>max){max=a[i][j];row=i;col=j;}cout<<“max=”<<max;cout<<“max=a[”<<row<<‘]’<<‘[’<<col<<‘]’;}输出:max=12max=a[1][2]第27页/共89页例:将一个矩阵进行转置(即原来的行变为列)5209371261041840#include<iostream.h>voidmain(){inta[3][4],b[4][3],i,j;for(i=0;i<3;i++)
for(j=0;j<4;j++)cin>>a[i][j];
for(i=0;i<3;i++)
for(j=0;j<4;j++)b[j][i]=a[i][j];for(i=0;i<4
;i++)
{
for(j=0;j<3;j++)cout<<b[i][j];cout<<endl;}}输入数组a进行矩阵转置输出数组ba[0][2]b[2][0]a[2][1]b[1][2]第28页/共89页练习:输出杨辉三角。111121133114641#include<iostream.h>#include<iomanip.h>voidmain(){ inti,j,a[10][10]={0};for(i=0;i<10;i++) { a[i][0]=1; a[i][i]=1; } for(i=2;i<10;i++) for(j=1;j<i;j++) a[i][j]=a[i-1][j]+a[i-1][j-1]; for(i=0;i<10;i++) { for(j=0;j<10-i;j++) cout<<""; for(j=0;j<=i;j++) cout<<setw(4)<<a[i][j]<<"";
cout<<endl; }}第29页/共89页课堂练习:1.数组元素a[i]是该数组中的第——个元素.2.元素类型为int的数组a[10]共占用——字节的存储空间,其中元素a[5]的字节地址为——.3.元素类型为double的数组a[4][6]共占用——字节的存储空间,其中元素a[2][5]的字节地址为——.4.元素类型为char的数组a[10][30]共占用——字节的存储空间,其中元素a[3][4]的字节地址为——.答案:1.i+12.40a+203.192a+1364.300a+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;i<N-1;i++)for(j=0;j<N-i-1;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; }第34页/共89页#include<iostream.h>#defineN10voidmain(){inti,j,a[N],t;for(i=0;i<N;i++)//输入
cin>>a[i];for(i=0;i<N;i++)//输出
cout<<a[i]<<‘‘;
/*排序*/for(i=0;i<N-1;i++)for(j=0;j<N-i-1;j++) if(a[j]>a[j+1]) {t=a[j]; a[j]=a[j+1]; a[j+1]=t; }for(i=0;i<N;i++)//输出
cout<<a[i]<<‘’;}第35页/共89页(2)选择法排序特点:比较后不立即互换元素,而是记下其位置并在每一轮比较完毕后和S(i)互换.排序过程:(1)首先通过9次比较,从10个数中找出最小的,将它与第1个数交换—第一趟选择排序,结果最小的数被安置在第1个元素位置上(2)再通过8次比较,从剩余的9个数中找出次小的数,将它与第2个数交换—第二趟选择排序(3)重复上述过程,共经过9趟排序后,排序结束第36页/共89页[49386597761327]kj第1趟(i=0):134913[386597764927]2738
1327[6597764938]
132738[97764965]13273849[769765]
1327384965[9776]
132738496576[97]kkkkjjjjjjjjjj第2趟(i=1):第3趟(i=2):第4趟(i=3):第5趟(i=4):第6趟(i=5):第37页/共89页输入10个数给a[0]到a[9]fori=0to8forj=i+1to9a[j]<a[k]真假k=j输出a[0]到a[9]k=ia[i]
a[k]交换i!=k真假第38页/共89页#include<iostream.h>constintN=10;voidmain(){inta[N],i,j,k,t;for(i=0;i<N;i++)cin>>a[i];
for(i=0
;i<N-1
;i++)
{
k=i;
for(j=i+1
;j<N
;j++)
if(
a[j]<a[k]
)
k=j;if(
k!=i
){t=a[i];a[i]=a[k]
;
a[k]=t;
}}
for(i=0;i<N;i++)cout<<a[i];}A0
A1A2……An-1A0A1
A2……An-1A0…Ai-1Ai…...An-1A0A1….….An-2
An-1第39页/共89页例:在有序数组中插入一个数后使原数组仍然有序。例如:3571218(m=5),将b=10插入步骤:(1)要找到b在数组中的位置(2)给b让位置(3)将b放到该位置上(4)数组元素的个数m加1第40页/共89页b=103571218(2)357121218(3)for(i=0;i<m;i++)if(a[i]>b) break;for(j=m-1;j>=i;j--)a[j+1]=a[j];a[i]=b;121810(1)3571218a[0]a[1]a[2]a[3]a[4]a[5]m=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;i<m;i++)if(a[i]==b) break;101218for(j=i;j<m-1;j++)a[j]=a[j+1];(3)m=m-1;第43页/共89页是对有序数列进行查找的一种高效查找办法,其基本思想是逐步缩小查找范围,采取半分作为分割范围可使比较次数最少.比较过程:(设数列已做升序排序处理)设置三个变量,分别代表数组序列s的low,high和mid位置,其中mid=(low+high)/2,进行下列判断134681012151820
highlowmidX=15查找:(1)顺序查找(2)折半查找法:对有序数组第44页/共89页4字符串字符串及字符串结束标志字符数组的输入和输出字符串处理函数字符数组程序应用字符数组的定义字符数组的初始化第45页/共89页字符数组用来存放字符数据的数组为字符数组。charc[10];charc[10]={‘I’,‘’,‘a’,‘m’,‘’,‘h’,‘a’,‘p’,‘p’,‘y’};若初值个数小于数组长度,剩余元素自动定为空字符charc[12]={‘c’,‘’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’};cprogram\0\0\0intc[10];定义初始化二者互相通用,但存储空间不同第46页/共89页字符串和字符串结束标志C++中没有专门的字符串变量,因此字符串存放在字符数组中,字符串以“\0”作为结束标志字符串:由若干个有效字符组成的序列有效字符包括字母,数字,专用字符,转义字符
如:“bfer”“a45-7”“m\tk\n”例:charc[5];①c[0]=‘O’;c[1]=‘K’;c[2]=‘!’;OK!OK!\0②c[0]=‘O’;c[1]=‘K’;c[2]=‘!’;c[3]=‘\0’;注意:字符数组与字符串并不相同第47页/共89页字符数组的初始化
如果对数组全部元素指定初值,则可以省略数组的长度charc[]={‘H’,‘e’,‘l’,‘l’,‘o’};Hello\0\0\0Hello1.为数组中的元素指定初值
charc[8]={‘H’,‘e’,‘l’,‘l’,‘o’};第48页/共89页2.对字符数组指定字符串初值charc[8]={“Hello”};charc[8]=“Hello”;charc[8]={‘H’,‘e’,‘l’,‘l’,‘o’,‘\0’};三种形式等价charc[]=“Hello”;charc[6]=“Hello”;charc[5]=“Hello”;Hello\0错误的初始化注意:初始化时数组的长度应足够大,
确保可以容纳所有字符和结束标志‘\0’Hello\0第49页/共89页1.输入单个字符
charc[8];inti;cin>>c[0]>>c[1]>>c[2];
for(i=0;i<8;i++)cin>>c[i];2.整个数组的输入输出,即按数组名输入输出
(仅用于字符数组),因数组名本身代表数组的首地址字符数组的输入和输出第50页/共89页注意:(1)输入、输出字符串时不包括“”(2)cin输入时系统一直读取字符,直到遇到“空白符”为止。例如:输入数据helloworldC数组中内容为hellocout<<c;charc[20];cin>>c;cin>>setw(20)>>c;第51页/共89页补充get()函数(包含在“iostream.h”)
如想输入含空格的字符串,如“helloworld”
只能使用get()函数,使用格式如下:
cin.get(字符数组名,字符串长度,规定的结束符)
其中,规定的结束符省略时,默认为回车键。如:charstr[20];
cin.get(str,20)第52页/共89页字符串处理函数字符串函数的原型保存在<string.h>中字符串连接函数:strcat(s1,s2);
char*strcat(char*s1,constchar*s2);
连接s1和s2两个字符串赋给s1,返回s1的值字符串拷贝函数:strcpy(s1,s2);
char*strcpy(char*s1,constchar*s2);
将s2中的字符串赋给s1,返回s1的值字符串比较函数:strcmp(s1,s2)
求字符串长度函数:strlen(s)
函数值为整数(返回字符个数)(参数为字符数组名)第53页/共89页5字符数组程序应用
字符串的长度
逆序
字符串函数第54页/共89页例:求字符串长度扫描数组,只要不是‘\0’,计数器就加1源程序:#include<iostream.h>voidmain(){inti;chars[50];cin>>s;for(i=0;i<50&&s[i]!=‘\0’;i++);cout<<“Lenghof“<<s<<“is”<<i;}acd\0bifor(i=0;i<50&&s[i++]!=‘\0’;);ii=0第55页/共89页字符串连接函数/*例:
STRCAT*/#include<iostream.h>voidmain()
{inti,j;chars1[40],s2[20];cin>>s1>>s2;for(i=0;i<40&&s1[i]!=‘\0’;i++);for(j=0;j<20&&s2[j]!=‘\0’;j++) s1[i++]=s2[j];s1[i]=‘\0’;/*s1[i]=s2[j];*/cout<<s1;}s1s2acd\0beg\0facdebfg\0s1//i=strlen(s1);第56页/共89页/*例:
STRCPY*/#include<iostream.h>voidmain(){charp1[80],p2[80];inti;cin>>p2;for(i=0;p2[i]!='\0';i++) p1[i]=p2[i];
p1[i]=‘\0’;cout<<“p1=“<<p1<<“\np2=“<<p2<<“\n”;}第57页/共89页字符串复习第58页/共89页字符数组用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。一、字符数组的定义char数组名[常量表达式];charc[4];/*每个元素占一个字节*/c[0]=‘I’;c[1]=‘m’;c[2]=‘_’;类型数组名数组大小第59页/共89页二、字符数组的初始化与数值数组的初始化相同,取其相应字符的ASCII值。charc[10]={‘I’,‘’,‘a’,‘m’,‘’,‘a’,‘’,‘b’,‘o’,‘y’};随机‘y’‘o’‘b’‘
’‘a’‘
’‘m’‘a’‘
’‘I’cc[0]c[9]第60页/共89页如果字符个数大于数组长度,做错误处理;如果数值个数小于数组长度,后面的字节全部为‘\0’。如果省略数组长度,则字符数即为数组长度。staticcharc[]={‘I’,‘’,‘a’,‘m’,‘’,‘a’,‘’,‘g’,‘i’,‘r’,’l’};同理,也可定义和初始化一个二维或多维的字符数组。分层或省略最后一维。charst1[]={65,66,68};‘A’‘B’‘D’第61页/共89页三、字符数组的引用voidmain(void){charc[10]={‘I’,‘’,‘a’,‘m’,‘’,‘a’,‘’,‘b’,‘o’,‘y’};inti;for(i=0;i<10;i++)cout<<c[i];cout<<“\n”;}定义输出第62页/共89页四、字符串和字符串结束标志C++语言将字符串作为字符数组来处理。字符串常量:“CHINA”,在机内被处理成一个无名的字符型一维数组。CHINA‘\0’C++语言中约定用‘\0’作为字符串的结束标志,它占内存空间,但不计入串长度。有了结束标志‘\0’后,程序往往依据它判断字符串是否结束,而不是根据定义时设定的长度。第63页/共89页字符串与字符数组的区别:chara[]={‘C’,’H’,’I’,’N’,’A’};charc[]=“CHINA”;随机随机ANIHC长度占5个字节随机‘\0’ANIHC长度占6个字节字符数组字符串第64页/共89页可以用字符串的形式为字符数组赋初值charc[]={“Iamaboy”};/*长度11字节,以‘\0’结尾*/chara[]={‘I’,‘’,‘a’,‘m’,‘’,‘a’,‘’,‘b’,‘o’,‘y’};/*长度10字节*/如果数组定义的长度大于字符串的长度,后面均为‘\0’。charc[10]=“CHINA”;‘\0’‘\0’‘\0’‘\0’‘\0’ANIHCc‘\0’的ASCII为0,而‘’(空格)的ASCII为32。第65页/共89页charw[]={‘T’,‘u’,‘r’,‘b’,‘o’,‘\0’};Turbo‘\0’charw[]={“Turbo\0”};Turbo‘\0’charw[]=“Turbo\0”;Turbo‘\0’charw[]=‘Turbo\0’;非法第66页/共89页chara[2][5]={“abcd”,“ABCD”};abcd‘\0’ABCD‘\0’在语句中字符数组不能用赋值语句整体赋值。charstr[12];str=“TheString”;str为字符数组在内存中存储的地址,一经定义,便成为常量,不可再赋值。charstr[12]=“TheString”;非法,在语句中赋值定义数组,开辟空间时赋初值第67页/共89页字符数组的输入输出逐个字符的输入输出。这种输入输出的方法,通常是使用循环语句来实现的。如:
charstr[10]; cout<<“输入十个字符:”; for(inti=0;i<10;i++)
cin>>str[i]; //A......A行将输入的十个字符依次送给数组str中的各个元素。定义赋值第68页/共89页把字符数组作为字符串输入输出。对于一维字符数组的输入,在cin中仅给出数组名;输出时,在cout中也只给出数组名。voidmain(void){chars1[50],s2[60];cout<<“输入二个字符串:”;cin>>s1;cin>>s2;cout<<“\ns1=“<<s1;cout<<“\ns2=“<<s2<<“\n”;
}输入:abcd<CR> string<CR>cin只能输入一个单词,不能输入一行单词。数组名数组名输出到‘\0’为止第69页/共89页当要把输入的一行作为一个字符串送到字符数组中时,则要使用函数cin.getline()。这个函数的第一个参数为字符数组名,第二个参数为允许输入的最大字符个数。cin.getline(数组名,数组空间数);chars1[80];.......cin.getline(s1,80);首先开辟空间参数是数组名第70页/共89页voidmain(void){chars3[81];cout<<”输入一行字符串:”;cin.getline(s3,80); //Acout<<”s3=”<<s3<<’\n’; //B}当输入行中的字符个数小于80时,将实际输入的字符串(不包括换行符)全部送给s3;当输入行中的字符个数大于80时,只取前面的80个字符送给字符串。定义从键盘接收一行字符输出到‘\0’为止第71页/共89页六、字符串处理函数C++中没有对字符串变量进行赋值、合并、比较的运算符,但提供了许多字符串处理函数,用户可以调用#include“string.h”所有字符串处理函数的实参都是字符数组名第72页/共89页1、合并两个字符串的函数strcat(str1,str2)staticcharstr1[20]={“Iama”};staticcharstr2[]={“boy”};strcat(str1,str2);Iama'\0''\0'boy‘\0’Iamaboy'\0'将第二个字符串str2接到第一个字符串
str1后。注意:第一个字符串要有足够的空间。空间足够大第73页/共89页2、复制两个字符串的函数strcpy(str1,str2)staticcharstr1[20]={“Iama”};staticcharstr2[]={“boy”};strcpy(str1,str2);'\0''\0'amaIstr1'\0'yobstr2'\0''\0'a'\0'yobstr1strcpy(str1,“CHINA”);'\0'ANIHCstr1strcpy(“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页staticcharstr1[20]={“CHINA”};staticcharstr2[]={“CHINB”};cout<<strcmp(str1,str2)<<endl;输出:-1staticcharstr1[20]={“CHINA”};staticcharstr2[]={“AHINB”};cout<<strcmp(str1,str2)<<endl;输出:2if(str1==str2)cout<<“yes\n”;if(strcmp(str1,str2)==0)cout<<“yes\n”;非法正确第76页/共89页4、求字符串长度的函数strlen(str1)长度不包括‘\0’。函数参数为数组名,返回值为数组首字母到‘\0’的长度。并非数组在内存中空间的大小。chars[80];strcpy(s,“abcd”);cout<<strlen(s)<<endl;输出:4‘\0’‘\0’a‘\0’yobstr1输出:3cout<<strlen(str1)<<endl;cout<<siziof(s)<<endl;输出:80第77页/共89页charstr1[20]={“CHINA”};cout<<str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年债券担保资产证券化项目合作协议3篇
- 浙教版(2023)小学信息技术三年级上册第1课《认识在线社会》教学实录及反思
- 2024年度知识产权质押反担保合同实施细则3篇
- 2023一年级数学上册 5 6-10的认识和加减法第3课时 6、7加减法配套教学实录 新人教版
- 学生会部长演讲稿汇编15篇
- 煤矿类实习报告范文汇编九篇
- 入职转正申请书(集合15篇)
- 个人原因辞职申请书合集7篇
- 年度工作计划汇编五篇
- 建筑实习报告8篇
- 2024年广州市南沙区初中语文毕业班模拟考试卷(附答案解析)
- 简单室内装修合同2024年
- 重庆江北国际机场有限公司招聘笔试题库2024
- 第11讲 地表形态与人类活动(高考一轮复习课件)
- 地下水动力学智慧树知到期末考试答案章节答案2024年长安大学
- GB/T 44143-2024科技人才评价规范
- 中国绿色算力发展研究报告(2024年)
- 环境管理与可持续发展管理制度
- 哈齐铁路客运专线无砟轨道测量监理实施细则
- DZ/T 0462.1-2023 矿产资源“三率”指标要求 第1部分:煤(正式版)
- 律师事务所文档排版格式指引
评论
0/150
提交评论