CLab8-4new指针与字符数组_第1页
CLab8-4new指针与字符数组_第2页
CLab8-4new指针与字符数组_第3页
CLab8-4new指针与字符数组_第4页
CLab8-4new指针与字符数组_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验8-4 指针与字符数组【知识点回顾】1. C语言有字符串常量,无字符串变量,但往往借助于字符数组实现字符串变量的功能。1 字符串常量:形如”hello”。2 用于实现字符串操作的字符数组:一定包含有0字符。2. 常用字符串操作函数:1 字符串复制函数:char * strcpy(char *s1,const char *s2;功能:读取s2字符串,写入s1,并且返回s1参数说明:参数s1需要指向某字符数组,且空间足够,以保证数据的顺利写入;参数s2前的const仅为了说明s2的用途仅用于读取,此操作并不改写参数2的内容2 字符串拼接函数:char * strcat(char *s1,con

2、st char *s2;功能:读取s2字符串,追加写入s1的末尾,并且返回s1参数说明:参数s1需要指向某字符数组,且空间足够,以保证数据的顺利写入;参数s2前的const仅为了说明s2的用途仅用于读取,此操作并不改写参数2的内容3 求字符串长度函数:size_t strlen(const char *s;功能:返回字符串s中第一个0之前(不包括0)的字符数。返回值说明:size_t是无符号整数类型,不妨简单把返回值作为整数处理。4 字符串比较函数:int strcmp(const char *s1, const char *s2;功能:逐字符比较字符串s1和s2,如果相同位置的字符相同,继续

3、比较下一个,如果不同,则返回不同字符的ASCII码差值。参数说明:参数s1需要指向某字符数组,且空间足够,以保证数据的顺利写入;参数s2前的const仅为了说明s2的用途仅用于读取,此操作并不改写参数2的内容【典型例题】3. 例题1, 4. 例题2, 5. 例题3, 【Q&A】6. Q:字符串和字符有什么区别?A:字符数据没有特定的结束标记,仅标识一个字符,字符串长度不定,以0作为其结束标识。7. Q:gets(与scanf(在提取字符串数据输入的功能上,有什么区别? A:gets允许提取用户输入带有空格的字符串信息,而scanf则提取用户输入的信息,遇到空格时结束。8. Q:字符数组的长度和

4、字符串长度有何区别?如何得到一个字符串的长度? A:字符数组的长度是在声明数组时确定的,即数组的长度(数组元素个数),而字符串的长度则取决于字符串结束符0,即从指定位置起,到遇到第一个0之前的元素个数为字符串长度。可以使用字符串长度测算函数strlen(计算字符串长度。9. Q:是否每个字符数组都应该包含0字符空间? A:不是,因为不是每个字符数组都作为字符串使用。【实验内容】1.#include main(char s80; /用于存放用户输入的字符串char *p=s;char ch; /用于存放用户希望删除的字符int i, j;/*由用户输入一个字符串*/printf(Please i

5、nput a string: ;gets(p; /使用字符串输入函数接受用户输入,送入字符数组s中/*由用户输入一个字符,送入ch变量*/printf(which character will be deleted? ;ch = getchar( ; /使用字符输入函数接受用户字符输入for(i=0, j=0; pi !=0; i+if(pi != chpj+=pi ;pj = 0 ; puts(p ; /*输出处理后的字符串*/2.#include #define N 10int main(int lenth(char a;int l,i;char *p,a=ningbodaxue ;p=a

6、;printf(%sn,p;l=lenth(a-1 ;printf(%dn,l;while(*(p+l-= *(p+l=0 ;l-; p=a;printf(%sn,p;l=lenth(a ;printf(%dn,l;int lenth(char aint l=0,i=0;while(ai+!=0l+;return l;3.编写程序,从键盘输入一行英文语句,统计其中含有的单词数量。#include main(int chnum=0,word=0,flag=1,linenum=0,sum;char ch,ch1;printf(please enter text to be analyzed:n;w

7、hile(ch=getchar(!=#ch1=ch;if(ch=nlinenum+;flag=1;else if (ch!= if (flagword+;flag=0;elseflag=1;chnum+;printf(characters=%d,word=%d,lines=%d,partial line=%dn,chnum+1,word,linenum,ch1=n ? 0:1;#include #include #define N 10int main(char c;char *p10=zero,one,two,three,four,five,six,seven,eight,nine ;whi

8、le(c=getchar(!=nprintf(%s, ,pc-48 ;printf(n;10. 4. #include 11. #include 12. 13. int lenth(char a;14. int main(15. 16. int i,j,l,k;17. char temp;18. char a =acdertgfwyut ; l= lenth(a;19. for (i=0;i 20. 21. k=i;22. for (j=i+1;j 23. if(aj 24. k=j;25. if(k!=i26. temp=ai;ai=ak;ak=temp;27. 28. printf(%s,

9、a;29. printf(n;30. 31. 32. 33. 34. int lenth(char a35. 36. int l=0,i=0;37. while(ai+!=038. l+;39. return l;40. 【课后练习】41. 选择题1 下面不正确的字符串赋值或初始化语句是 c 。A char * str; str = ”string”;B char str7=s, t, r, i, n, g;C char str10; str=”string”;D char str1=”string”, str220; strcpy(str2, str1;2 已知char b5, *p=b;

10、则正确的赋值语句是 c 。A b=”abcd”; B *b=”abcd”; C p=”abcd”; D *p=”abcd”;3 若已有声明char s20=”programming”, *ps=s; 则不能引用字母o的表达式的是 a 。A ps+2 B. s2 C. ps2 D. ps+=2; *ps4 已知: char c8=”beijing”, *s=c; int i; 则下面的输出语句中错误的是 b 。A printf(“%sn”, s; B. printf(“%sn”, *s;C. for(i=0; i7; i+ D. for(i=0; i*language3比较的是 c 。A. 字符F和字符P B

温馨提示

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

评论

0/150

提交评论