【计算机类职业资格】字符串(二)及答案解析.doc

上传人:eastlab115 文档编号:1335370 上传时间:2019-10-17 格式:DOC 页数:11 大小:45.50KB
下载 相关 举报
【计算机类职业资格】字符串(二)及答案解析.doc_第1页
第1页 / 共11页
【计算机类职业资格】字符串(二)及答案解析.doc_第2页
第2页 / 共11页
【计算机类职业资格】字符串(二)及答案解析.doc_第3页
第3页 / 共11页
【计算机类职业资格】字符串(二)及答案解析.doc_第4页
第4页 / 共11页
【计算机类职业资格】字符串(二)及答案解析.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、字符串(二)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空(总题数:4,分数:64.00)1.给定程序中,函数 fun()的功能是求 ss 所指字符数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参 n 所指变量中。ss 所指字符数组中共有 M 个字符串,且串长N。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构。#includestdio.h#includestring.h#define M 5#define N 20int fun(cha

2、r(*ss)N,int *n)int i,k=0,len=N;/*found*/for(i=0;i (1) ;i+)len=strlen(ssi);if(i=0)*n=len;/*found*/if(len (2) *n)*n=len;k=i;/*found*/return (3) ;main()char ssMN=“shanghai“,“guangzhou“,“beijing“,“tianjing“,“chongqing“;int n,k,i;printf(“/nThe original strings are:/n“);for(i=0;iM;i+)puts(ssi);k=fun(ss,pr

3、intf(“/nThe length of shortest string is:%d/n“,n);printf(“/nThe shortest string is:%s/n“,ssk);(分数:16.00)填空项 1:_2.给定程序中,函数 fun()的功能是将 s 所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参 s 所指的字符串为 def35adh3kjsdf7,执行结果为 defadhkjsdf3537。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。

4、不得增行或删行,也不得更改程序的结构。#includestdio.hvoid fun(char *s)int i,j=0,k=0;char t180,t280;for(i=0;si!=/0;i+)if(si=00 (1) ;else t1k+=si;t2j=0;t1k=0;/*found*/for(i=0;ik;i+) (2) ;/*found*/for(i=0;i (3) ;i+)sk+i=t2i;main()char s80=“ba3a54j7sd567sdffs“;printf(“/nThe original string is:%s/n“,s);fun(s);printf(“/nThe

5、 result is:%s/n“,s);(分数:16.00)填空项 1:_3.给定程序中,函数 fun()的功能是在形参 s 所指字符串中的每个数字字符之后插入一个*号。例如,形参 s 所指的字符串为 def35adh3kjsdf7,执行结果为 def3*5*adh3*kjsdf7*。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构。#include stdio.hvoid fun(char *s)int i,j,n;for(i=0;si!=/0;i+)/*found*/if(si

6、0 (1) si=9)n=0;/*found*/while(si+1+n!= (2) )n+;for(j=i+n+1;ji;j-)/*found*/sj+1= (3) ;sj+1=*;i=i+1;main()char s80=“ba3a54cd23a“;printf(“/nThe original string is: %s/n“,s);fun(s);printf(“/nThe result is:%s/n“,s);(分数:16.00)填空项 1:_4.给定程序中,函数 fun()的功能是统计形参 s 所指字符串中数字字符出现的次数,并存放在形参 t 所指的变量中,最后在主函数中输出。例如,

7、形参 s 所指的字符串为 abcdef35adgh3kjsdf7,输出结果为 4。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构。#includestdio.hvoid fun(char *s,int *t)int i,n;n=0;/*found*/for(i=0; (1) !=0;i+)/*found*/if(si=0/*found*/(3) ;main()char s80=“abcdef35adgh3kjsdf7“;int t;printf(“/nThe original s

