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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(【计算机类职业资格】二级C语言机试-192及答案解析.doc)为本站会员(bonesoil321)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】二级C语言机试-192及答案解析.doc

1、二级 C 语言机试-192 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)在给定程序中,函数 fun 的功能是:将 a 和 b 所指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含 9 个以下的数字字符。例如:主函数中输入字符串:32486 和 12345,在主函数中输出的函数值为:44831。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构。文件 BLANK1.C 内容如下:#includestdio.

2、h#includestring.h#includectype.h#define N 9long ctod(char *s)long d=0;while(*s)if(isdigit(*s)/*found*/d=d*10+*s- (1) ;/*found*/(2) ;return d;long fun(char *a,char *b)/*found*/return (3) ;void main( )char s1N,s2N;doprintf(“Input string s1: “);gets(s1);while(strlen(s1)N);doprintf(“Input string s2: “);

3、gets(s2);while(strlen(s2)N);printf(“The result is: %1d/n“,fun(s1,s2);(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二、改错题(总题数:1,分数:30.00)1.给定程序 MODI1.C 中函数 fun 的功能是:将 s 所指字符串的正序和反序进行连接,形成一个新串放在 t所指的数组中。例如,当 s 所指字符串为“ABCD“时,则 t 所指字符串中的内容应为:ABCDDCBA。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。文件 MODI1.C 内

4、容如下:#includestdio.h#includestring.h/*found*/void fun(char s,char t)int i,d;d=strlen(s);for(i=0;id;i+)ti=si;for(i=0;id;i+)td+i=sd-1-i;/*found*/t2*d-1=/0;void main( )char s100,t100;printf(“/nPlease enter string S: “);scanf(“%s“,s);fun(s,t);printf(“/nThe result is: %s/n“,t);(分数:30.00)填空项 1:_三、编程题(总题数:1

5、分数:40.00)2.请编写一个函数 fun,它的功能是:将 ss 所指字符串中所有下标为奇数位置上的字母转换成大写(若该位置上不是字母,则不转换)。例如:若输入“abe4Efg”,则应输出“aBc4EFg”。注意:部分源程序在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。文件 PROG1.C 内容如下:#includestdio.h#includestring.hvoid fun ( char *ss )void main ( ) char tt81 ;printf(“/nPlease enter an str

6、ing within 80 characters: /n“ ) ;gets( tt ) ;printf( “ /n/nAfter changing, the string/n /“ % s/ , tt ) ;fun( tt ) ;printf( “ /nbecomes/n /“% s/“/n“ , tt) ;(分数:40.00)_二级 C 语言机试-192 答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)在给定程序中,函数 fun 的功能是:将 a 和 b 所指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含 9 个以下

7、的数字字符。例如:主函数中输入字符串:32486 和 12345,在主函数中输出的函数值为:44831。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构。文件 BLANK1.C 内容如下:#includestdio.h#includestring.h#includectype.h#define N 9long ctod(char *s)long d=0;while(*s)if(isdigit(*s)/*found*/d=d*10+*s- (1) ;/*found*/(2) ;ret

