第10课:字符串

上传人:痛*** 文档编号:136513884 上传时间:2022-08-16 格式:DOCX 页数:6 大小:24.40KB
收藏 版权申诉 举报 下载
第10课:字符串_第1页
第1页 / 共6页
第10课:字符串_第2页
第2页 / 共6页
第10课:字符串_第3页
第3页 / 共6页
资源描述:

《第10课:字符串》由会员分享,可在线阅读,更多相关《第10课:字符串(6页珍藏版)》请在装配图网上搜索。

1、第10章 字符串字符串的存储完全依赖于字符数组,但字符数组又不等于字符串变量 10.1用一维字符数组存放字符串 1.C语言对字符串的约定 字符串是借助于字符型一维数组来存放的,并规定以字符0作为字符串的结束标志。0作为标志占用存储空间,但不计入串的实际长度。2.C语言中表示字符串常量的约定 随让C语言中没有字符串数据类型,但却允许是哟会更字符串常量在第6章中已经介绍过字符串常量是由双引号括起来的一串字符,在表示字符串常量时,不需要人为在其末尾加入0。3.C语言中字符串常量给出的是地址值每个字符串在内存中占用一串连续的存储空间,这些连续的存储空间实际上就是字符型一维数组。不同的字符串在内存中占有

2、不同的存储空间。也就是说在C语言中,字符串常量被隐含处理成一个以0结尾的无名字符型一维数组。若有以下定义:char *sp ,s10;则以下赋值是不合法的s=”hello”;因为S相当是一维数组的首地址,是一个不可重新赋值的数组名。因此赋值不合法。而以下赋值是合法的。Sp=”hello”;这个语句并不是把字符串的内容放入sp中,而只是把字符串中在内存中所占的首地址赋予了char类型的指针变量sp,使指针变量sp指向该字符串。4字符数组与字符串的区别字符数组的每个元素中可存放一个字符,但它并不限定最后一个字符应该是什么。而字符串则要求最后一个必须是0做为结束标识。在字符数组中可以存放字符串,但不

3、能通过赋值语句将字符串常量或其它字符数组中的字符串直接赋给字符串变量。1011通过赋初值的方式给一维字符数组赋字符串1用给一般数组赋初值的相同方式给一维字符数组赋初值Char str10=s,t, r,i,n,g,! , 0;字符数组str共有10个元素,但str作为字符串,其长度为7.虽然最后一个字符是0但它并不是结束标识,因为系统会自动的给其分配一个结束标识。2在赋值时直接赋字符串常量char str10=“string”;习惯上省略花括号:char str10=”string!”(这种方式会自动给字符串的末尾添加结束标识,但需要注意的是字符串数组的长度一定要比赋值的长度多一个)10.1.

4、2在C程序执行过程中给一维字符数组赋字符串1.不可以用赋值语句给字符数组整体赋一串字符 当作字符串变量使用的字符数组,不能由赋值语句直接赋字符串常量如:char mark10;mark=”C Program”;以上的赋值是不允许的。再如:char str110=”computer” ,str210;Str2=str1;2.给数组元素逐个赋字符值,最后为加入串结束标志 思考一下如何用for语句赋值char str10for(i=0;is2函数值大于0(正数),若串s1=s2函数值等于0,若s1s2函数值小于0(负数).10.6程序举例例1,编写函数slength(char *s),函数返回指针s

5、所指字符串的长度,即相当于库函数strlen的功能。 按要求已知:形参s是指向字符串首地址的指针,计算字符串的长度,只需要逐个统计串中的字符个数,直到遇到串结束标志0为止。includeslength(char *s)int n=0;while(*(s+n)!=0) n+;return(n); main()char str=”ABCDEF”;int len1,len2;len1=length(“ ”);len2=length(str);printf(“len1=%d,len2=%dn”,len1,len2);例2,编写函数scopy(char *s,char *t),将指针t所指的字符串复制到

6、指针s所指的存储空间中。 #include void scopy(char *s,char *t)int i;i=0;while(si=ti)!=0)i+;main()char str120,str2=”ABCDEFGH”;scopy(str1,str2);puts(str1);课后习题第十章 字符串一.选择题 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

7、)不能确定的值char str =ABCD,*p=str;printf (%dn,*(p+4);10.3 以下程序段的输出结果是A) 11 B) 10 C) 9 D) 8printf (%dn,strlen(ATSn0121) ; 10.4 当运行以下程序时输入OPEN THE DOOR(此处代表Enter 键),则输出的结果是A) opEN tHE dOOR B) open the doorC) OPEN THE DOOR D) Open The Door#include stdio.hchar fun ( char *c ) if ( *c = A) *c - =A-a; return *

