C语言字符数组.ppt

C语言字符数组.ppt

ID:62117945

大小:357.50 KB

页数:36页

时间:2021-04-17

上传者:笑似︶ㄣ無奈
C语言字符数组.ppt_第1页
C语言字符数组.ppt_第2页
C语言字符数组.ppt_第3页
C语言字符数组.ppt_第4页
C语言字符数组.ppt_第5页
资源描述:

《C语言字符数组.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

11第10讲主讲教师:沈蒙波数组(2)——字符数组、字符数组应用 22本讲主要内容2.字符串处理函数本讲小结1.字符数组与字符串重点:字符数组、字符串的定义和使用第6章6.33.字符数组应用举例 1.1字符数组的引入C语言中有字符型常量和字符串常量;如:'a'"a"注意:'a'≠"a"C语言中只有字符型变量,没有字符串变量;例如:chara='a',b="a";C语言中处理和存放字符串必须用字符数组。一维字符数组只能存放一个字符串,二维字符数组可以存放多个字符串。3 字符串常量字符串常量是以双引号括起来的,以空字符''结尾的字符序列。''是C语言规定的“字符串结束标志”。结束符由系统自动加上并不显示。如:"Youarestudents."字符串实际占用的空间字节数比它的长度值多1。字符串的长度:指字符串中字符的个数(西文字符,不包括结束符)。如:"ABCD ""c++程序设计"字符串长度:5字符串长度:11参看“测字符串长度.c”Youarestudents.4 1.2字符数组的定义字符数组的定义形式为:类型说明符数组名[常量表达式];可以是哪种类型?charint例如:charc[10];intc[10];思考:存放30名学生的学号(学号为字符串常量),应如何定义数组?charxh[30][9];5 1.3字符数组初始化(1)1.2字符数组初始化逐个字符赋给数组中各元素。如:charc[10]={'I','','a','m','','h','a','p','p','y'};如果花括号中提供的初值个数大于数组长度,则语法错误;如果初值个数小于数组长度,只将这些字符赋给数组中前面那些元素,其余为‘’。如:charc[10]={'p','r','o','g','r','a','m'};则:c[0]='p';c[1]='r';c[2]='o';c[3]='g';c[4]='r';c[5]='a';c[6]='m';c[7]='';6 字符数组的初始化(2)1.2字符数组初始化(续)如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。如:charc[]={'p','r','o','g','r','a','m'};也可以用字符串常量初始化字符数组。如:charb[]={"Iamhappy"};或:charb[]="Iamhappy";7 说明chara[]={'I','','a','m','','h','a','p','p','y'};a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]a[10]Iamhappya[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]Iamhappychara[]={"Iamhappy"};相当于a[10]相当于a[11]字符数组并不要求它的最后一个字符为''。字符数组与字符串的区别?8 不能使用赋值语句将一个字符串常量或字符数组直接赋值给一个字符数组。1.4字符数组赋值例如:chars[4],str1[10],str2[10]s[0]='c';s[1]='a';s[2]='t';s[3]=''//正确s="cat";//错误s[]="cat";//错误str1=str2;//错误9 1.5字符数组的引用(1)1.3字符数组的引用例1输出一个字符串(Iamaboy)main(){charc[10]={'I','','a','m','','a',’','b','o','y'};inti;for(i=0;i<10;i++)printf("%c",c[i]);printf(" ");}注意空格字符的表示程序编写10 字符数组的引用(2)1.3字符数组的引用例2输出一个钻石图形********程序编写main(){chardiamond[][5]={{'','','*'},{'','*','','*'},{'*','','','','*'},{'','*','','*'},{'','','*'}};inti,j;for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%c",diamond[i][j]);printf(" ");}}总结:输出特定字符串,或特定形状时的方法11 1.6字符数组的输入和输出(1)①逐个字符:用格式符%c输入或输出一个字符。如:charc[10]={"China"};inti;for(i=0;i<10;i++)printf("%c",c[i]);②将字符串一次输入输出:用%s格式符。charc[10];scanf("%s",&c[0]);printf("%s ",c[0]);如:charc[10];scanf("%s",c);printf("%s ",c);12 字符数组的输入和输出(2)③如果数组长度大于字符串实际长度,只输出到遇‘’结束。如:charc[10]={"China"};printf("%s",c};会输出什么结果?只输出“China”5个字符13 字符数组的输入和输出(3)④如果利用scanf函数输入字符串,空格为多个字符串的分隔符。P160如:charstr[13];scanf(“%s”,str);如输入以下12个字符:Howareyou?↙则str数组状态为How如何解决这个问题?⑤如果一个字符数组中包含一个以上‘’,则遇第一个‘’时输出就结束。14 字符数组的输入和输出(4)例:charstr1[5],str2[5],str3[5];scanf(“%s%s%s”,str1,str2,str3);输入:Howareyou?Howareyou?15 用于存放字符串的一维字符数组可以看成为字符串变量,像简单变量一样单独使用(即不使用下标)。例:charname[]="Smith";printf("Heis%s.",name);思考题:chars[10];s[0]='a';s[1]='';s[2]='b';s[3]='c';s[4]=' ';printf("%s",s);字符数组的输出参看“字符数组的输出2.c”输出结果如何?16 同理,存放字符串的二维数组就可视作存放字符串的一维字符数组。例:chars[5][10];相当于定义了5个字符串变量,s[0]、s[1]、s[2]、s[3]、s[4]分别是5个字符串的起始地址。17 0123456789str[0]Chinastr[1]Japanstr[2]America定义一个3行10列的二维字符数组,如何使用scanf和printf函数输入、输出字符串?思考题:参看“二维字符数组的输入、输出.c”返回主菜单18 2字符串处理函数(1)puts(字符数组名或字符串常量)gets(字符数组名)如:charstr[]={“China Beijing”};puts(str);输出结果为:ChinaBeijing如:gets(str)从键盘输入:Computer↙则将“Computer”送给字符数组str19 gets()、puts()一次只能输入输出一个字符串;scanf()、printf()则可以输入输出多个字符串。gets()函数输入的字符串以回车符结束;scanf()函数以空格或回车符结束字符串的输入。注意:gets()、puts()函数和scanf()、printf()一样,都包含在stdio.h头文件中。puts()输出后,自动换行。20 #includevoidmain(){chars1[20],s2[20];scanf("%s",s1);gets(s2);puts(s1);puts(s2);}输入:Itisabook.输出:Itisabook.输出结果?例3:字符数组的输入和输出参看“字符数组的输入和输出3.c”21 例4:字符数组的输入和输出当运行程序时,从键盘输入:aaㄩbbccㄩdd程序的运行结果是:aabbccㄩdd#includemain(){chara1[5],a2[5],a3[5],a4[5];scanf("%s%s",a1,a2);gets(a3);gets(a4);puts(a1);puts(a2);puts(a3);puts(a4);}22 字符串处理函数(2)strcat(字符数组1,字符串2或字符数组2)如:charstr1[30]={“People’sRepublicof”};charstr2[]={“China”};printf(“%s”,strcat(str1,str2));函数功能:连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中。输出结果:People’sRepublicofChina23 字符串处理函数(3)strcpy(字符数组1,字符串2)或:strncpy(字符数组1,字符串2,k)函数功能:字符串拷贝函数,将字符串2拷贝到字符数组1。如:charstr1[10],str2[]={“China”};strcpy(str1,str2);printf(“%s,%s”,str1,str2);输出结果:China,China24 字符串处理函数(4)strcmp(字符串1,字符串2)函数功能:对两个字符串自左到右逐个字符比较(按ASCII码大小比较),直到出现不同的字符或遇‘’为止比较结果:串1==串2函数值为0串1>串2函数值为正整数串1<串2函数值为负整数如:if(str1==str2)printf(“yes”);×if(strcmp(str1,str2)==0)printf(“yes”);√25 字符串处理函数(5)strlen(字符数组)函数功能:测试字符串长度的函数。函数值为字符串中实际长度,不包括‘’在内如:charstr[10]={“China”};printf(“%d”,strlen(str));输出结果:526 字符串处理函数(6)strlwr(字符串)strupr(字符串)函数功能:将大写字母转换为小写字母函数功能:将小写字母转换为大写字母字符串处理函数见P38527 3字符数组与字符串应用(1)例3.1:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。如:Thereisabookonthedesk.输入字符串gets(变量名)统计多少个单词循环循环初值循环条件(c=string[i])!=‘’循环体程序编写28 字符数组与字符串应用(2)例3代码#include"stdio.h"main(){charstring[81];inti,num=0,word=0;charc;gets(string);for(i=0;(c=string[i])!='';i++)if(c==32)word=0;elseif(word==0){word=1;num++;}printf("thereare%dwordsintheline. ",num);}29 字符数组与字符串应用(2)例3.2:有三个字符串,要求找出其中最大者输入字符串gets(变量名)比较字符串字符串比较程序编写30 例4代码main(){charstring[20];charstr[3][20];inti;for(i=0;i<3;i++)gets(str[i]);if(strcmp(str[0],str[1])>0)strcpy(string,str[0]);elsestrcpy(string,str[1]);if(strcmp(str[2],string)>0)strcpy(string,str[2]);printf(" thelargeststringis: %s ",string);}运行结果:CHINA↙HOLLAND↙AMERICA↙thelargeststringis:HOLLAND返回主菜单31 字符数组应用例3.3例6输出右图图案*************************chara[5]={'*','*','*','*','*'};inti,j,k;charspace='';for(i=0;i<5;i++){printf(" ");printf("");for(j=1;j<=i;j++)printf("%c",space);for(k=0;k<5;k++)printf("%c",a[k]);}printf(" ");32 例3.4:不用strcat函数,将两个字符串连接起来。amaIs1tnedutss2tnedutsamaIs1while(s2[j]!='')s1[i++]=s2[j++];s1[i]='';33 3数组应用举例(3)例7程序代码#includevoidmain(){chars1[80],s2[40];inti=0,j=0;printf(" inputstring1:");scanf("%s",s1);printf("inputstring2:");scanf("%s",s2);while(s1[i]!='')i++;while(s2[j]!='')s1[i++]=s2[j++];s1[i]='';printf("Thenewstringis:%s ",s1);}返回主菜单34 3535本讲小结掌握字符数组定义、引用和初始化方式掌握字符串的定义,字符串的存放方式掌握字符数组的输入和输出方法掌握常用字符串函数的使用阅读并理解教材第6章例题完成编程题:P16910,12,13,15 3636谢谢

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