




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验7 字符数组和字符串实验目的1. 掌握字符串的概念、定义及存储2. 掌握字符串的基本操作3. 熟悉常用的字符串操作函数实验范例问题 输入两个字符串arr1和arr2,判断第1个字符串arr1是否包含第2个字符串arr2。分析设第2个字符串长度小于第1个字符串。从第1个字符开始,从arr1中取出一个字符与arr2的第1个字符比较,若相同,则从arr1中取出与arr2长度相等的子字符串放入中间字符数组中,判断该中间字符串与arr2是否相等,若不同,则从arr1的下一个字符再判断。代码#include<stdio.h>#include<string.h>#define M
2、AX 20void main()char arr1MAX,arr2MAX,tempMAX;int i,j,k,m,n,flag=0;printf("请输入第一组字符串:");gets(arr1);printf("请输入第二组字符串:");gets(arr2);m=strlen(arr1); /*第1个字符串的长度*/n=strlen(arr2); /*第2个字符串的长度*/for(i=0;i<m;i+)tempn='0' /*初始化中间字符数组*/if(arr1i=arr20) /*判断arr1的某个字符与arr2的第1个字符是否相
3、同*/k=i;for(j=0;j<n;j+,k+) /*从arr1中取子串*/tempj=arr1k;if(strcmp(temp,arr2)=0) /*比较两个字符串是否相同*/printf("位置:%d,包含n",i+1);flag=1; /*相同则变量flag置1*/ break; /*退出循环*/ if(flag=0)printf("不包含n");DIY1、调试下列程序(下列各程序中存在一些问题,通过调试发现问题,并加以修正,使其实现预期目标)1.1 以下程序统计字符串str中字符与数字字符的个数。代码 #include<stdio.
4、h> main() charstr81;intn1,n2;gets(str);for ( i = 0; stri ! = 0; i+ )if ( str i= )n1 +;if (stri>=0 && stri <= 9 )n2 +; printf( “#=%d, digit=%dn”, n1, n2 ); 1.2 有n个国家参加运动会,开幕式上,各国的出场顺序以国名在英文字典中的位置先后为序,输出一份各国出场顺序表。代码#include<stdio.h>#include<math.h>#define N 10main() char n
5、ameN30, str30; int i, j; printf("Enter the name:n "); for(i=0; i<N; i+) scanf("%s", &namei ); strupr(namei); /*输入国名,转换为大写*/ for( i = 0; i<N; i+) /*排序*/ for(j= i; j<N; j+ ) if(namei> namej) strcpy(namei,str ); strcpy(namei, namej); strcpy(namej, str); for( i=0; i&l
6、t;N; i+) printf("%sn", namei);2程序填空(请填写适当的符号,使程序实现其功能)2.1 程序的功能是删除字符串s中与变量c相同的字符。main( ) char s80, c; int i, j; scanf("%s", s); getchar(); c=getchar(); for (i=j=0; (1) ; i+) if (si!=c ) (2) ; sj='0' puts(s); 2.2以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,
7、执行程序后输出:123456。请填空。 #include <stdio.h> #include <string.h> main() char s80, d80; int i,j; gets(s); for(i=j=0;si!='0'i+) if(_) dj=si; j+; dj='0' puts(d); 3编程3.1 最多从键盘输入80个字符,遇到回车键就结束,将输入的字符串按奇偶位置拆分,奇数位字符在前偶数位字符在后重新组成新的字符串输出,例如输入: ab12cd3456fg,则经过程序处理后输出: a1c35fb2d46g 。3.2
8、编程序把从键盘输入的英文短文作为一个字符串(长度不超过80),把短文中每个单词的首字母改成大写(原输入可以是大写),若还发现有两个或两个以上连续的空格,把它们删成只有一个空格,输出修改后的字符串。本章测试一、 单选题(10分) 1、以下合法的数组定义是:_。A char a=”string”; B char a6=”string”;C int a5=0,1,2,3,4,5; D int a=0,1,2,3,4,5; 2、若有以下语句, 则下面正确的描述是_。char x="12345" char y='1','2','3',&
9、#39;4','5'A x数组和y数组的长度相同 B x数组的长度大于y数组的长度C x数组的长度小于y数组的长度 D x数组等价于y数组3、若有以下定义:char s=“0187654321”; 则s 所占的内存空间为_。A)1个字节 B)12个字节C)11个字节 D)10个字节 4、下列关于字符串的说法中错误的是 A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符0作为字符串结束标志 B)0作为标志占用存储空间,计入串的实际长度 C)在表示字符串常量的时候不需要人为在其末尾加入0 D)在C语言中,字符串常量隐含处理成以0结尾 5、以下程序的输出结果是
10、:_。 #include “stdio.h” main() char s="abcdef" s3='0' printf("%sn",s); A) abcdef B) abcde C) abcd D) abc 6、有以下程序 #include “stdio.h” main() char a =a,b,c,d, e, f, g,h,0; int i,j; i=sizeof(a); j=strlen(a); printf(“%d,%db”i,j); 程序运行后的输出结果是 A) 9,9 B) 8,9 C) 1,8 D) 9,8 7、以下程序的输
11、出结果是B #include “stdio.h” main() char ch35="AAAA","BBB","CC" printf(""%s"n",ch1); A "AAAA" B "BBB" C "BBBCC" D "CC" 8、当执行下面的程序时,如果输入ABC,则输出结果是_。 #include “stdio.h” #include “string.h” main() char ss10=“1,2,3,4,5
12、”; gets(ss); strcat(ss, “6789”); printf(“%sn”,ss); A ABC6789 B ABC67 C 12345ABC6 D ABC456789 9、有下面程序段 #include "stdio.h" #include "string.h" main() char a320="china","isa","bigcountry!" char k100=0,*p=k; int i; for(i=0;i<3;i+) p=strcat(p,ai)
13、; i=strlen(p); printf("%dn",i); 则程序段的输出结果是 A)18 B)19 C)20 D)2110、有以下程序 #include <string.h> #include <stdio.h> main() char p10= "abc","aabdfg","abbd","dcdbe","cd",t10; int i,j; for(i=0;i<5;i+) for(j=i+1;j<5;j+) if(strcmp(pi
14、,pj)<0) strcpy(t,pi); strcpy(pi,pj); strcpy(pj,t); printf("%dn",strlen(p0); 程序运行后的输出结果是 。 A 6 B 4 C 5 D 3二、填空题(7分)1、已知字符数组str的定义:char str =“ABCDEFGHIJ”;执行函数调用printf(“%.2s n”,str+5 )后的输出结果是_。2、若有定义语句: char s100,d100; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式)while(si) dj= ; j+; dj=
15、0;3、定义char words1020; 使用printf写出语句:输出words中第一维下标i对应的字符串。 _。4、设有如下程序段,程序运行结果是_)。char s120="P4CPU"char s2="DVD+17"CRT+56KMODEM"s210='0'strcat(s1,s2+3);puts(s1);5、下面的程序输出结果是 _。 #include <string.h> main() char language10="FORTRAN","BASIC","
16、PASCAL","JAVA","C" int c; c=strcmp(language1,language3); printf("%dn",c); 6、下面程序的功能是将输入字符串的内容颠倒过来。请在空白处填空。#include<string.h>void main( ) int i, j;char str80; (1) ; gets(str); for ( i=0, j=strlen(str) (2) ;i<j ;i+,j-) k=stri; stri=strj; strj=k; puts(str); 三
17、、程序调试题(10分) 1、下面程序功能是输入一个字符串,并将其中的字符a用字符串”shu”替代后输出。如输入为”123abcaHello”,则输出为”123shubcshuHello”。程序3-1 #include <stdio.h> void main() int i; char line81; scanf(“%s”,&line); for (i=0; linei!=n; i+) if (linei=a) printf(“shu”); else printf(“%s”,linei); 2、下列程序的功能是:将字符串b连接到字符串a。程序3-2#include<st
18、dio.h>void main( ) char a="wel",b="come" int i,n=0; while(!an) n+; for(i=0;bi!='0'i+) an+i=bi; printf("%sn",a);四、程序填空题(30分)1、下面的程序功能是根据输入的学生姓名,查看该生是否是某个班的学生。(假设某个班有30人,姓名已根据字母顺序排列,即输入的班级学生姓名是有序的)程序4-1#include<stdio.h>#include<string.h>#define N 10main() char nameN30, str30; int i,low=0,high=N-1,m; printf("Enter the name:n "); for(i=0; i<N; i+) gets(namei); strupr(namei); /*输入姓名,转换为大写*/ for( i = 0; i<N; i+) /*排序*/ printf("Enter the searched name:n "); gets(str); strupr(str); /*输入要查找的姓名,转换为大写*/ m=(low+hig
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国沾棒式香水瓶市场调查研究报告
- 2025年中国大型钛制储罐市场调查研究报告
- 2025年中国复印材料市场调查研究报告
- 3方购销协议合同协议
- 小龙虾协议合同协议
- 固废合同废合同协议
- 私人租赁机械合同协议
- 短视频拍摄录制合同协议
- 工地吸尘器租赁合同协议
- 离职申请阴阳合同协议
- 夫妻债务转让协议书范本
- 2025年房地产经纪人(业务操作)考前必刷综合题库(800题)附答案
- 桌球助教合同协议
- 电商行业10万字PRD
- 2024-2025学年八年级下学期道德与法治期中模拟试卷(一)(统编版含答案解析)
- GB/T 26354-2025旅游信息咨询服务
- SL631水利水电工程单元工程施工质量验收标准第1部分:土石方工程
- 甘肃省兰州市第十一中学教育集团2023-2024学年八年级下学期期中考试数学试卷
- (高清版)TDT 1075-2023 光伏发电站工程项目用地控制指标
- NB-T 47013.15-2021 承压设备无损检测 第15部分:相控阵超声检测
- 《卖炭翁》课件-优秀实用
评论
0/150
提交评论