8、c; main( ) char s81 , *p=s; gets(s); while(*p) *p=fun(p); putchar(*p); p+ putchar ( “ n “ ); 10.5 以下程序的输出结果是A) GFEDCBA B) AGADAGA C) AGAAGAG D) GAGGAGA #include stdio.h#include string.hvoid fun ( char *w, int m ) char s, *p1 , *p2 ; p1=w; p2=w+m-1;while(p1p2) s=*p1+; *p1=*p2- *p2=s; main( ) char a =

9、ABCDEFG; fun ( a , strlen(a) ); puts(a); 10.6 以下程序的输出结果是A) ABCD B) A C) D D) ABCD BCD B C ABC CD C B AB D D A Amain ( ) char s =ABCD, *p;for( p=s; ps+4; p+ ) printf(%sn,p); 10.7 设有如下定义:char *aa2 = abcd , ABCD ;则以下说法正确的是A) aa数组元素的值分别是abcd 和 ABCDB) aa是指针变量,它指向含有两个数组元素的字符型一维数组C) aa数组的两个元素分别存放的是含有四个字符的一

10、维数组的首地址 D) aa数组的两个元素中各自存放了字符 a 和 A 的首地址 10.8 以下程序的输出结果是A) 6385 B) 69825 C) 63825 D) 693825main( ) char ch25 = 6937,8254 , *p2; int i , j , s = 0 ;for ( i=0 ; i 2 ; i+ ) pi=chi;for ( i=0 ; i0 &pij=9;j+=2)s=10*s+pij-0;printf(%dn,s); 10.9 以下程序的输出结果是A) ABCDEFGHIJKL B) ABCD C) ABCDEFGHIJKLMNOP D) AEIMmai

11、n( ) char *alpha6= ABCD,EFGH,IJKL,MNOP,QRST,UVWX;char *P;int i;p=alpha;for( i=0; i&b0) putchar(*chp);putchar(n); 10.12 以下程序的输出结果是_XYZA_。 #include stdio.h void fun(char *a1, char *a2, int n) int k; for (k=0;k=0;i-,I-) printf(%c,*pi); printf(n); 10.4 当运行以下程序时从键盘输入字符串qwerty和abcd,则程序的输出结果是_10_。 #include

12、 stdio.h #include string.h strle (char a , char b ) int num=0,n=0;while (*(a+num)!=0) num+;while (bn) *(a+num)=bn; num+;n+ return(num); main( ) char str181,str281,*p1=str1,*p2=str2; gets(p1); gets(p2); printf(%dn,strle(p1,p2); 10.15 以下程序的输出结果是_Itis_。 #include string.h #include ctype.hvoid fun(char s

13、tr ) int i , j ;for(i=0,j=0; stri; i+)if ( isalpha (stri) ) strj+=stri; stri=0; main( ) char ss80=It is!; fun(ss);printf(%sn,ss); 10.16 以下fun函数的功能是将一个字符串的内容颠倒过来,请填空。 #include string.h void fun(char str ) int i , j , k ; for ( i=0 , j=_strlen(str)-1_ ; i j ; i+ , _j-_ ) k=stri; stri=strj; strj=k; 10.17 以下程序的输出结果是_3_。printf(%dn,strlen(sn0160end) ); 10.18 以下程序的输出结果是_goodgood!_。 char s20=goodgood!,*sp=s; sp=sp+2; sp=to; puts(s);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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