8、tring is:%s/n“,s);fun(s,printf(“/nThe result is:%d/n“,t);(分数:16.00)填空项 1:_二、程序修改(总题数:2,分数:36.00)5.给定程序 MODI1.C 中函数 fun()的功能是:求出 s 所指字符串中最后一次出现 t 所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为 NULL。例如,当字符串中的内容为”abcdabfabcdx”,t 中的内容为”ab”时,输出结果应是 abcdx。当字符串中的内容为”abcdabfabcdx”,t 中的内容为”abd”时,则程序输出未找到信息 n

9、ot be found!。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。#include stdio.h#include string.hchar *fun(char *s, char *t)char *p, *r, *a;/*found*/a=Null;while (*s)p=s;r=t;while (*r)/*found*/if (r=p)r+;p+;else break;if (*r=/0)a=s;s+;return a;main()char s100, t100, *p;printf(“/nPlease enter s

10、tring S:“); scanf(%s“,s);printf(“/nPlease enter substring t:“); scanf(“%s“,t);p=fun(s,t);if(p) printf(/nThe result is:%sha“,p);else printf(“/nNot found !/a“);(分数:18.00)_6.给定程序 MODI1.C 中函数 fun()的功能是:将 p 所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指由空格隔开的字符串)。例如,若输入”I am a student to take the examination.”,则应输出”I a

11、M A studenT tO takE thE examination.”。请修改程序中的错误之处,使它能得出正确的结果。注意:不要改动 main()函数,不得删行,也不得更改程序的结构。#includectype.h#includestdio.h#includestring.hvoid fun(char *p)int k=0;for(; *p;p+)if(k)/*found*/if(p=)k=0;/*found*/*(p)=toupper(*(p-1)elsek=1;main()char chrstr64;int d;printf(“/nPlease enter an English sen

12、tence within 63 letters:“);gets(chrstr);d=strlen(chrstr);chrstrd=;chrstrd+1=0;printf(“/n/nBefore changing:/n %s“,chrstr);fun(chrstr);printf(“/nAfter changing:/n%s“,chrstr);(分数:18.00)_字符串(二)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空(总题数:4,分数:64.00)1.给定程序中,函数 fun()的功能是求 ss 所指字符数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形

13、参 n 所指变量中。ss 所指字符数组中共有 M 个字符串,且串长N。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构。#includestdio.h#includestring.h#define M 5#define N 20int fun(char(*ss)N,int *n)int i,k=0,len=N;/*found*/for(i=0;i (1) ;i+)len=strlen(ssi);if(i=0)*n=len;/*found*/if(len (2) *n)*n=len;

14、k=i;/*found*/return (3) ;main()char ssMN=“shanghai“,“guangzhou“,“beijing“,“tianjing“,“chongqing“;int n,k,i;printf(“/nThe original strings are:/n“);for(i=0;iM;i+)puts(ssi);k=fun(ss,printf(“/nThe length of shortest string is:%d/n“,n);printf(“/nThe shortest string is:%s/n“,ssk);(分数:16.00)填空项 1:_ (正确答案:

15、1)M (2) (3)k)解析:解析 函数 fun()的功能是求 ss 所指字符数组中长度最短的字符串所在的行下标。求最短字符串所在的下标,一般假设第一个字符串的长度最短 min。如果用 k 记录最短字符串的下标,开始时min=strlen(ss0),k=0;然后逐个比较其他字符串长度,如果字符串 ssi长度比 min 小,则将 min 赋值为这个字符串长度,k=I;如此便可求得最短字符串和最短字符串所在的下标位置。第一空:循环的目的是在 M 个字符串中寻找长度最短的字符串,因此循环变量 i 从 0 变化到 M-1,故第一空处应为“M”。第二空:*n 记录最小字符串的长度,由审题分析可知,字

16、符串 ssi长度比 min 小,则交换最小长度值和下标位置,故第二空处应为“”。第三空:变量 k 记录了最小字符串的下标位置,函数的返回值是最短的字符串所在的行下标,故第三空处应为“k”。考点 字符串处理,排序。2.给定程序中,函数 fun()的功能是将 s 所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参 s 所指的字符串为 def35adh3kjsdf7,执行结果为 defadhkjsdf3537。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或

