您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > C++-字符数组ppt课件
2字符数组复习字符和字符串3“A”“Boy”字符串•字符串与字符的区别1.形式上不同2.本质上:字符串常量有结束符“A”‘A’A\0字符串结束标志A例1.找错误#includeiostream.hintmain(){charc1,c2,c3;如何处理字符串c3=“yes”;c1=‘0’;c2=‘’;return0;}字符和字符串常量用字符数组•‘A’•‘\n’,‘\t’,响铃报警等•ASCII码表示(\ddd,\xhh)字符65650字符数组字符数组的定义及初始化字符数组的输入输出字符串处理函数字符数组应用举例4char数组名[常量];•定义方式例:chara[10];……a[0]a[1]a[9]•初始化—1.全部赋值(1)逐个数组元素赋初值(2)应用字符串常量赋初值字符数组的定义及初始化charc[6]={‘P’,’a’,’r’,’t’,’y’,’\0’};例:确定数组元素voidmain(){chars1[]=“yes”;chars2[]={‘y’,’e’,’s’};......}Party\0ccharc[6]={“party”};charc[]=“party”;s1yes\080971141161210等价于:charc[]={‘P’,’a’,’r’,’t’,’y’,’\0’};s2yes12110111501211011155字符数组的定义及初始化charc1[10]=“party”;charc2[10]=“beifang”;部分赋值,其它元素为‘\0’。c1Party\0\0\0\0\0c2beifang\0\0•初始化—2.部分赋值下标[0][1][2][3][4][5][6][7][8][9]有效字符的长度(\0结束):分别为5和8数组长度:都是10不再重要6字符数组的输入输出n为4输入good1.用循环逐个输入输出。例1:#includeiostream.hvoidmain(){chars[20];inti,n;cinn;for(i=0;in;i++)cins[i];for(i=0;in;i++)couts[i];}good…s一般不用此方式思考:回车作为结束标志人为加上\01.输入时需要先确定字符的个数,不实用2.字符数组中存放的不是字符串78字符数组的输入输出回车作为结束标志例2:#includestdio.hvoidmain(){chars[10];inti=0;s[i]=getchar();while(s[i]!='\n'){i++;s[i]=getchar();}s[i]=‘\0’;//添加\0for(i=0;s[i]!='\0';i++)putchar(s[i]);}输入goodgood…s下标[0][1][2][3][4]\0或者还可写成:for(i=0;(s[i]=getchar())!='\n';i++);s[i]=‘\0’;for(i=0;s[i]!='\0';i++)putchar(s[i]);还可写成:while((s[i]=getchar())!='\n')i++;s[i]=‘\0’;for(i=0;s[i]!='\0';i++)putchar(s[i]);92.整串输入输出。(设str是定义的字符数组)scanf(“%s”,str);printf(“%s”,str);•输入到以str[0]开始的存储单元中•输出时从str[0]单元开始的一直到\0为止的所有字符用cinstr;coutstr;处理原则是一样的数组名代表数组首地址字符数组的输入输出字符数组的输入输出例3:写结果#includestdio.hvoidmain(){charstr[20];scanf(“%s”,str);//cinstr;printf(“%s”,str);//coutstr;}howhowareyoustr[0]str[19]…how\0用scanf或cin,遇空格或回车就结束读操作。且自动加‘\0’。遇到‘\0’就结束输出。chars[15]=“pascalc”;s[4]=‘\0’;printf(“%s\n”,&s[1]);输出:asc0;10字符数组的输入输出str[0]str[19]gets(数组名);puts(数组名);例4写结果voidmain(){charstr[20];gets(str);puts(str);}howareyouhowareyouPressanykeykeytocontinue#includestdio.h演示3.用gets,puts函数howareyyou\0...输入时遇到回车符结束读操作,自动加'\0'输出时遇到‘\0’结束输出并换行11字符串处理函数加#includestring.h1.strcat(str1,str2)-----将str2接在str1后面。注(1)str1长度应足够大(2)连接后,串1的‘\0’取消,新串最后加‘\0’2.strcpy(str1,str2)-----将str2拷到str1中。注(1)str1要能容纳str2的内容。(2)‘\0’一块拷贝(3)不能使用赋值语句为一个字符数组赋值例charstr1[20],str2[20];str2=Hello;()str1=str2;()strcpy(str2,Hello);strcpy(str1,str2);12133.strcmp(str1,str2)-----比较两个字符串的大小比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或'\0'为止返回值:a.若字符串1==字符串2,返回零b.若字符串1字符串2,返回正整数c.若字符串1字符串2,返回负整数说明:字符串比较不能用“==”,必须用strcmp4.strlen(str)-----求字符串长度。长度:str中的有效字符(不含‘\0’)个数。例:coutstrlen(“China”);55.strlwr(str)-----将str中的大写字母转换成小写字母。6.strupr(str)-----将str中的小写字母转换成大写字母。课本140页字符串处理函数14程序举例[01234]good\0…str1.求字符串的有效长度(即第1个\0前面字符的个数)#includestdio.h#includeiostream.hintmain(){charstr[80];intlen;gets(str);len=0;for(;str[len]!='\0';)len++;coutstr有效长度是:len;return0;}字符数组问题一般通过\0来控制循环for(len=0;str[len]!='\0';len++);程序举例-#includestdio.hintmain(){chara[20],b[20];inti;gets(a);for(i=0;a[i]!='\0';i++)b[i]=a[i];b[i]='\0';puts(b);return0;}yuan\0...字符串a2.字符串拷贝(将a的内容拷贝到b)通过\0来控制循环用长度控制循环?.........yuan\0字符串b15程序举例-3.字符串首尾相连……a:Howab:reyou?连接后:a:Howareyou?…Howareyo\0u?\0Howare\0abyou?l=0当a[l]!=‘\0’l++i=0当b[i]!=‘\0’a[l]=b[i]l++,i++a[l]=‘\0’#includestdio.hvoidmain(){chara[40],b[20];inti=0,l=0;while(a[l]!=‘\0’)l++;while(b[i]!=‘\0’){a[l]=b[i];l++;i++;}a[l]=‘\0’;gets(a);gets(b);puts(a);}1.找到字符串a的尾2.拷贝串b找到串1的尾拷贝串216程序举例-4.字符串的逆序输出sncepu\0变成supecn\0s[0]与s[lengh-1]换s[1]与s[lengh-2]换s[2]与s[lengh-3]换……i:0-lengh/2-1;s[i]与s[lengh-1-i]换#includestdio.h#includestring.hintmain(){chars[30],t;intlengh,i;printf(inputs:);gets(s);lengh=strlen(s);for(i=0;ilengh/2;i++){t=s[i];s[i]=s[lengh-1-i];s[lengh-1-i]=t;}puts(s);return0;}17l=strlen(s)b=0,e=l-1当be时s[b]与s[e]互换#includestring.h#includestdio.hintmain(){chars[40],c;intb,e,l;gets(s);l=strlen(s);b=0;e=l-1;while(be){c=s[b];s[b]=s[e];s[e]=c;puts(s);return0;}b++e--b++;e--;}程序举例-4.字符串的逆序输出sncepu\0变成supecn\0be1819程序举例-5.输入一行数字字符,统计其中0、1、2、……9的个数。a数组存放一行数字字符:如1984052836c数组统计个数:c[0]是0的个数,c[1]是1的个数,……#includestdio.hvoidmain(){intc[10]={0},i;chara[50];gets(a);for(i=0;a[i]!=‘\0’;i++)if(a[i]==‘0’)c[0]++;elseif(a[i]==‘1’)c[1]++;elseif(a[i]==‘2’)c[2]++;……elseif(a[i]==‘8’)c[8]++;elsec[9]++;for(i=0;i10;i++)printf(%d,%d\n,i,c[i]);}字符ASCIIc的单元‘0’480关系‘0’-48‘1’491‘1’-48……‘9’579‘9’-48#includestdio.hvoidmain(){intc[10]={0},i;chara[50];gets(a);for(i=0;a[i]!=‘\0’;i++)c[a[i]-48]++;//或c[a[i]-’0’]++for(i=0;i10;i++)printf(%d,%d\n,i,c[i]);}20例6读程序写运行结果#includeiostream.hvoidmain(){charc[]={45yt~r3};inti,n=0;for(i=0;c[i]!=0;i++)if(c[i]='0'&&c[i]='9')n=n*10+c[i]-'0';coutn;}#includeiostream.hvoidmain(){charc[]={45yt~r3};inti,n=0;for(i=0;c[i]='0'&&c[i]='9';i++)n=n*10+c[i]-'0';coutn;}程序举例-45345二维字符数组charc[3][20]CCTV\0...BTV\0...NTV\0...c[0]c[1]c[2]c[0]是第一个串的名字,代表&c[0][0]c[1]是第二个串的名字,代表&c[1][0]c[2]是第三个串的名字,代表&c[2][0]例:一篇文章,有3行文字,每行有20个字符,输入这篇文章并输出。#includestring.h#includestdio.hintmain(){charc[3][20];inti;for(i=0;i3;i++)gets(c[i]);for(i=0;i3;i++)puts(c[i]);return0;}[0][0][0][1][0][2][0][19][1][0][1][1][1][2][1][19][2][0][2][1][2][2][2][19]c
本文标题:C++-字符数组ppt课件
链接地址:https://www.777doc.com/doc-6785893 .html