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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、二级 C语言机试-182 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)在给定程序中,函数 fun的功能是:把形参 a所指数组中的偶数按原顺序依次存放到 a0、a1、a2、中,把奇数从数组中删除,将偶数的个数通过函数值返回。例如:若 a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除奇数后 a所指数组中的数据为:4、2、6、8,返回值为 4。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C中。不得增行或删行,也不得更改程序的结构。文件 BLANK1.C内

2、容如下:#includestdio.h#define N 9int fun(int a ,int n)int i,j;j=0;for(i=0;in;i+)/*found*/if( (1) =0)/*found*/(2) =ai;j+;/*found*/return (3) ;void main( )int bN=9,1,4,2,3,6,5,8,7,i,n;printf(“/nThe original data: in“);for(i=0;iN;i+)printf(“%4d“,bj);printf(“/n“); n=fun(b,N);printf(“/nThe nunlber of even:

3、%d/n“,n);printf(“/n The even: in“);for(i=0;in;i+)printf(“%4d“,hi);printf(“/n“):(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二、改错题(总题数:1,分数:30.00)1.给定程序 MODI1.C函数 fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。文件 MODI1.C内容如下:#includestdio.hvoid fun(char *s)int i,j;for

4、(i=0,j=0; si!=/0;i+)if(si=0 n=fun(b,N);printf(“/nThe nunlber of even: %d/n“,n);printf(“/n The even: in“);for(i=0;in;i+)printf(“%4d“,hi);printf(“/n“):(分数:30.00)填空项 1:_ (正确答案:ai%2)解析:填空项 1:_ (正确答案:aj)解析:填空项 1:_ (正确答案:i)解析:解析 题目要求将奇数删除,将偶数放入数组相应的元素中。函数 fun使用的算法实质就是将偶数往前移动,放入 a0、a1、a2、中。程序中利用循环对所有的元素进行判

5、断,若是偶数则往a0、a1、a2、中赋值,因此第 1空处应填入 ai%2,判断 ai的奇偶性。循环中利用变量 i作为数组元素下标,依次取出数组元素进行奇偶性的判断,利用变量 j记录要覆盖的数组元素的位置,满足条件的 ai赋值给 aj,所以第 2空处应填入 aj。循环结束后,变量 j的值就是最后偶数的个数,所以将其返回,第 3空处应填入 j。二、改错题(总题数:1,分数:30.00)1.给定程序 MODI1.C函数 fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的

6、结构。文件 MODI1.C内容如下:#includestdio.hvoid fun(char *s)int i,j;for(i=0,j=0; si!=/0;i+)if(si=0& si=9)/*found*/sj=si;/*found*/Sj=“/0“;void main( )char item80;printf(“/nEnter a string:“);gets(item);printf(“/n/nThe string is:/“%s/“/n“,item);fun(item);printf(“/n/nThe string of changing is: /“%s/“/n“,item);(分数

7、:30.00)填空项 1:_ (正确答案:第 1处:将“sj=si;”改为“sj+=si;”。第 2处:将“sj=“/0“;”改为“sj=/0;”。)解析:解析 题目要求将数字字符取出,实际就是将其他字符删除。函数 fun中使用的删除算法是:将数字字符往前移动,依次放入 s0、s1、s2、等数组元素中,最后将字符串结束标记放入适当的位置。变量 i作为每次取出元素的下标,变量 j记录赋值的位置。在 for循环中,每次判断当前要处理的字符 si是否为数字字符,若是则将其赋值到字符数组相应的单元 sj中。循环结束后,给新字符串加上字符串结束标记。对于第 1处错误,j 变量的值始终为 0,没有改变,元

8、素下标出现错误,当 si赋给 sj后,j 应该自加 1,由于题目不允许增加行或删除行,所以只能将下标 j改为“j+”;对于第 2处错误,混淆了字符和字符串的区别,sj是一个字符变量,只能存储一个字符,而“/0”是一个字符串,所以将字符串的结束标记赋值给 sj只能用单引号括起来。归纳总结 处理数组问题时,错误通常出现在数组元素下标的表示上。数组元素的下标从 0开始编号,下标值不能超过数组大小的定义。要修改此类错误,必须弄清楚程序的算法、循环的执行过程、下标的变换规律及程序中数组下标的最小值和最大值是否超过数组的范围,从而发现错误位置。对于字符数组,除了注意数组元素的下标表示外,还要注意字符串的结

9、束标记/0的位置及书写方法。数组处理的常见错误有:(1)数组元素下标出错,尤其是出现两个数组时,如果采用不同的变量来表示两个数组元素的下标,一定要注意下标名要前后统一。(2)字符数组中,单引号和双引号的使用错误。如果是字符应该用单引号括起来,如果是字符串应该用双引号括起来;(3)字符串结束标记/0使用错误。三、编程题(总题数:1,分数:40.00)2.假定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用 C语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:ABCDEFG。注意:部分

10、源程序在文件 PROG1.C中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。文件 PROG1.C内容如下:#includestdio.hvoid fun(char *a)void main( )char s81;printf(“Enter a string: /n“);gets(s);fun(s);printf(“The string after deleted:/n“);pats(s);(分数:40.00)_正确答案:(void fun(char *a)int i,j;for(i=0,j=0;ai!=/0;i+)if(ai!=*)aj=ai

11、;j+;aj=/0;)解析:解析 参考答案中使用的算法是:将不是*号的字符往前移动,依次放入 a0、a1、a2、等数组元素中。程序中利用 for循环,从第一个字符开始依次取出字符进行判定,若不是*号,则往前赋值。变量 i作为每次取出元素的下标,变量 j记录赋值的位置。跳出循环后,将字符串结束标记/0赋值到相应位置,完成删除操作。本题还派生了很多题目:(1)假定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是:删除字符串中前导*号。在编写函数时,不得使用 C语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:A*BC*DEF*G*。