17、删行,也不得更改程序的结构。#includestdio.hvoid fun(char *s)int i,j=0,k=0;char t180,t280;for(i=0;si!=/0;i+)if(si=00 (1) ;else t1k+=si;t2j=0;t1k=0;/*found*/for(i=0;ik;i+) (2) ;/*found*/for(i=0;i (3) ;i+)sk+i=t2i;main()char s80=“ba3a54j7sd567sdffs“;printf(“/nThe original string is:%s/n“,s);fun(s);printf(“/nThe resu

18、lt is:%s/n“,s);(分数:16.00)填空项 1:_ (正确答案:(1)j+ (2)si=t1i (3)j)解析:解析 函数 fun()的功能是将 s 所指字符串中的所有数字字符移到所有非数字字符之后。在 fun()函数中,先将非数字字符和数字字符分别存储在数组 t1 和 t2 中,然后将数组 t2 和 t1 按照非数字字符在前、数字字符在后的顺序放在字符串 s 中。第一空:如果 si是数字字符,则将 si保存在 t2 数组中,同时变量 j 自增,准备下次保存数字字符,故第一空处应为“j+”。第二空:在语句“for(i=0;ik;i+)”中,i 从 0 开始,说明将非数字字符存储到

19、 s 字符串的前面,非数字字符保存在 t1 数组中,因此第二空处应为“si=t1i”。第三空:循环“for(i=0;i (3) ;i+)”是将数字字符保存在 s 字符串的后面,数字字符的个数为 j,因此这里是将 j 个数字字符保存在 s 字符串的后面,故第三空处应为“j”。考点 字符串处理。3.给定程序中,函数 fun()的功能是在形参 s 所指字符串中的每个数字字符之后插入一个*号。例如,形参 s 所指的字符串为 def35adh3kjsdf7,执行结果为 def3*5*adh3*kjsdf7*。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件

20、夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构。#include stdio.hvoid fun(char *s)int i,j,n;for(i=0;si!=/0;i+)/*found*/if(si=0 (1) si=9)n=0;/*found*/while(si+1+n!= (2) )n+;for(j=i+n+1;ji;j-)/*found*/sj+1= (3) ;sj+1=*;i=i+1;main()char s80=“ba3a54cd23a“;printf(“/nThe original string is: %s/n“,s);fun(s);printf(“/nThe

21、 result is:%s/n“,s);(分数:16.00)填空项 1:_ (正确答案:(1)”是求 si+1之后的字符数量,找到其后的字符数量之后便可以在“for(j=i+n+1;jI;j)”循环中移动后面的字符了,故 while 的条件是没有达到字符串结束位,n+,即第二空处应填“0”或“/0”。第三空:“for(j=i+n+1;jI;j)”循环是将数字字符后面的字符往后移动一位,从最后一个字符开始往后移动,故 sj+1=sj,即第三空处为“si”。考点 字符串处理,if 语句。4.给定程序中,函数 fun()的功能是统计形参 s 所指字符串中数字字符出现的次数,并存放在形参 t 所指的变

22、量中,最后在主函数中输出。例如,形参 s 所指的字符串为 abcdef35adgh3kjsdf7,输出结果为 4。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构。#includestdio.hvoid fun(char *s,int *t)int i,n;n=0;/*found*/for(i=0; (1) !=0;i+)/*found*/if(si=0/*found*/(3) ;main()char s80=“abcdef35adgh3kjsdf7“;int t;printf(“

23、/nThe original string is:%s/n“,s);fun(s,printf(“/nThe result is:%d/n“,t);(分数:16.00)填空项 1:_ (正确答案:(1)si (2)9 (3)*t=n)解析:解析 函数 fun()的功能是统计形参 s 所指字符串中数字字符出现的次数。数字字符的判断是 si=0且 si=9,满足该条件后,计数变量加 1。搜索整个字符串,便得到数字字符出现的次数。第一空:循环终止条件是达到了字符串的尾部,字符串以“/0”(或 NULL)结束,故第一空处应为“si”。第二空:数字字符的判断是 si=0且 si=9,故第二空处应为“9”。

24、第三空:这里是将数字字符出现的次数存放在形参 t 里,n 记录了数字字符的个数,而形参 t 是指针变量,故第三空处应为“*t=n”。考点 if 语句,循环条件。二、程序修改(总题数:2,分数:36.00)5.给定程序 MODI1.C 中函数 fun()的功能是:求出 s 所指字符串中最后一次出现 t 所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为 NULL。例如,当字符串中的内容为”abcdabfabcdx”,t 中的内容为”ab”时,输出结果应是 abcdx。当字符串中的内容为”abcdabfabcdx”,t 中的内容为”abd”时,则程序输出未

25、找到信息 not be found!。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。#include stdio.h#include string.hchar *fun(char *s, char *t)char *p, *r, *a;/*found*/a=Null;while (*s)p=s;r=t;while (*r)/*found*/if (r=p)r+;p+;else break;if (*r=/0)a=s;s+;return a;main()char s100, t100, *p;printf(“/nPlease e

26、nter string S:“); scanf(%s“,s);printf(“/nPlease enter substring t:“); scanf(“%s“,t);p=fun(s,t);if(p) printf(/nThe result is:%sha“,p);else printf(“/nNot found !/a“);(分数:18.00)_正确答案:(1)a=NULL; (2)if(*r=*p)解析:解析 该题中 fun()函数的功能是求得字符串中某子串最后一次出现的地址。从已给定源程序的main()主函数开始入手,通过调用“p=fun(s,t);”语句求得 p 的地址,然后通过判断

