ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:32.56KB ,
资源ID:10307832      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10307832.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(比较字符串并删除.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

比较字符串并删除.docx

1、比较字符串并删除1. 请补充函数fun,该函数的功能是:把ASCII码为偶数的字符从字符串str中删除,结果仍然保存在字符串str中,字符串str从键盘输入,其长度作为参数传入函数fun。 函数fun,用for一个个查找,函数中参数的长度决定了if判断满足条件:%2=0,就使得下一个字符串的内容复制到当前字符。然后s+,接着在赋值。例如,输入abcdef,输出ace。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序:#include #include #define N 80(1) void fun(cha

2、r s,int n) (2) j=0 (3) sj=0 【1】从下面的main函数里函数调用可得到格式定义。 int i, j; 【2】; for (i=0;in;i+)这里n是数组的长度。即控制了条件。 if(si%2!=0) 不为偶数就放入s数组里。 sj+=si; 【3】; sj=0。给数组的最后一个字符赋值结束标志。删除部分元素可以给sj重新赋值。最后给s加上结束标志。void main() int i=0, strlen=0; char strN;定义一个数组。 system(CLS); printf(nInput a string:n); gets(str);输入的字符串放入str

3、中。 while(stri!=0)从第一个开始到最后。 strlen+;用来计算字符串长度。 i+; fun(str, strlen);从调用结果可知,我们的fun函数是一个没有返回值类型的函数,第一个参数为地址,装str的地址,第二个为长度,定义一个int型的变量。 printf(n* display string *n); puts (str);【考点分析】 本题考查:函数定义,需要确定类型标识符、函数名和形式参数。变量初始化,变量声明后,要进行初始化赋值,我们对变量进行初始化时,必须确定好变量的作用。字符串结束标识0,用来结束字符串,是经常考查的知识点。 【解题思路】 填空1:由main

4、函数调用函数fun的格式可以知道,函数fun没有返回值,第一个参数是字符数组,第二个参数是整型变量。 填空2:变量j声明时,没有初始化,所以在使用j之前要将它初始化为0。 填空3:当把所有ASCII码为偶数的字符都存入字符串s中后,要在最后加上0,表示字符串的结束。2. 请补充main函数,该函数的功能是:从键盘输入一个字符串及一个指定字符,然后把这个字符及其后面的所有字符全部删除。结果仍然保存在原串中。 例如,输入abcdef,指定字符为e,则输出abcd。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程

5、序:#include #include #define N 80void main() int I=0;控制循环。 char strN; char ch; system(CLS); printf(n Input a string:n); gets(str);输入字符串 printf(n Input a charator;n); scanf(%c, &ch);给定删除字符. while(strI!=0)从循环里开始查找. if(strI=ch)如果不相等就继续循环什么不执行相等到赋值。 【1】跳出while循环以后直接在给该字符赋予结束标志。 【2】;使查找往下。 strI=【3】; 给当前字符

6、赋予字符串结束标志。 printf(n* display string *n); puts(str);(1) break; (2) i+或+i或i+=1或i=i+1 (3)0 删除某元素后面的元素可以直接在其后加上结束标志符。【考点分析】 本题考查:break语句,通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行以后的语句。当break语句用于for、while、do-while循环语句时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句一起使用,即满足条件时便跳出循环;字符串结束标识0,上机考试时经常考查。 4. 下

7、列给定程序中,函数fun的功能是:删除字符串s中所有空白字符(包括Tab符、回车符及换行符)。输入字符串时用#结束输入。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #include fun(char *p) int i, t; char c80; for(i=0,t=0;pi;i+)只要不为结束标志往下。 if(!isspace(*(p+i) ct+=pi;当满足条件时因此给c赋值。 ct=0; strcpy(p,c);由于把字符c中的内容给p则说明字符给了c。采用isspace