8、urn d;long fun(char *a,char *b)/*found*/return (3) ;void main( )char s1N,s2N;doprintf(“Input string s1: “);gets(s1);while(strlen(s1)N);doprintf(“Input string s2: “);gets(s2);while(strlen(s2)N);printf(“The result is: %1d/n“,fun(s1,s2);(分数:30.00)填空项 1:_ (正确答案:0)解析:填空项 1:_ (正确答案:s+)解析:填空项 1:_ (正确答案:cto

9、d(a)+ctod(b))解析:解析 函数 ctod 的功能是将数字字符串转换成面值相等的整数,规定字符串中只包含数字字符,并且个数是 9 个以下。函数 fun 的功能是将 a 和 b 所指的两个字符串转换成面值相同的整数后进行相加,并作为函数值返回。所以在 fun 函数中需要调用 ctod 函数,实现字符串 a 和 b 转换成整数的操作。函数 ctod 使用的算法是:定义了一个长整型变量 d,用来存储转换后的整数,并对其赋初值 0。在 while循环语句中,*s 作为循环条件,意思是取出 s 指向的字符进行判断,若*s 的值不是/0,则进入循环;若*s 的值为/0,则结束循环。循环中每次判断

10、当前字符是否是一个数字字符,若是,则将该数字字符转换成面值相同的整数,通过*s-0来实现,并将该数字累加到变量 d 中,通过 d=d*10+*s-0来实现。例如:字符串“12345”,先取出字符1,d=d=d*10+1-0,d 的值变为了 1,再取出字符2,d=d*10+2-0,d 的值变为了 12,以此类推,最后将字符串转换成了整数 12345。对于第 1 空,将一个数字字符转换成对应的数字,只需将该数字字符的 ASCII 码减去字符0的 ASCII 码,所以第 1 空处应填入0。对于第 2 空,要取出下一个字符,指针 s 必须往后移动指向下一个字符,所以第 2 空处应填入 s+。对于第 3

11、 空,函数 fun 的功能是将 a 和 b 所指的两个字符串转换成面值相同的整数后进行相加,并作为函数值返回。因此需要调用 ctod 函数实现字符串 a 和 b 的转换并进行相加,所以应填入 ctod(a)+ctod(b)。二、改错题(总题数:1,分数:30.00)1.给定程序 MODI1.C 中函数 fun 的功能是:将 s 所指字符串的正序和反序进行连接,形成一个新串放在 t所指的数组中。例如,当 s 所指字符串为“ABCD“时,则 t 所指字符串中的内容应为:ABCDDCBA。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。

12、文件 MODI1.C 内容如下:#includestdio.h#includestring.h/*found*/void fun(char s,char t)int i,d;d=strlen(s);for(i=0;id;i+)ti=si;for(i=0;id;i+)td+i=sd-1-i;/*found*/t2*d-1=/0;void main( )char s100,t100;printf(“/nPlease enter string S: “);scanf(“%s“,s);fun(s,t);printf(“/nThe result is: %s/n“,t);(分数:30.00)填空项 1:

13、 (正确答案:第 1 处:将“void fun(char s,char t)”改为“void fun(chat *s,char *t)”。第 2 处:将“t2*d-1=/0;”改为“t2*d=/0;”。)解析:解析 第 1 处错误是函数定义出错。考生可以在 3 个方面分析错误的位置:第一,函数类型,可以看到程序中函数 fun 没有返回值,所以函数类型定义成 void 没有错误;第二,函数名,从主函数中对函数的调用语句可以看到,函数名称为 fun,所以函数名没有错误;第三,形参,从实参的类型和个数看,形参的个数正确,但是类型有误,两个实参均是字符数组,所以对应的形参应该是字符数组或字符型的指针

14、因此第 1 处错误最简单的修改方法就是在形参 s 和 t 的前面加“*”号,将其定义为字符型指针。第2 处错误是数组下标出错,当字符串正序反序连接后,字符串的长度为 2*d,而数组下标是从 0 开始的,所以/0应该赋值给 t2*d而不是 t2*d-1。三、编程题(总题数:1,分数:40.00)2.请编写一个函数 fun,它的功能是:将 ss 所指字符串中所有下标为奇数位置上的字母转换成大写(若该位置上不是字母,则不转换)。例如:若输入“abe4Efg”,则应输出“aBc4EFg”。注意:部分源程序在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun

15、的花括号中填入你编写的若干语句。文件 PROG1.C 内容如下:#includestdio.h#includestring.hvoid fun ( char *ss )void main ( ) char tt81 ;printf(“/nPlease enter an string within 80 characters: /n“ ) ;gets( tt ) ;printf( “ /n/nAfter changing, the string/n /“ % s/ , tt ) ;fun( tt ) ;printf( “ /nbecomes/n /“% s/“/n“ , tt) ;(分数:40.

16、00)_正确答案:(void fun (char *ss)int i:int n:n=strlen(ss);for(i=l;in;i=i+2)if(ssi=a&ssi=z)ssi=A+ssi-a;)解析:解析 参考答案中函数 fun 使用的算法是:首先利用函数 strlen 求出字符串的长度,for 循环中i 从 1 开始,即从第一个奇数下标开始,每次循环 i 都加 2,确保取出下标为奇数的字符进行转换处理。若 in 为真,则对 ssi进行是否为小写字母的判断,若是小写字母就需要将其转换成大写,转换方法是:ssi=A+ssi-a(利用 ssi-a求出字符 ssi的 ASCII 码与字符 a 的 ASCII 码的差值,再加上字符A的 ASCII 码就求出了小写字母对应的大写字母);或者直接使用 ssi=ssi-32 也可。为了确保每次都取出奇数下标的字符进行处理,所以变量 i 每次要加上 2。在 main 函数中输入原字符串,调用fun 函数并输出转换后的结果。归纳总结 本套试题的程序填空和程序设计题考查的是字符的转换。字符转换处理的关键是:要准确找到转换的规则。常见的字符转换包括大写字母和小写字母的相互转换、数字字符与面值相同的整数之间的相互转换。

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