12、参考程序:#includestdio.hvoid fun(char *a)int i,j;i=j=0;while(ai=*)i+;while(ai!=/0)aj=ai;j+;i+;aj=/0;void main( )char s81;printf(“Enter a string: /n“);gets(s);fun(s);printf(“The string after deleted: /n“);puts(s);(2)假定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是:除了字符串前导和尾部的*号之外,将串中的其他*号全部删除。形参 h已指向字符串中第一个字母,形参 p已指向字符

13、串中最后一个字母。在编写函数时,不得使用 C语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:*ABCDEFG*。参考程序:#includestdio.hvoid Nn(char *a,char *h,char *p)int i,j;a=h;for(i=j=0;a+i=p;i+)/*将字符串中从第一个字母开始到最后一个字母之间的*号删除*/if(ai!=*)aj=ai;j+;while(ai!=/0)aj=ai;j+;i+; /*将字符串尾部的*号顺序前移*/aj=/0*; /*给字符串赋上字符串结束标记*/void main( )char

14、s81,*t,*f;printf(“Enter a string: in“);gets(s);t=f=s:while(*t)t+;t-;while(*t=*)t-;while(*f=*)f+;fun(s,f,t);printf(“The string after deleted: in“);puts(s);(3)假定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是:删除字符串中后导*号。在编写函数时,不得使用 C语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:*A*BC*DEF*G。参考程序:#includestdio.hvo

15、id fun(char *a)int i,j;for(i=0;ai!=/0;i+) /*找到最后一个字母的位置记录在变量 j中*/if(ai!=*)j=i;aj+1=/0;/*将字符串结束标志赋值到最后一个字母后面,即可删除后续*号*/void main( )char s81;printf(“Enter a string: /n“);gets(s);fun(s);printf(“The string after deleted: /n“);puts(s);归纳总结 本套试题的程序填空和程序设计题考查的是数据的删除。数据的删除操作可以采用两种方法:第一种方法,可以在原数组基础上,通过数据移动,将需要删除的数据覆盖;第二种方法,引入一个中间数组,将不需要删除的数据放入其中,再将该数组赋值给原数组,从而达到删除某些数据的目的。实际上,数据的删除实质也是数据的移动,即将不需要删除的字符往前移动,依次放入数组对应的单元中。删除字符算法的常用程序如下:void fun(char *s)int i,j;fnr(i=j=0;si!=/0;i+)if() /*需要保留字符的条件*/sj=si;j+;sj=/0;

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