版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验8-4指针与字符数组【知识点回顾】1_C语言有字符串常量,无字符串变量,但往往借助于字符数组实现字符串变量的 功能。上字符串常量:形如" hello。2_用于实现字符串操作的字符数组:一定包含有0'字符。2.常用字符串操作函数:1 字符串复制函数: char * strcpy(char *s1,const char *s2;功能:读取 s2 字符串,写入 si , 并且返回 si参数说明:参数si需要指向某字符数组,且空间足够,以保证数据的顺利写入;参数 s2前的const仅为了说明s2的用途仅用于读取,此操作并不改写参数2的内容2 字 符串拼 接函数 : char *
2、strcat(char *s1,const char *s2;功能:读取s2 字符串,追加写入 si 的末尾,并且返回si参数说明:参数si需要指向某字符数组,且空间足够,以保证数据的顺利写入;参数 s2前的const仅为了说明s2的用途仅用于读取,此操作并不改写参数2的内容3求 字符 串长度 函数: size_t strlen(const char *s;功能:返回字符串s中第一个0'之前(不包括0')的字符数。返回值说明:size_t是无符号整数类型,不妨简单把返回值作为整数处理。4一字符串比较函数:int strcmp(const char *si, const char
3、 *s2;功能:逐字符比较字符串 si和s2,如果相同位置的字符相同,继续比较下一个,如果不 同, 则 返 回 不 同 字 符 的 ASCII 码 差 值参数说明:参数si需要指向某字符数组,且空间足够,以保证数据的顺利写入;参数 s2前的const仅为了说明s2的用途仅用于读取,此操作并不改写参数2的内容【典型例题】3.例题1 ,4.例题2 ,5.例题3 ,【Q&A 6_Q :字符串和字符有什么区别?A:字符数据没有特定的结束标记,仅标识一个字符,字符串长度不定,以 0作 为其结束标识。7_Q : gets(与scanf(在提取字符串数据输入的功能上,有什么区别?A: gets允许提
4、取用户输入带有空格的字符串信息,而scanf则提取用户输入的信息,遇到空格时结束。8_Q :字符数组的长度和字符串长度有何区别?如何得到一个字符串的长度?A:字符数组的长度是在声明数组时确定的,即数组的长度(数组元素个数),而 字符串的长度则取决于字符串结束符0',即从指定位置起,到遇到第一个0'之前 的元素个数为字符串长度。可以使用字符用长度测算函数strlen(计算字符串长度。9_Q :是否每个字符数组都应该包含0'字符空间?A:不是,因为不是每个字符数组都作为字符串使用。【实验内容】1.#includemain(char s80; /用于存放用户输入的字符串cha
5、r *p=s;char ch; /用于存放用户希望删除的字符 int i, j;/*由用户输入一个字符串*/printf("Please input 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''p
6、uts(p ; /*输出处理后的字符串*/2.#include#define N 10int main(int lenth(char a口;int l,i;char *p,a="ningbodaxue "p=a;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
7、(char a口int l=0,i=0;while(ai+!='0'l+;return l;3.编写程序,从键盘输入一行英文语句,统计其中含有的单词数量。#includemain(int chnum=0,word=0,flag=1,linenum=0,sum;char ch,ch1;printf("please enter text to be analyzed:<# to terminate>n"while(ch=getchar(!='#'ch1=ch;if(ch='n' linenum+;flag=1;else
8、 if (ch!=''if (flagword+;flag=0;elseflag=1;chnum+;printf("characters=%d,word=%d,lines=%d,partialline=%dn",chnum+1,word,linenum,ch1='n' ? 0:1;#include#include#define N 10int main(char c;char*p10="zero","one","two","three","four&qu
9、ot;,five","six","seven","eight","ni ne");while(c=getchar(!='n'printf("%s," ,pc-48;printf("n")10. 4. #include11. #include12.13. int lenth(char a口;14. int main(15. 16. int i,j,l,k;17. char temp;18. char a尸"acdertgfWyut"
10、 ; l= lenth(a;19. for (i=0;i20. 21. k=i;22. for (j=i+1;j23. if(aj24. k=j;25. if(k!=i26. temp=ai;ai=ak;ak=temp;27. 28. printf("%s",a;29. printf("n"30.31.32.33. 34. int lenth(char a口35. 36. int l=0,i=0;37. while(ai+!='0'38. l+;39. return l;40. 【课后练习】41. 选择题1下面不正确的字符串赋值或初始化语
11、句是_C_oA. char * str; str =" string ” ;'g' ;B. char str7='s' ,' t ' ,' rC. char str10; str= " string ” ;D. char str1=" string : str220strstrqpyi;2 已知 char b5, *p=b;则正确的赋值语句是_C_oA. b=" abcd” ; B*b=" abcd" ; Cp=" abcd” ; D*p=" abcd” ;3
12、若已有声明char s20= " programming " , *ps=s; 则不能引用字母0勺表达式 的是2。A. ps+2 B. s2 C. ps2 D. ps+=2; *ps4已知:char c8=" beijing " , *s=c; int i;则下面的输出语句中错误的是b。A. printf(7%s, s; B. printf(n",*%sC. for(i=0; i<7; i+ D. for(i=0; i<7; i+printf("c' , ci; printf( "C , si;5已知ch
13、ar s10, *p=s;则在下列语句中,错误的语句是_b_。A. p=s+5; B. s=p+s; C. s2=p4; D. *p=s0;6下面判断正确的是 c_ochinaA. char * a= " chin价于 char *a; *a=B. char str10=“chinas子;char str10; str=china " ;C. char *s = " chir#价于 char *s; s= " china” ;D. char c4= " abc",d4=等Wbcchar c4=d4=" abc” ;7下面能够
14、正确进行字符串赋值操作的是:邑。A. char s5=" ABCDE ;B. char s5='A' ,' B' ,'C' ,' D' ,' E' ;C. char *s ; s= " ABCDE ;D. char *s; scanf(" S' , s;1设pl和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是_。A. c=*p1+*p2; B. p2=cC. p1=p2; D. c=*p1*(*p2;2 设有下面的程序段:char s= &quo
15、t; china ” ; char *p; p=s;则下列叙述正确的是_d。A. s和p完全相同B.数组s中的内容和指针变量p中的内容相等C. s数组长度和p所指向的字符串长度相等D. *ps0W?3以下正确的程序段是_c_。A. char str20; scanf(" s',&str;B. char *p; scanf("s , p;C. char str20; scanf("s , &str2;D. char str20, *p=str; scanf("s' , p2;4以下正确的程序段是 c_。A. char str
16、1=" 12345",str2=" abcdef ” ; strcpy(str1, str2;B. char str10, *st= ” abcde” ; strcat(str, st;C. char str10=" " , *st= ” abcde” ; strcat(str, st;D. char *st1=" 12345”,*st2= " abcde" ; strcat(st1, st2;5以下程序段的运行结果是工。char a= "language"1 *p;p=e;while(*p !
17、= 'u')(口*p-32);Pf)A. LANGUAGE B. language C. LANG D. langUAGE6 若有语句 char s1=" string ” , s28, *s3, *s4=" string剜对库函数 strcpy的正确调用是d oA. strcpy(s1,"string2"B. strcpy(s4,"string1"C strcpy(s3,"string1"D. strcpy(s2,s1;7若有声明语句如下,则不正确的叙述是d。char a="It is
18、mine” ;char *p ="It is mine” ;A. a+1表示的是字符t的地址B. p指向另外的字符用时,字符串的长度不受限制C. p变量中存放的地址值可以改变D. a中只能存放10个字符8已知函数定义如下,函数 func的功能是a。func(char *s1, char *s2while(*s2+ = *s1+;A.用复制B.求用长C.用比较D.用反向9 若有声明 char * language= "FORTRAN ,“BASIC”PASCAL: , “JAVA” ,"C#"则表达式language2 的值是b。A. 一个字符B. 一个地
19、址C. 一个字符串D. 一个不定值10 若有声明 char * lang uage= "FORTRAN , “BASIC” , “PASCAL: , “JAVA” “C#"则以下描述中错误的是 a。A. language+2表示字符串“ PASCAL的首地址B. *language2的值是字母PC. languag睨一个字符型指车+数组,它包含 5个元素,每个元素都是一个指向字符串常量的指针D. language2表示字符串“ PASCAL的首地址11 若有声明 char * language口="FORTRAN , “BASIC” , “PASCAL: , “JAVA”"C#"则表达式 *language1>*language3比较的是 c。A.字符F和字符P B.字符串" BASICS口字符串“ JAVA'C.字符B和字符J D.字符串" FORTRAN和字符串" PASCAL'IS缜率:7.:.8i:5;.0i-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目部内部生产管理制度
- 重庆五一职业技术学院《国际商务(英语)》2024-2025学年第二学期期末试卷
- 景区内部部门管理制度
- 机关内部治安制度
- 机关单位内部决策制度
- 机内部控制制度
- 机械厂存货内部控制制度
- 林业局内部采购管理制度
- 某社团内部管理制度
- 检察院内部考核制度范本
- 2025-2026学年苏科版(新教材)小学信息科技六年级下册教学计划及进度表
- 2026年包头钢铁职业技术学院单招职业技能测试题库完整答案详解
- 2026年内蒙古乌海市单招职业适应性考试题库及答案详解(有一套)
- (2026年)跌倒-坠床护理健康教育课件
- 服装设计基础课程教学计划
- 黑龙江高职单招职业技能测试题库及答案
- 中原出版传媒集团招聘笔试题
- 护士安全注射培训记录课件
- 垃圾填埋场封场处理方案
- 2025年铁路疾控考试试题及答案
- 细菌性肝脓肿诊治急诊专家共识详细解读2026
评论
0/150
提交评论