《C数组指针与字符串实用.pptx》由会员分享,可在线阅读,更多相关《C数组指针与字符串实用.pptx(92页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一维数组的声明与引用一维数组的声明类型说明符 数组名 常量表达式;例如:int a10;表示 a 为整型数组,有10个元素:a0.a9引用:必须先声明,后使用。只能逐个引用数组元素,而不能一次引用整个数组!例如:a0=a5+a7-a2*3第1页/共92页/数组元素的使用数组元素的使用#include void main()double a3;a0=11.11;a1=33.33;a2=55.55;cout a0=a0 endl;cout a1=a1 endl;cout a2=a2 endl;cout a0+a1+a2=a0+a1+a2 endl;/*程序运行结果程序运行结果*a0=11.11a1
2、=33.33a2=55.55a0+a1+a2=99.99*程序结束程序结束*/第2页/共92页一维数组的存储顺序数组元素在内存中顺次存放,它们的地址是连续的。例如:具有10个元素的数组 a,在内存中的存放次序如下:数组名字是数组首元素的内存地址。数组名是一个常量,不能被赋值。a0 a1a2 a3 a4a5 a6 a7a8 a9a第3页/共92页例:逆序显示一个数组的内容第4页/共92页/逆序显示一个数组的内容逆序显示一个数组的内容#include void main()const int SIZE=5;double aSIZE;int i;cout Enter SIZE numbers:;fo
3、r(i=0;I ai;cout=0;i-)cout ai ;cout endl;/*程序运行结果*Enter 5 numbers:1 3 5 7 9In reverse order:9 7 5 3 1*程序结束*/第5页/共92页一维数组的初始化可以在编译阶段使数组得到初值:在声明数组时对数组元素赋以初值。例如:static int a10=0,1,2,3,4,5,6,7,8,9;可以只给一部分元素赋初值。例如:static int a10=0,1,2,3,4;在对全部数组元素赋初值时,可以不指定数组长度。例如:static int a =1,2,3,4,5;第6页/共92页/一维数组的初始化
4、一维数组的初始化#include void main()float a =22.2,44.4,66.6;int size=sizeof(a)/sizeof(float);for(int i=0;isize;i+)cout a i =ai endl;/*程序运行结果程序运行结果*a0=22.2a1=44.4a2=66.6*程序结束程序结束*/第7页/共92页/Causing an unhandled exception#include void main()double a =22.2,44.4,66.6;double x=11.1;cout x=x endl;a3333=88.8;/ERROR
5、!cout x=x endl;cout a endl;第8页/共92页/*程序运行结果*x=11.1第9页/共92页例:用数组来处理求 Fibonacci 数列,输出前项。第10页/共92页/用数组来处理求用数组来处理求Fibonacci数列数列,输出前输出前20项。项。#include void main()int i;static int f20=1,1;/初始化第初始化第0、1个数个数 for(i=2;i 20;i+)fi=fi-2+fi-1;/求第求第219个数个数 for(i=1;i=20;i+)/输出输出,每行每行5个数个数 cout fi-1 t;if(i%5=0)cout en
6、dl;1 1 2 3 51 1 2 3 58 13 21 34 558 13 21 34 5589 144 233 377 61089 144 233 377 610987 1597 2584 4181 6765987 1597 2584 4181 6765第11页/共92页二维数组的声明及引用二维数组的声明类型说明符 数组名常量表达式常量表达式例如:float a34;引用例如:b12=a23/2存储顺序:按行存放第12页/共92页二维数组的初始化分行给二维数组赋初值static int a34=1,2,3,4,5,6,7,8,9,10,11,12;将所有数据写在一个内,按顺序赋值stati
7、c int a34=1,2,3,4,5,6,7,8,9,10,11,12;可以对部分元素赋初值例如:static int a34=1,0,6,0,0,11;第13页/共92页数组作为函数参数数组元素作实参,与单个变量一样。数组名作参数,形、实参数都应是数组名,类型要一样,传送的是数组首地传送的是数组首地址址。第14页/共92页例:数组在函数调用中的应用第15页/共92页/Passing an array to a function#include void read(int a,int&n);void print(int a,int n);int sum(int a,int n);void m
8、ain()const int MAXSIZE=100;int aMAXSIZE=0,size;read(a,size);cout 数组中有数组中有 size 个元素个元素:;print(a,size);cout 数组中各元素的和为数组中各元素的和为 sum(a,size)endl;/*程序运行结果程序运行结果*输入整数输入整数(输入输入0,则结束则结束!):a0:2a1:4a2:6a3:0数组中有数组中有 3 个元素个元素:2 4 6数组中各元素的和为数组中各元素的和为 12*程序结束程序结束*/第16页/共92页void read(int a,int&n)cout 输入整数输入整数(输入输入
9、0,则结束则结束!):n;n=0;do cout a n an;while(an+!=0);-n;/dont count the 0void print(int a,int n)for(int i=0;in;i+)cout ai ;cout endl;int sum(int a,int n)int sum=0;for(int i=0;in;i+)sum+=ai;return sum;第17页/共92页例:建立一个二维数组,按矩阵形式输出,然后对每一行求和。第18页/共92页#include void RowSum(int A 4,int nrow)for(int i=0;i nrow;i+)i
10、nt sum=0;for(int j=0;j 4;j+)sum+=Aij;cout Sum of row i is sum endl;void main(void)int Table34=1,2,3,4,2,3,4,5,3,4,5,6;for(int i=0;i 3;i+)for(int j=0;j 4;j+)cout Tableij ;cout endl;RowSum(Table,3);/*程序运行结果程序运行结果*1 2 3 42 3 4 53 4 5 6Sum of row 0 is 10Sum of row 1 is 14Sum of row 2 is 18*程序结束程序结束*/第19
11、页/共92页对象数组定义:类名 数组名元素个数;访问方法:通过下标访问 数组名下标.成员名第20页/共92页对象数组初始化 数组中每一个元素对象被创建时,系统都会调用构造函数类初始化该对象。通过初始化列表赋值。例:Location A2=Location(1,2),Location(3,4);如果没有为数组元素指定显式初始值,数组元素使用缺省值初始化(调用缺省构造函数)。Location B2=Location(5,8);Location C2;第21页/共92页数组元素所属类的构造函数不定义构造函数,则采用缺省构造函数。各元素对象的初值要求为相同的值时,可以定义出具有缺省形参值的构造函数。各
12、元素对象的初值要求为不同的值时,需要定义带形参(无缺省值)的构造函数。当数组中每一个对象被删除时,系统都要调用一次析构函数。第22页/共92页/Location.h#if!defined(_LOCATION_H)#define _LOCATION_Hclass Location public:Location();Location(int xx,int yy);Location();void Move(int x,int y);int GetX()return X;int GetY()return Y;private:int X,Y;#endif#include#include Locatio
13、n.hLocation:Location()X=Y=0;cout Default Constructor called.endl;Location:Location(int xx,int yy)X=xx;Y=yy;cout Constructor called.endl;Location:Location()cout Destructor called.endl;void Location:Move(int x,int y)X=x;Y=y;第23页/共92页/6_3.cpp#include#include Location.hint main()coutEntering main.endl;L
14、ocation A2;for(int i=0;i2;i+)Ai.Move(i+10,i+20);coutExiting main.endl;return 0;/*程序运行结果程序运行结果*Entering main.Default Constructor called.Default Constructor called.Exiting main.Destructor called.Destructor called.*程序结束程序结束*/第24页/共92页指针变量的概念指针:另一个变量的地址,用于间接访问变量指针变量:用于存放地址的变量指针运算符:*取地址运算符:&声明int i;int*i
15、_pointer=&i;/指向整型变量i的指针引用例1:i=3;例2:*i_pointer=3;第25页/共92页指针变量的初始化语法形式 存储类型 数据类型 *指针名初始地址;例:int*pa=&a;注意事项 用变量地址作为初值时,该变量必须在指针初始化之前已说明过,且变量类型应与指针类型一致。可以用一个已赋初值的指针去初始化另一 个指针变量。不要用一个内部 auto 型变量去初始化 static 型指针。第26页/共92页例6-5:指针的声明、赋值和使用。第27页/共92页/由书P163.例6-5改编#includevoid main()int*p;int i;/int*p,i;p=&i;
16、i=10;cout i =i endl;cout&i=&i endl;cout *p=*p endl;cout p =p endl;cout&p=&p endl;/*程序运行结果*i =10&i =0 x0012FF78*p =10 p =0 x0012FF78&p=0 x0012FF7C*程序结束*/第28页/共92页指针变量的算术运算指针与整数的加减运算 指针 p 加上或减去 n,其意义是指针当前指向位置的前方或后方第 n 个数据的地址。运算的结果值取决于指针指向的数据类型。指针加一,减一运算 指向下一个或前一个数据。例如:y=*px+相当于 y=*(px+)(*和+优先级相同,自右向左运
17、算)第29页/共92页papa-2pa-1pa+1pa+2pa+3*(pa-2)*pa*(pa+1)*(pa+2)*(pa+3)*(pa-1)short*pa第30页/共92页pb-1pbpb+1pb+2*(pb-1)*pb*(pb+1)*(pb+2)long*pb第31页/共92页指针变量的关系运算关系运算 指向相同类型数据的指针之间可以进行各种关系运算。指向不同数据类型的指针,以及指针与一般整数变量之间的关系运算是无意义的。指针可以和零之间进行等于或不等于的关系运算。例如:p=0或p!=0第32页/共92页指针变量的赋值运算指针名=地址“地址”中存放的数据类型与指针类型必须相符。向指针变量
18、赋的值必须是地址常量或变量,不能是普通整数。但可以赋值为整数0,表示空指针。指针的类型是它所指向变量的类型,而不是指针本身数据值的类型。指针的类型是它所指向变量的类型,而不是指针本身数据值的类型。允许定义指向 void 类型的指针。该指针可以被赋予任何类型对象的地址。例:void*general;第33页/共92页指向数组元素的指针定义与赋值例:int a10,*pa;pa=&a0;或 pa=a;通过指针引用数组元素经过上述定义及赋值后:*pa就是a0,*(pa+1)就是a1,*(pa+i)就是ai.ai,*(pa+i),*(a+i),pai都是等效的。不能写 a+,因为a是数组首地址,是常量
19、常量。第34页/共92页例:使用指针遍历一个数组第35页/共92页#include void main()const int SIZE=3;int aSIZE=55,66,77;cout a=a endl;cout sizeof(int)=sizeof(int)endl;int*end=a+SIZE;/converts SIZE to offset 6 int sum=0;for(int*p=a;p end;p+)sum+=*p;cout p=p;cout *p=*p;cout sum=sum endl;cout end=end endl;/*程序运行结果程序运行结果*a=0 x0012FF7
20、0sizeof(int)=4 p=0 x0012FF70 *p=55 sum=55 p=0 x0012FF74 *p=66 sum=121 p=0 x0012FF78 *p=77 sum=198end=0 x0012FF7C*程序结束程序结束*/第36页/共92页例:检查数组元素的地址第37页/共92页#include void main()int a =22,33,44,55,66;int*p;cout a=a ,*a=*a endl;for(p=a;p a+5;p+)cout p=p ,*p=*p endl;/*程序运行结果程序运行结果*a=0 x0012FF6C,*a=22p=0 x00
21、12FF6C,*p=22p=0 x0012FF70,*p=33p=0 x0012FF74,*p=44p=0 x0012FF78,*p=55p=0 x0012FF7C,*p=66*程序结束程序结束*/第38页/共92页例:设一个a数组,整型,有10个元素。用三种方法输出各元素.第39页/共92页/使用数组下标使用数组下标void main()int a10;int i;for(i=0;i ai;cout endl;for(i=0;i10;i+)cout ai;第40页/共92页/使用数组名使用数组名void main()int a10;int i;for(i=0;i ai;cout endl;f
22、or(i=0;i 10;i+)cout *(a+i);第41页/共92页/使用指针变量使用指针变量void main()int a10;int*p,i;for(i=0;i ai;cout endl;for(p=a;p (a+10);p+)cout *p;第42页/共92页例:对输入的两个数按大小顺序输出。第43页/共92页#include void swap(int *p1,int*p2)int p;p=*p1;*p1=*p2;*p2=p;void main()int a,b;int *p1,*p2;cin a b;p1=&a;p2=&b;if(a b)swap(p1,p2);cout a=a
23、 tb=b endl;/*程序运行结果程序运行结果*22 99a=99 b=22*程序结束程序结束*/第44页/共92页例:将数组a中n个整数按相反顺序存放。第45页/共92页#include void invert(int*p,int n)/实参是数组名时形参可以是指针。实参是数组名时形参可以是指针。int temp,i,j,m=(n-1)/2;for(i=0;i=m;i+)j=n-1-i;/temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;temp=pi;pi=pj;pj=temp;void main()int i,a6=3,7,9,2,0,6;cout 原原 数
24、数 组组:;for(i=0;i6;i+)cout ai ;cout endl;invert(a,6);cout 反置后数组反置后数组:;for(i=0;i6;i+)cout ai ;cout endl;/*程序运行结果程序运行结果*原原 数数 组组:3 7 9 2 0 6反置后数组反置后数组:6 0 2 9 7 3*程序结束程序结束*/第46页/共92页指针数组数组的元素是指针型例:Location *pa2;/由pa0,pa1两个指针组成 第47页/共92页例6-8 利用指针数组输出单位矩阵第48页/共92页#include void main()int line1=1,0,0;/声明数组声
25、明数组,矩阵的第一行矩阵的第一行int line2=0,1,0;/声明数组声明数组,矩阵的第二行矩阵的第二行int line3=0,0,1;/声明数组声明数组,矩阵的第三行矩阵的第三行int*p_line3;/声明整型指针数组声明整型指针数组p_line0=line1;/初始化指针数组元素初始化指针数组元素p_line1=line2;p_line2=line3;coutMatrix test:endl;for(int i=0;i3;i+)for(int j=0;j 3;j+)cout p_lineij ;coutendl;/*程序运行结果程序运行结果*Matrix test:1 0 00 1
26、00 0 1*程序结束程序结束*/第49页/共92页指针与常量指向常量的指针 不能通过指针来改变所指对象的值,但指针本身可以改变,可以指向另外的对象。例:const char*name1=John;若定义指针常量,则指针本身的值不能被改变。例:char*const name2=John;第50页/共92页#include int main()int *pt_int;float *pt_float;int pig=7,dog=27;float x=1.2345,y=32.14;void *general;pt_int=&pig;*pt_int+=dog;cout Pig now has the
27、value of *pt_int n;general=pt_int;/指向指向int型的指针赋值给型的指针赋值给void型指针型指针 pt_float=&x;y+=5*(*pt_float);cout y now has the value of y n;general=pt_float;/指向指向float型的指针赋值给型的指针赋值给void型指针型指针 const char*name1=John;/指向常量的指针指向常量的指针,所指对象之值不能改变所指对象之值不能改变 char*const name2=John;/常量指针常量指针,指针本身不能被改变指针本身不能被改变 return 0;/
28、*程序运行结果程序运行结果*Pig now has the value of 34y now has the value of 38.3125*程序结束程序结束*/第51页/共92页例:指向常量的指针做形参第52页/共92页#includeconst int N=6;void print(const int*p,int n);void main()int arrayN;for(int i=0;iarrayi;print(array,N);void print(const int*p,int n)cout*p;for(int i=1;in;i+)cout.*(p+i);cout-成员名成员名 (
29、*(*对象指针名对象指针名).).成员名成员名 第54页/共92页对象指针应用举例第55页/共92页#include class Location public:Location(int xx=0,int yy=0)X=xx;Y=yy;void PrintObjectAddress()cout this=this Move(0,0);void Move(int x,int y)this-X=x;(*this).Y=y;int GetX()return X;int GetY()return Y;private:int X,Y;void main()Location A(5,8);Location
30、*ptr;ptr=&A;cout A.X=GetX()endl;cout A.Y=(*ptr).GetY()endl;A.PrintObjectAddress();cout&A =&A endl;cout A.X=GetX()endl;cout A.Y=(*ptr).GetY()endl;/*程序运行结果程序运行结果*A.X=5A.Y=8this=0 x0012FF6C&A =0 x0012FF6CA.X=0A.Y=0*程序结束程序结束*/第56页/共92页动态存储分配函数void*malloc(size);参数size:欲分配的字节数返回值:成功,则返回void型指针。失败,则返回空指针。头
31、文件:和 第57页/共92页动态内存释放函数void free(void*memblock);参数memblock:指针,指向需释放的 内存。返回值:无头文件:和 第58页/共92页动态申请内存操作符 newnew 类型名T(初值列表)功能:在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值。结果值:成功:T类型的指针,指向新分配的内存。失败:0(NULL)第59页/共92页释放内存操作符deletedelete 指针P功能:释放指针P所指向的内存。P必须是new操作的返回值。第60页/共92页动态存储分配举例第61页/共92页/using the new operator
32、#include void main()int*pi=new int;*pi=1001;cout int value=*pi :location=pi n;cout size of pi=sizeof pi;cout :size of*pi=sizeof*pi n;delete pi;double*pd=new double;*pd=10000001.0;cout double value=*pd :location=pd n;cout size of pd=sizeof pd;cout :size of*pd=sizeof*pd n;delete pd;/*程序运行结果程序运行结果*int
33、value=1001:location=0 x00440040size of pi=4:size of*pi=4double value=1e+007:location=0 x00440030size of pd=4:size of*pd=8*程序结束程序结束*/第62页/共92页/using the new operator for arrays#include void main()double*p=new double 3;p0=0.2;/p如同一个数组名如同一个数组名 p1=0.5;p2=0.8;cout p1 is p1 .n;p=p+1;/p毕竟是一个指针毕竟是一个指针 cout
34、Now p0 is p0 and;cout p1 is p1 .n;p=p-1;delete p;/*程序运行结果程序运行结果*p1 is 0.5.Now p0 is 0.5 and p1 is 0.8.*程序结束程序结束*/第63页/共92页/a function returning a pointer to char#include char*buildstr(char c,int n);void main()int times;char ch;cout ch;cout times;char*ps=buildstr(ch,times);cout ps n;delete ps;ps=buil
35、dstr(#,5);cout ps -DONE-ps 0)pstrn=c;return pstr;/*/*程序运行结果程序运行结果*Enter a character:tEnter a character:tEnter an integer:3Enter an integer:3tttttt#-DONE-#-DONE-#*程序结束程序结束*/*/第64页/共92页动态分配数组时应注意:动态分配数组时应注意:用用new创建多维数组:创建多维数组:new 类型名类型名T下标表达式下标表达式1下标表达式下标表达式2;如果内存申请成功,如果内存申请成功,new运算返回一个指向新分配运算返回一个指向新分
36、配内存首地址的指针,是一个内存首地址的指针,是一个T类型的数组,数组元素类型的数组,数组元素的个数为除最左边一维外各位下标表达式的乘积。的个数为除最左边一维外各位下标表达式的乘积。第65页/共92页fpfp+1fp00fp01fp02fp10fp11fp12例如:char(*fp)3;fp=new char23;第66页/共92页#include void get(double*&,int&);void print(double*,int);void main()double*a;int n;get(a,n);print(a,n);delete a;get(a,n);print(a,n);de
37、lete a;void get(double*&a,int&n)cout n;a=new doublen;cout 请输入请输入 n 个实型数个实型数:n;for(int i=0;i ai;void print(double*a,int n)for(int i=0;i n;i+)cout ai ;cout endl;/*程序运行结果程序运行结果*请输入需要数据的个数请输入需要数据的个数:3请输入请输入3个实型数个实型数:2 5 82 5 8请输入需要数据的个数请输入需要数据的个数:5请输入请输入5个实型数个实型数:1.1 2.2 3.3 4.4 5.51.1 2.2 3.3 4.4 5.5*程
38、序结束程序结束*/第67页/共92页#include class Locationpublic:Location()X=0;Y=0;cout 缺省构造函数缺省构造函数.endl;Location(int xx,int yy)X=xx;Y=yy;cout 构造函数构造函数.endl;Location()cout 析构函数析构函数.endl;void Location:Move(int x,int y)X=x;Y=y;private:int X,Y;void main()coutStep One:endl;Location*Ptr=new Location;delete Ptr;coutStep
39、Two:endl;Ptr=new Location(1,2);delete Ptr;Ptr=new Location2;Ptr0.Move(5,10);Ptr1.Move(15,20);coutDeleting.endl;delete Ptr;/*程序运行结果程序运行结果*Step One:缺省构造函数缺省构造函数.析构函数析构函数.Step Two:构造函数构造函数.析构函数析构函数.缺省构造函数缺省构造函数.缺省构造函数缺省构造函数.Deleting.析构函数析构函数.析构函数析构函数.*程序结束程序结束*/第68页/共92页指针型函数当函数的返回值是地址时,该函数就是指针形函数。定义形式
40、 存储类型 数据类型 *函数名()第69页/共92页/a function returning a pointer to char#include char*buildstr(char c,int n);void main()int times;char ch;cout ch;cout times;char*ps=buildstr(ch,times);cout ps n;delete ps;ps=buildstr(#,5);cout ps -DONE-ps 0)pstrn=c;return pstr;/*/*程序运行结果程序运行结果*Enter a character:tEnter a cha
41、racter:tEnter an integer:3Enter an integer:3tttttt#-DONE-#-DONE-#*程序结束程序结束*/*/第70页/共92页指向函数的指针定义形式 存储类型 数据类型 (*函数指针名)();含义:数据指针指向数据存储区,而函数指针指向的是程序代码存储区。第71页/共92页/指向函数的指针指向函数的指针#include double zhang(int lns)return 0.02*lns;double li(int lns)return 0.01*lns+0.0002*lns*lns;void estimate(int lines,doubl
42、e(*pf)(int);void main()int code;cout code;cout 小张估计小张估计:;estimate(code,zhang);cout 小李估计小李估计:;estimate(code,li);void estimate(int lines,double(*pf)(int)cout lines 行代码需花费行代码需花费 (*pf)(lines)小时小时.n;/*程序运行结果程序运行结果*请输入大约需要编写多少行代码请输入大约需要编写多少行代码:350小张估计小张估计:350 行代码需花费行代码需花费 7 小时小时.小李估计小李估计:350 行代码需花费行代码需花费
43、28 小时小时.*程序结束程序结束*/第72页/共92页用字符数组存储和处理字符串字符数组的定义和引用例:static char str8=112,114,111,103,114,97,109,0;static char str8=p,r,o,g,r,a,m,0;static char str8=program;static char str=program;字符串 字符串常量,例如:china 没有字符串变量,用字符数组来存放字符串 字符串以0为结束标志 注意字符数组的初始化形式第73页/共92页例6-19 输出一个字符串第74页/共92页#includeint main()static c
44、har c10=I,a,m,a,b,o,y;int i;for(i=0;i 10;i+)cout ci;cout endl;return 0;运行结果:I am a boy第75页/共92页例6-20 输出一个钻石图形第76页/共92页#includeint main()static char diamond 5=,*,*,*,*,*,*,*,*;int i,j;for(i=0;i 5;i+)for(j=0;j 5;j+)cout diamondij;cout p1;/错误错误 p1=abc;/正确正确 p2=a;cin *p2;/正确正确第78页/共92页字符串的输入/输出方法逐个字符输入输
45、出将整个字符串一次输入或输出例:char c=China;cout str1 str2 str3;运行时输入数据:运行时输入数据:How are you?内存中变量状态如下:内存中变量状态如下:str1:H o w 0 str2:a r e 0 str3:y o u?0内存中变量状态如下:str1:H o w 0 str2:a r e 0 str3:y o u?0第80页/共92页若改为:若改为:static char str13;cin str;运行时输入数据:运行时输入数据:How are you?内存中变量 str 内容如下:str:H o w 0 第81页/共92页整行输入字符串cin
46、.getline(字符数组名St,字符个数N,结束符);功能:一次连续读入多个字符(可以包括空格),直到读满N个,或遇到指定的结束符(缺省为n)。读入的字符串存放于字符数组St中。读取但不存储结束符。读取但不存储结束符。第82页/共92页整行输入字符串cin.get(字符数组名St,字符个数N,结束符);功能:一次连续读入多个字符(可以包括空格),直到读满N个,或遇到指定的结束符(缺省为n)。读入的字符串存放于字符数组St中。既不读取也不存储结束符。既不读取也不存储结束符。第83页/共92页例:整行输入字符串第84页/共92页#include void main(void)char city8
47、0;char state80;int i;cin.getline(city,80,);cin.getline(state,80,n);cout City:city State:state endl;/*程序运行结果程序运行结果*Ha Er Bin,Hei Long JiangCity:Ha Er Bin State:Hei Long Jiang*程序结束程序结束*/第85页/共92页例:求一个字符串的长度。在main函数中输入字符串,并输出其长度。第86页/共92页int length(char*p);void main()int len;char str40;cout Input strin
48、g:;cin.getline(str,40);len=length(str);cout The length of string is len endl;int length(char*p)int n=0;while(*p!=0)n+,p+;return n;/*程序运行结果*Input string:I am a teacher.The length of string is 15*程序结束*/第87页/共92页字符串处理函数strcat(连接),strcpy(复制),strcmp(比较),strlen(求长度),strlwr(转换为小写),strupr(转换为大写)头文件 第88页/共92
49、页#include#include void main()char s80=ABc;char p80=DEFG;cout s=s endl;cout p=p endl;cout s 的长度的长度:strlen(s)endl;strlwr(s);cout strlwr(s)后后,s=s endl;strupr(s);cout strupr(s)后后,s=s endl;cout 调用调用strcmp(s,p)函数返回值函数返回值:strcmp(s,p)endl;strcat(s,p);cout strcat(s)后后,s=s endl;strcpy(s,p);cout strcpy(s)后后,s=
50、s endl;/*程序运行结果程序运行结果*s=ABcp=DEFGs 的长度的长度:3strlwr(s)后后,s=abcstrupr(s)后后,s=ABC调用调用strcmp(s,p)函数返回值函数返回值:-1strcat(s)后后,s=ABCDEFGstrcpy(s)后后,s=DEFG*程序结束程序结束*/第89页/共92页例6-21 string类应用举例第90页/共92页#include#include using namespace std;void trueFalse(int x)cout (x?True:False)endl;void main()string S1=DEF,S2=