8、判断是否空格什么换行符。然后如果不是就赋值给新串。最后strcpy到原串。void main()char c,s80; int i=0; printf(Input a string: ); c=getchar();得到第一个字符。 while(c!=#)只要不为结束符号。 si=c;i+;c=getchar();这个字符给字符串往下直接得到字符。 si=0;最后给上结束标志。 fun(s);函数调用。 puts(s); (1)错误:ct=0; 正确:ct=0;字符串结束标识0, 0属于一个字符,其ASCII码为0。【解题思路】 该程序的if条件中应用了isspace函数,该函数的功能是检查ch

9、是否空格、跳格符(制表符)或换行符。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符0(ASCII码为0),这是字符串结束的标志。5. 请编写函数fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是: 2 2 3 4 4 5 6 67 7 8 9 9 10 10 10 删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序

10、: #include #define N 80int fun(int a, int n) int i,j=1; i=1.j=1.a0=a1.不执行.i+=2.a0!=a2.a1=a2=3;i+=3. for(i=1;in;i+) j+=2.这时候不同数字的个数有两个.2和3. if(aj-1!=ai) aj+=ai; /*若该数与前一个数不相同,则要保留*/ return j; /*返回不同数的个数j+是个数。下标从0开始到j*/ void main() FILE *wf; int aN= 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10, i, n=20

11、; printf(The original data :n); for(i=0; in; i+) printf(%3d,ai); n=fun(a,n); printf(nnThe data after deleted :n); for(i=0; in; i+) printf(%3d,ai); printf(nn); wf=fopen(out.dat,w); for(i=0; in; i+) fprintf(wf,%3d,ai); fclose(wf);6. 给定程序的功能是:将未在字符串s中出现而在字符串t中出现的字符,形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,但去掉重复字

12、符。 例如,当s=1 2345,t=24677时,u中的字符为67。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include #include void fun(char *s,char *t,char *u) int I,j,s1,t1,k,u1=0; s1=strlen(s);s1记录s字符串的长度。 t1=strlen(t);t1记录t字符串的长度。 for(I=0;It1;I+) 从t第一个字符串开始逐个字母查。 for(j=0;j=s1) 就是t中出现s未出现的 for(k=0;k=u

13、1)uu1+=【2】; 把当前字符串赋值给u。 填空2:当判断没有重复字符时,填入u字符串。 【3】=0;最后给u字符串赋值结束标志。(1) break (2) ti (3) uu1查找某个字符在某两个字符串中出现否可以固定一个素组元素然后对另外一个素组的元素逐个查找相等跳出不等赋值。main() char s100,t100,u100; printf(nPlease enter string s: ); scanf(%s,s); printf(nPlease enter string t: ); scanf(%s,t); fun(s,t,u); printf(The result is:%s

14、n,u); 【解题思路】 填空1:根据题意可知, 新形成的字符串u中要去掉重复字符,所以当判断出有重复字符时,应立即结束循环。 填空3:当全部判断完成后,给字符串u加入结束符0。3. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。 例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中的内容则应当是A*BC*DEF*G*。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include void fun (

15、char *a)没有返回值因此需要通过地址和*访问数组。 char *p=a; while(*p=*) p+; 使得指针p计算到前面*,并且指向第一个字符。 for(;*p!=0;p+,a+) 只要没结束,当前所指字符赋与数组a。 *a=*p; *a=0; /*在字符串最后加上结束标记符*/ 如果要删除前部分*号可以用另外一个指针指向需要保留的首元素然后在接着赋值到原串即可。#include void fun(char *a) char *p=a; while(*p=*) p+; strcpy(a,p); void main() FILE *wf; char s81,t81=*A*BC*DEF

16、*G*; printf(Enter a string :n); gets(s); fun(s); printf(The string after deleted:n);puts(s); wf=fopen(out.dat,w); fun(t); fprintf(wf,%s,t); fclose(wf); 7. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。 例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中的内容则应当是*ABCDEFG。 注意:部分源程序给出如下。

17、 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include void fun(char *a) 接收到这个字符数组的首地址。 如果前面一个为字符。后面一个为星号就把星号后的字符内容放入前面元素。 int i=0; char *p=a; p指向了a数组第一个元素。 while(*p&*p=*) *p是星号不是结束标志。 ai=*p;i+;p+; a数组赋予原值。i和p都向后移动。 while(*p) 当*p不再是星号并且不是结束标志而是字母时 if(*p!=*) 当所指元素内容不是星号。 ai=*

