欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1335370       资源大小:45.50KB        全文页数:11页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    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);”且语句末尾应有分号。考点 函数功能。


    注意事项

    本文(【计算机类职业资格】字符串(二)及答案解析.doc)为本站会员(eastlab115)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开