27、p,判断串 s 中是否存在子串 t。第一个标识下语句“a=Null;”中的 Null 未定义。NULL 代表空值,但程序中写成了 Null,所以应改成“a=NULL;”。程序的主体是二重循环,其中外循环使指针 s 逐个指向字符串中的字符,直到遇到串结束符退出循环;内循环检查指针 p 与 r 所指字符串是否匹配。因为这里 p、r 是指针,如果使用判断表达式“if(r=p)”,那么比较的是地址,而题目要求比较它们所指的字符,所以应改为“if(*r=*p)”。考点 C 语言标识,变量的使用。6.给定程序 MODI1.C 中函数 fun()的功能是:将 p 所指字符串中每个单词的最后一个字母改成大写(

28、这里的“单词”是指由空格隔开的字符串)。例如,若输入”I am a student to take the examination.”,则应输出”I aM A studenT tO takE thE examination.”。请修改程序中的错误之处,使它能得出正确的结果。注意:不要改动 main()函数,不得删行,也不得更改程序的结构。#includectype.h#includestdio.h#includestring.hvoid fun(char *p)int k=0;for(; *p;p+)if(k)/*found*/if(p=)k=0;/*found*/*(p)=toupper(*

29、p-1)elsek=1;main()char chrstr64;int d;printf(“/nPlease enter an English sentence within 63 letters:“);gets(chrstr);d=strlen(chrstr);chrstrd=;chrstrd+1=0;printf(“/n/nBefore changing:/n %s“,chrstr);fun(chrstr);printf(“/nAfter changing:/n%s“,chrstr);(分数:18.00)_正确答案:(1)if(*p=) (2)*(p-1)=toupper(*(p-1);

30、)解析:解析 本题中函数 fun()的功能是将每个单词的最后一个字母改成大写。解题思路:根据题干中“这里的单词是指由空格隔开的字符串”,可以归纳为主要是对字符串中空格字符的查找。第一个错误标识下的 if 语句应该是判断字符串中的字符是否是空格,根据“for(;*p;p+)”语句中for 循环条件中 p 的定义应该为字符型指针变量,*p 是取 p 所指存取单元的值,所以“if(p=)”应该改为“if(*p=)”。题干中要求是将每个单词的最后一个字母改成大写,所以它的位置应该是挨着空格的前一个字符,应该是指针 p 指向字符的前一个位置,“*p=toupper(*(p-1)”是将改动的值赋给了 p 所指的空格,所以应该改为“*(p-1)=toupper(*(p-1);”且语句末尾应有分号。考点 函数功能。

展开阅读全文
相关资源
猜你喜欢
  • NF L52-270-001-2008 Aerospace series - Cable electrical for digital data transmission - Part 001  technical specification 《航空航天系列 数字数据传输电缆 第001部分 技术规范》.pdf NF L52-270-001-2008 Aerospace series - Cable electrical for digital data transmission - Part 001 technical specification 《航空航天系列 数字数据传输电缆 第001部分 技术规范》.pdf
  • NF L52-270-003-2008 Aerospace series - Cable electrical for digital data transmission - Part 003  single braid - 77 Ohms - Type KG - Product standard 《航空航天系列 数字数据传输用电缆 第003部分 单股编织电.pdf NF L52-270-003-2008 Aerospace series - Cable electrical for digital data transmission - Part 003 single braid - 77 Ohms - Type KG - Product standard 《航空航天系列 数字数据传输用电缆 第003部分 单股编织电.pdf
  • NF L52-270-004-2008 Aerospace series - Cable electrical for digital data transmission - Part 004  double braid - 77 Ohms - Type WJ - Product standard 《航空航天系列 数字数据传输用电缆 第004部分 双股编织电.pdf NF L52-270-004-2008 Aerospace series - Cable electrical for digital data transmission - Part 004 double braid - 77 Ohms - Type WJ - Product standard 《航空航天系列 数字数据传输用电缆 第004部分 双股编织电.pdf
  • NF L52-270-005-2008 Aerospace series - Cable electrical for digital data transmission - Part 005  double braid + metallic layer - 77 Ohms - Type WV - Product standard 《航空航天系列 数字数据传.pdf NF L52-270-005-2008 Aerospace series - Cable electrical for digital data transmission - Part 005 double braid + metallic layer - 77 Ohms - Type WV - Product standard 《航空航天系列 数字数据传.pdf
  • NF L52-270-006-2008 Aerospace series - Cable electrical for digital data transmission - Part 006  single braid - 78 Ohms - Type XM - Product standard 《航空航天系列 数字数据传输用电缆 第006部分 XM型、7.pdf NF L52-270-006-2008 Aerospace series - Cable electrical for digital data transmission - Part 006 single braid - 78 Ohms - Type XM - Product standard 《航空航天系列 数字数据传输用电缆 第006部分 XM型、7.pdf
  • NF L52-400-303-2008 Aerospace series - Fibres and cables optical aircraft use - Test methods - Part 303  bandwidth 《航空航天系列 飞行器用光纤和光缆 试验方法 第303部分 频带宽度》.pdf NF L52-400-303-2008 Aerospace series - Fibres and cables optical aircraft use - Test methods - Part 303 bandwidth 《航空航天系列 飞行器用光纤和光缆 试验方法 第303部分 频带宽度》.pdf
  • NF L52-400-411-2008 Aerospace series - Fibres and cables optical aircraft use - Test methods - Part 411  resistance to fluids 《航空航天系列 飞行器用光纤和光缆 试验方法 第411部分 流动阻力》.pdf NF L52-400-411-2008 Aerospace series - Fibres and cables optical aircraft use - Test methods - Part 411 resistance to fluids 《航空航天系列 飞行器用光纤和光缆 试验方法 第411部分 流动阻力》.pdf
  • NF L52-400-505-2008 Aerospace series - Fibres and cables optical aircraft use - Test methods - Part 505  cable tensile strength 《航空航天系列 航空器用光纤和光缆 试验方法 第505部分 电缆拉伸强度》.pdf NF L52-400-505-2008 Aerospace series - Fibres and cables optical aircraft use - Test methods - Part 505 cable tensile strength 《航空航天系列 航空器用光纤和光缆 试验方法 第505部分 电缆拉伸强度》.pdf
  • NF L52-400-601-2008 Aerospace series - Fibres and cables optical aircraft use - Test methods - Part 601  smoke density 《航空航天系列 航空器用光学纤维和光缆 试验方法 第601部分 烟雾密度》.pdf NF L52-400-601-2008 Aerospace series - Fibres and cables optical aircraft use - Test methods - Part 601 smoke density 《航空航天系列 航空器用光学纤维和光缆 试验方法 第601部分 烟雾密度》.pdf
  • 相关搜索

    当前位置:首页 > 考试资料 > 职业资格

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1