18、p;i+; 就为原值同时a数组元素继续增加但是p指向字母。 p+; 当元素是星号时。p往后移动指向了字母。 ai=0; 最后赋予结束标志符。(1)定义一个临时指针p,初始指向原串首地址;(2) 利用循环把字符串前导*号拷贝到原串;(3) 继续移动指针,把串中和串尾的非*号字符拷贝到原串;(4)为修改后的字符串赋结尾字符 ackslash 0。void main() char s81; FILE *out; printf(Enter a string :n); gets(s); fun(s); printf(The string after deleted:n); puts(s); out=fo

19、pen(out.dat,w); strcpy(s,*A*BC*DEF*G*); fun(s); fprintf(out,%s,s); fclose(out);8. 请编写一个函数,用来删除字符串中的所有空格。 例如,输入asd af aa z67,则输出为asdafaaz67。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #include voidfun (char *str)前面一个为空格后面一个为字符就把字符赋值给前面元素。接收到字符串首地址。 in

20、t i=0; char *p=str; p指向字符串 while(*p) 只要不为结束标志。 if(*p!= )/*删除空格*/ 如果当前字符不为空格是字符。 stri=*p; i+; 赋给原值。I+往素组后面走一个元素到达空格的话。 p+; stri=0; /* 加上结束符*/ main() char str81; char Msg=Input a string:; int n; FILE *out; printf(Msg); gets(str); puts(str); fun(str); printf(* str: %sn,str); out=fopen(out.dat,w); fun(M

21、sg); fprintf(out,%s,Msg); fclose(out);9. 请编写函数fun,该函数的功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFG12345,其中字符B的ASCII码值为偶数、字符2的ASCII码值为偶数、,都应当删除,其他依次类推。最后t所指的数组中的内容应是ACEG135。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 删除偶数。我们就赋值奇数。试题程序: #include#include#inc

22、lude#includevoid fun(char *s, char t)没有返回值的函数只能通过地址访问s和t。 int i=0; i控制循环。 for(;*s!=0;s+) 只要没有到达结束标志。 if(*s%2=1)满足ascll值为奇数。 ti+=*s; 为奇数的字符依次存入数组t中*/ ti= 0; /*在字符串的末尾加上串结束符*/ void main() FILE *wf; char s100,t100; system(CLS); printf(nPlease enter string S: ); scanf(%s,s); fun(s,t); printf(nThe result

23、 is :%sn,t); wf=fopen(out.dat,w); fun(ABCDEFG12345,t); fprintf(wf,%s,t); fclose(wf);10. 请编写一个函数void fun (char a , charb , int n),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。 例如,输入一个字符串world,然后输入3,则调用该函数后的结果为word。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #incl

24、ude #include #include #define LEN 20void fun (char a , char b , int n) int i,k=0; 找n我们就把不是n的内容放入b。 for(i=0;ai!=0;i+) if(i!=n) /*将不是指定下标的字符存入数组b中*/ bk+=ai; bk=0; /* 在字符串最后加上结束标记*/ void main ( ) FILE *wf; char strlLEN, str2LEN; int n ; system(CLS); printf (Enter the string : n) ; gets (strl) ; printf

25、(Enter the position of the string deleted: ) ; scanf (%d, &n) ; fun (strl, str2, n) ; printf (The new string is : %s n, str2) ; wf=fopen(out.dat,w); fun(world,str2,3); fprintf(wf,%s,str2); fclose(wf);【考点分析】 本题考查:删除字符串中指定字符,对于此类题目,我们一般采用保留非指定字符的操作。 11. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外

26、,将串中其他*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中的内容应当是*ABCDEFG*。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include void fun(char *a,char *h,char *p) 字符串a的地址h指向头字母p指向尾字母 int i=0; char *q=a; while (qh) /*

27、判断前导*的结束*/ ai=*q;q+;i+; while (qp) /*删除除了字符串中间的*/ if(*q!=*) ai=*q;i+; q+; while (*q) ai=*q;i+;q+; ai=0; main () char s81,*t,*f; FILE *out; printf(Entre a string:n); gets(s); t=f=s; while(*t)t+; t-; while(*t=*)t-; while(*f=*)f+; fun(s,f,t); printf(The sting after deleted:n); puts(s); out=fopen(out.dat,w); strcpy(s,*A*BC*DEF*G*); fun(s,s+4,s+13); fprintf(out,%s,s); f

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1