C程序设计ch07字符数组与串

上传人:c****d 文档编号:243154506 上传时间:2024-09-17 格式:PPT 页数:22 大小:316.50KB
返回 下载 相关 举报
C程序设计ch07字符数组与串_第1页
第1页 / 共22页
C程序设计ch07字符数组与串_第2页
第2页 / 共22页
C程序设计ch07字符数组与串_第3页
第3页 / 共22页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,7.1,字符数组和字符串,字符数组,定义,字符数组的初始化,逐个字符赋值,用字符串常量,字符数组的引用,例 char c10, ch34;,例 char ch5=H,e,l,l,o;,ch0,H,e,l,l,o,逐个字符赋值,ch1,ch2,ch3,ch4,例 char ch5=H,e,l,l,o;,ch0,H,e,l,l,o,逐个字符赋值,ch1,ch2,ch3,ch4,例 char ch5=B,o,y;,ch0,B,o,y,0,0,逐个字符赋值,ch1,ch2,ch3,ch4,例 char ch5=“Boy”;,ch0,B,o,y,0,0,用字符串常量,ch1,ch2,ch3,ch4,例 char ch6=“Hello”;,char ch6=“Hello”;,char ch=“Hello”;,用字符串常量,ch0,H,e,l,l,o,ch1,ch2,ch3,ch4,0,ch5,第七章 字符数组和串,1,例,char diamond5=., .,*,.,*,.,*,*, ., ., . ,*,.,*, .,*,., .,*;,二维字符数组初始化,.,.,*,0,0,.,*,.,*,0,*,.,.,.,*,.,*,.,*,0,.,.,*,0,0,diamond0,diamond1,diamond2,diamond3,diamond4,例,char fruit7=“Apple”,”Orange”,”Grape”,”Pear”,”Peach”;,二维字符数组初始化,fruit0,fruit1,fruit2,fruit3,fruit4,A,p,p,l,e,0,0,O,r,a,n,g,e,0,G,r,a,p,e,0,0,P,e,a,r,0,0,0,P,e,a,c,h,0,0,2,例,输出一个字符串,#include ,main(), char c10=I, ,a,m, ,a, ,b,o,y;,int i;,for(i=0;i10;i+),printf(%c,ci);,printf(n);,I,a,m,a,b,o,y,0,1,2,3,4,5,6,7,8,9,3,字符串,字符串及其结束标志,无字符串变量,用字符数组处理字符串,字符串结束标志,:0,例 “hello”共5个字符,在内存占6个字节 字符串长度5,h e l l o 0,104 101 108 108 111 0,内存存放字符ASCII码,4,字符串的输入输出,逐个字符,I/O,:,%c,整个字符串,I/O,:,%s,搜索集过滤:,%,例 用%c,main(), char str5;,int i;,for(i=0;i5;i+),scanf(“%c”, ,for(i=0;i5;i+),printf(“%c”, stri);,例 用%s,main(), char str5;,scanf(“%s”, str);,printf(“%s”, str);,用字符数组名,不要加&,输入串长度数组维数,遇空格或回车结束,自动加0,用字符数组名,遇0结束,例 用%,main(), char str80;,scanf(“,%n,”, str);,printf(“%s”, str);,5,例 main( ), char a5=H,e,l,l,o;,printf(“%s”,a);,例 main( ), char a =“Hello”;,printf(“%s”,a);,结果:Hello#-=*,h e l l o,0,2,3,1,4,结果:Hello,用“%s”输出时,遇0结束,6,main(),char a=h,e,l,0,l,o,0;,printf(%s,a);,例,输出:hel,h e l 0 l o 0,数组中有多个0时,遇第一个结束,7,main(),int i;,char a5;,scanf(%s,a);,for(i=0;i5;i+),printf(%d,ai);,运行情况:,(1)若输入 hel ,正常,(2)若输入 hell , 正常,(3)若输入 hello , 用%s 输出时,,会出现问题,h e l 0,h e l l 0,h e l l o,输入字符串长度,数组维数,8,例 字符串输入举例,H o w 0,a r e 0,y o u ? 0,#include ,main(), char a15,b5,c5;,scanf(%s%s%s,a,b,c);,printf(a=%snb=%snc=%sn,a,b,c);,scanf(%s,a);,printf(a=%sn,a);,运行情况:,输入:How are you?,输出:a=How,b=are,c=you?,输入:How are you?,输出:a=How,scanf,中%s输入时,遇空格或回车结束,运行情况:,输入:How are you?,9,例 若准备将字符串“This is a string.”,记录下来,,错误的输入语句为:,(A)scanf(“%20s”,s);,(B)for(k=0;k17;k+),sk=getchar();,(C)while(c=getchar()!=n),sk+=c;,把格式数据写到字符数组:,char tmps30;,sprintf(tmps,123012007%03d %sn,1,”XiaoMing”);,10,double,atof(,const,char,*,string,);,int,atoi(,const,char,*,string,);,_int64 _atoi64(,const char,*,string,);,long,atol(,const,char,*,string,);,字符串算术运算函数,p228,包含在头文件,stdlib.h,#include ,#include ,void main( void ), char *s; double x; int i; long l;,s = -2309.12E-15; /* Test of atof */,x = atof( s );,printf( atof test: ASCII string: %stfloat: %en, s, x );,s = 7.8912654773d210; /* Test of atof */,x = atof( s );,printf( atof test: ASCII string: %stfloat: %en, s, x );,s = -9885 pigs; /* Test of atoi */,i = atoi( s );,printf( atoi test: ASCII string: %sttinteger: %dn, s, i );,s = 98854 dollars; /* Test of atol */,l = atol( s );,printf( atol test: ASCII string: %sttlong: %ldn, s, l ); ,7.2,字符串函数,11,常用的字符串处理函数,包含在头文件,string.h,字符串输出函数,puts,格式:,puts,(,字符数组),功能:向显示器输出字符串(输出完,换行),说明:字符数组必须以,0,结束,字符串输入函数,gets,格式:,gets,(,字符数组),功能:从键盘输入一以回车结束的字符串放入字符数组中,,并自动加0,说明:输入串长度应小于字符数组维数,例 #include ,main( ), char string80;,printf(“Input a string:”);,gets(string);,puts(string);,输入:,How are you?,输出:,How are you ?,12,字符串连接函数,strcat,格式:,strcat,(,字符数组1,字符数组2),功能:把字符数组2连到字符数组1后面,返值:返回字符数组1的首地址,说明:,字符数组1必须足够大,连接前,两串均以0结束;连接后,串1的0取消,新串最后加0,字符串拷贝函数,strcpy,格式:,strcpy,(,字符数组1,字符串2),功能:将字符串2,拷贝到字符数组1中去,返值:返回字符数组1的首地址,说明:,字符数组1必须足够大,拷贝时0一同拷贝,不能使用赋值语句为一个字符数组赋值,例 char str120,str220;,str1=“Hello!”; (,),str2=str1; (,),13,例 strcpy,与strcat举例,#include ,#include ,void main(), char destination25;,char blank = , c= C+,turbo = Turbo;,strcpy(destination, turbo);,strcat(destination, blank);,strcat(destination, c);,printf(%sn, destination);,Turbo C+,T,r,b,o,C,+,+,0,1,2,3,4,5,6,7,8,9,u,0,24,.,T,r,b,o,0,1,2,3,4,5,6,7,8,9,u,0,24,.,.,T,r,b,o,0,0,1,2,3,4,5,6,7,8,9,u,24,.,.,14,字符串比较函数,strcmp,格式:,strcmp,(,字符串1,字符串2),功能:比较两个字符串,比较规则:对两串从左向右逐个字符比较(,ASCII,码),,直到遇到不同字符或0为止,返值:返回,int,型整数,,a.,若字符串1 字符串2, 返回正整数,c.,若字符串1= 字符串2, 返回零,说明:字符串比较不能用“=”,必须用,strcmp,字符串长度函数,strlen,格式:,strlen,(,字符数组),功能:计算字符串长度,返值:返回字符串实际长度,不包括0在内,例 对于以下字符串,strlen(s),的值为:,(1)char s10=A,0,B,C,0,D;,(2)char s =“tv0willn”;,(3)char s =“x69082n”;,答案:1 3 1,15,#include ,#include ,main(), char str1 = ”Hello!, str2 = ”How are you?”,str20;,int len1,len2,len3;,len1=strlen(str1); len2=strlen(str2);,if(strcmp(str1, str2)0), strcpy(str,str1); strcat(str,str2); ,else if (strcmp(str1, str2)0), strcpy(str,str2); strcat(str,str1); ,else strcpy(str,str1);,len3=strlen(str);,puts(str);,printf(”Len1=%d,Len2=%d,Len3=%dn”,len1,len2,len3);,例 strcmp与strlen,举例,How are you?Hello!,Len1=6,Len2=12,Len3=18,16,应用举例,例 输入一行字符,统计其中有多少个单词。,对照教材第8章CASE STUDIES 第1题(设定单词之间仅一个空格),本题空格数不作限定。,输入一字符串给 string,i=0 num=0 word=0,当(c=stringi)!=0),c=,空格,真,真,假,假,word=0,word=1,num=num+1,i=i+1,输出:num,word=0,#include ,main(), char string81;,int i,num=0,word=0;,char c;,gets(string);,for(i=0;(,c=stringi,)!=0;i+),if(c= ) word=0;,else if(word=0), word=1; num+; ,printf(There are %d words ,in the linen,num);,17,当前字符=空格,是,否,未出现新单词,使word=0,num,不累加,前一字符为空格(word=0),新单词出现,word=1,num,加1,前一字符为非空格(word=1),未出现新单词,num,不变,否,0,是,1,1,是,1,未,0,1,否,0,是,1,2,否,1,未,1,2,是,1,未,0,2,否,0,是,1,3,是,1,未,0,3,否,0,是,1,4,否,1,未,1,4,否,1,未,1,4,否,1,未,1,4,例 输入:,I am a boy.,当前字符,是否空格,word,原值,新单词开始否,word,新值,num,值,I,a,m,a,b,o,y,.,18,其它串处理函数,包含在头文件,string.h,strncpy,strncmp,strncat,strstr,strchr,strpbrk,19,串列表,p237,例,有三个字符串,找出其中最大者,H o w 0,H e l l o 0,H i g h 0,str0,str1,str2,#include ,#include ,main(), char string20,str320;,int i;,for(i=0;i0),strcpy(string,str0);,else,strcpy(string,str1);,if(strcmp(str2,string)0),strcpy(string,str2);,printf(nThe largest string ,is:n%sn,string);,20,例将字符串BASIC, ADA, Pascal, C, Fortran按从小到大的顺序排序后输出。,21,例 Processing of a Costomer List:,Telephone number of important are recordedas follows:,Full name Telepone number,Joseph Louis Lagrange 869245,Jean Robert Argrand 900823,Carl Freidrich Gauss 806788,- -,- -,Write a program to create a revised alphabetical list with surname(last name) first, followed by a comma and the initials of the first- name,middle-name and telephone-number,Argrand,J.R900823,Gauss,C.F806788,Lagrange,J.R869245,The list is sorted on the last name as required.,22,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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