第10章:C语言等级考试字符串

上传人:方*** 文档编号:253176822 上传时间:2024-11-30 格式:PPT 页数:37 大小:260.50KB
返回 下载 相关 举报
第10章:C语言等级考试字符串_第1页
第1页 / 共37页
第10章:C语言等级考试字符串_第2页
第2页 / 共37页
第10章:C语言等级考试字符串_第3页
第3页 / 共37页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第10章 字符串,p-141,10.1,用一维字符数组存放字符串,1、C语言对字符串的约定,在C语言中,字符串是借助于,字符型一维数组,来存放,,并规定以符,0,作为“字符串结束标志”。由第六章已知:,0是一个转义字符,称为“空值”。它的ASCII代码值为0。,0作为标志占用存储空间,但不计入串的实际长度。,char s100;,2、C语言中表示字符串常量的约定,虽然C语言中,没有字符串数据类型,,但却允许使用“字符,常量”。在表示字符串常量时,不需要人为在其末尾加入0。,例如:字符串常量“Hello!”不必写成“Hello!0”,C编译程序将自动完成这一工作,在末尾添加字符0。,3、C语言中字符串常量给出的是地址值,:,每一个字符串常量都分别占用内存中一串连续的存储空间,这些连续的,存储空间实际上就是字符型一维组。这些数组虽然没有名字,但C编译,系统却以字符串常量的形式给出存放每一字符串的存储空间的首地址。,不同的字符串具有不同的起始地址。也就是说:在C语言中,字符串常,量被隐含处理成一个以0结尾的无名字符型一维数组。,例:,p=“string”;,printf(“%d”,”hello”);,char *p;,4、,字符数组与字符串的区别,:,p-142,?,字符数组是由若干个字符,组成,但末尾不一定有0。,字符串末尾必 须有0。,10.1.1,通过赋初值的方式给一维字符数组赋字符串,p-142,1、char str7=s,t,r,i,n,g,0;,2、char str7=s,t,r,i,n,g;,3、char str6=s,t,r,i,n,g;,4、char str8=“Hello”;,5、char str8=“Hello”;,6、char str=“string”;,7、char str5=“Hello”;,8、int a5=1,3,5,7,9;,main(),char str8;,str8=“Hello”;,10.1.2,在C程序执行过程中给一维字符数组赋字符串,p-143,1.,不可以用赋值语句给字符数组整体赋一串字符,。,本章的开始曾提到:当作字符串变量使用的字符数,组,不能由赋值语句直接赋字符串常量。,char mark10;,mark=C Program;/*,赋值不合法,*/,2.,给数组元素逐个赋字符值,最后人为加入串结束标志,利用我们目前学过的知识,在程序过程中,可以通过逐个给数组元素赋值方式,达到给一维字符数组赋字符串的目的。,main(),char mark10;,mark 0=C;mark 1=;mark 2=P;mark4=r;,mark9=0;,10.2,使指针指向一个字符串,p-144,10.2.1,通过赋初值的方式使指针指向一个字符串,可以在定义指针变量的同时,将存放字符串的存储单元起始地址,赋给指针变量。例如,:,char*ps1=“from one”;,10.2.2,通过赋值运算使指针指向一个字符串,如果已经定义了一个字符型指针变量,可以通过赋值运算将某个,字符串的起始地址赋给它,从而使其指向一个具体的字符串,。,char *ps1;,ps1=“from one;,10.2.3,用字符数组作为字符串和用指针指向一个字符串的区别,若有以下定义,:,char mark=A PROGRAM;,char*pmark=A PROGRAM,;,虽然字符串的内容相同,但它们占有不同的存储空间,mark,pmark,-“,A PROGRAM,”,A,P,R,O,G,R,A,M,0,10.3,字符串的输入和输出,p-145,10.3.1,输入和输出字符串时的必要条件,输入项和输出项都必须是地址。,int x;,scanf(“%d”,printf(“%d”,x);,10.3.2,用格式说明符,%s,进行整串输入和输出,1.在scanf函数中使用格式说明%s可以实现字符串,整体输入。函数调用形式如下:,char str100;,scanf(%s,str);,2.printf,函数中使用格式说明%s可以实现字符串的整体输出,,函数调用形式如下:,printf (%s,str);,例:,main(),char str100=“hello”;,printf(“%s”,str);,此处str_adr是地址值。调用printf函数时,将从这一地址开始,依,次输出存储单元中的字符,直到遇0为止。输出结束后不自动换行。,10.3.3,调用,gets、,puts函数,,,从终端进行字符串的输入和输出,p-146,1.gets,函数的调用形式如下,:gets(str_adr),2.puts,函数的调用形式如下,:puts(str_adr),调用 puts函数时,将从这一地址开始,依次输出存储单元中,的字符,遇到0即结束输出,并自动输出一个换行符。,main(),char str100;,gets(str);,puts(str);,puts(str);,main(),char str100;,gets(str);,printf(“%s”,str);,printf(“%s”,str);,10.4 字符串数组(用二维数组存放字符串),p-146,char ca35=A,BB,CCC;,此定义也可写成:,char ca 5=“A”,“BB”,“CCC”;,char*p3=“abc”,“EFGH”,”1234”;,0,1,2,3,4,0,A,0,1,B,B,0,2,C,C,C,0,10.5 用于字符串处理的函数,p-148,1.,字符串复制(拷贝)函数,strcpy。,调用形式如下,:,strcpy(s1,s2),此函数用来把s2所指字符串(源)的内容复制到s1所,指存储空间(目的)中,函数返回s1的值,即目的串,的首地址。注意:为保证复制的合法性,s1必须指,向一个足够容纳s2串的存储空间。,调用字符串复制(拷贝)函数strcpy,#include“string.h”,main(),char str120=“Hello”,str220=AB;,strcpy(str1,str2);,puts (str1);,编写字符串复制(拷贝)函数strcpy,viod scopy(char *s,char *t),int i=0;,while(si=ti)!=0)i+;,main(),char s20=“Hello”,t20=AB;,scopy(s,t);,puts (s);,2.字符串连接函数strcat,p-148,strcat,函数的调用形式如下:,strcat(s1,s2),该函数将s2所指字符的内容连接到s1所指的字符串后面,,并自动覆盖s1串末尾的0;函数返回s1的地址值。,注意:s1所指字符串应有足够的空间容纳两串合并后的内容。,调用字符串连接函数strcat,#include“string.h”,main(),char str120=“Hello”,str220=AB;,strcat(str1,str2);,puts (str1);,编写字符串连接函数,strcat,:,viod scat(char *s,char *t),int i=0,j=0;,while(si!=0)i+;,while(si=tj)!=0)i+;j+;,main(),char s 20=“Hello”,t20=AB;,scat(s,t);,puts (s);,3、求字符串长度函数strlen,strlen函数的调用形式如下:,strlen(s),此函数计算出以s为起始地址的字符串的长度,并作为函数值返回。这一长度不包括串尾的结,束标志0。,调用求字符串长度函数strlen,#include“string.h”,main(),char str20=“Hello”;int n;,n=strlen(str);;,printf(“n=%d”,n);,编写求字符串长度函数strlen,slen(char*str),int i=0;,while(stri!=0)i+;,return i;,main(),char str20=“Hello”;int n;,n=slen(str);;,printf(“n=%d”,n);,4、字符串比较函数strcmp,strcmp,函数的调用形式如下,:,strcmp(s1,s2),该函数用来比较s1和s2所指定字符串的大小。若串s1串s2,函数值大于0(正数);若串s1=串s2,函数值等于0;若串s1 0)printf(str1str2n);,else if(n 0)printf(str1 0)printf(stn);,else if(n 0)printf(s tn);,else printf(s=tn);,课后习题,p-152,10.1 以下能正确进行字符串赋值、赋初值的语句组是,A)char s5=a,e,i,o,u,;,B)char *s,;,s=good!,;,C)char s5=good!,;,D)char s5,;,s=good!,10.2 以下程序段的输出结果是,A)68 B)0 C)字符D的地址 D)不确定的值,char str=ABCD,*p=str,;,printf(%dn,*(p+4),;,10.3 以下程序段的输出结果是,A)11 B)10 C)9 D)8,printf(%dn,strlen(ATSn 0121),;,习题,10.4,p-152,10.4,当运行以下程序时输入,OPEN T H E DOOR CR,则输出结果是,:,A)oPEN tHE dOOR.B)open the door.,C)OPEN T H E DOOR D)Open The Door.,#include stdio.h,char fun(char*c),if(*c=A)*c-=A a;return*c;,main(),char s81,*p=s;gets(s);,while(*p),*p=fun(p);putchar(*p);p+;,putchar(n);,习题,10.5,p-152,10.5,以下程序段的输出结果是,A)GFEDCBA B)AGADAGAC)AGAAGAG D)GAGGAGA,#include stdio.h,#include string.h,void fun(char*w,int m),char s,*p1=w,*p2=w+m-1,;,while(p1p2),s=*p1+,;,*p1=,*,p2-,;,*p2=s,;,main(),char a=ABCDEFG,;,fun(a,strlen(a),;,puts(a),;,分析10.5,while(p1p2),s=*p1+,;,*p1,=*,p2-,;,*p2=s,;,“A B C D E F G”,习题10.6,p-153,10.6,以下程序段的输出结果是,A)ABCD B)A C)D D)ABCD,BCD B C ABC,CD C B AB,D D A A,main(),char s=ABCD,*p;,for(p=s;ps+4;p+)printf(%sn,p);,10.7,设有如下定义,:char*aa2=abcd,ABCD;,则以下说法中正确的是,:,A)aa数组元素的值分别是abcd和 ABCD,B)aa是指针变量,它指向含有两个数组元素的字符型一维数组。,C)aa数组的两个元素分别存放的是含有四个字符的一维数组的首地址。,D)aa数组的两个元素中各自存放了字符a和A的地址,0,1,2,3,4,0,a,b,c,d,0,1,A,B,C,D,0,aa0,aa1,10.8,以下程序段的输出结果是,A)6385B)69825C)63825D)693825,main(),char ch25=6937,8254,*p2,;,int i,j,s=0,;,for(i=0,;,i2,;,i+)pi=chi,;,for(i=0,;,i0&pij0,p0,p1,10.9,以下程序
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 各类标准


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

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


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