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

    【计算机类职业资格】初级程序员下午试题-48及答案解析.doc

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

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

    【计算机类职业资格】初级程序员下午试题-48及答案解析.doc

    1、初级程序员下午试题-48 及答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【说明】计算三角函数 sinx给定精度 e和 n,若第 k步后的结果为 sin1,第 k+1步后的结果为 sin2,若|sin1sin2|e,则返回sin1的值。若没有达到精度 e,但是步骤达到 n步,则返回第 n步后的值。其流程图如下所示:(分数:15.00)_二、试题二(总题数:1,分数:15.00)2.【程序 2.1说明】求所有满足如下条件的三位数:它除以 11得的商等于它各位数字的平方和。例如 550,除以 11商为50,50=5 2+52+02。【程序 2.1】

    2、void main()int i, j,n,s;for(i=100;i=999;i+)n=i;j=n/11;s=0;while( (1) )(2) n/=10;if( (3) )printf(“%d/t“,i);【程序 2.2说明】本程序输入一字符串,将其中的大写字母改变成小写字母。【程序 2.2】void main()int i=0;char s120;scanf(“%s“,s);while( (4) )if( (5) )si=si- A+a;i+;printf(“%s/n“,s);(分数:15.00)_三、试题三(总题数:1,分数:15.00)3.【说明】设有 3n+2个球互连,将自然数

    3、13n+2 分别为这些球编号,使相连的两球编号之差的绝对值正好是数列1,2,3n+1 中的各数,如下图所示:(分数:15.00)_四、试题四(总题数:1,分数:15.00)4.【说明】计算 n的合数。一个整数 n可以有多种划分,使其划分的一列整数之和为 n。例如,整数 5的划分为:54 13 23 1 12 2 12 1 1 11 1 1 1 1共有 7种划分。这种划分的程序如下所示。【程序】#include stdio.hint n1000,m,k; void output sum()int j;for(j=0;nj!=0;j+)printf(“%d/t“,nj);printf(“/n“);

    4、void sum(int i)if(m-nini)m=m-ni;(1) i+;ni+1=0;else(2) m-=ni;i+;if(m!=ni)sum(i);elseoutput_sum();if(ni1)ni-;(3) elsewhile(ni=1)(4) if(i!=0)(5) sum(i);void main()int i;scanf(“%d“,m=k=n0;for(i=1;i=k;i+)ni=0;while(n0!=1)n0-;i=0;sum(0);m=k;(分数:15.00)_五、试题五(总题数:1,分数:15.00)5.【说明】本程序用于评选优秀教师和学生。当输入一系列教师或学生的

    5、记录后,将优秀学生及教师的姓名列出来。其类结构如下图所示:(分数:15.00)_六、试题六(总题数:1,分数:15.00)6.【说明】本程序输出 10000之内的所有完全数。完全数是指等于其所有因子和(包括 1,但不包括这个数本身)的数。例如:6=123,6=1+2+3,则 6是一个完全数。【程序】public class PerfectNumPublic static void main(String args)int count=1;for(int i=1; i10000; i+)int y=0;for(int j=1; ji; j+)if( (1) )y= (2) if( (3) )Sy

    6、stem.out.print( (4) +String.valueOf(/t);(5) If(count%3=0)System.out.printin();(分数:15.00)_初级程序员下午试题-48 答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【说明】计算三角函数 sinx给定精度 e和 n,若第 k步后的结果为 sin1,第 k+1步后的结果为 sin2,若|sin1sin2|e,则返回sin1的值。若没有达到精度 e,但是步骤达到 n步,则返回第 n步后的值。其流程图如下所示:(分数:15.00)_正确答案:(1)i=n for(i=

    7、100;i=999;i+)n=i;j=n/11;s=0;while( (1) )(2) n/=10;if( (3) )printf(“%d/t“,i);【程序 2.2说明】本程序输入一字符串,将其中的大写字母改变成小写字母。【程序 2.2】void main()int i=0;char s120;scanf(“%s“,s);while( (4) )if( (5) )si=si- A+a;i+;printf(“%s/n“,s);(分数:15.00)_正确答案:(1)n (2)s=s+(n%10)*(n%10); (3)j=s(4)si (5)si=A (3)a1n+1=k;(4)m=n+1; (

    8、5)a0m-2*i-1=k;)解析:分析本题考查 C语言中具体算法的实现。题目中要求将 3n+2个球互连,并用自然数 13n+2 分别为这些球编号,使相连的两球编号之差的绝对值正好是数列 1,2,3n+1 中的各数。题目中还给出了具体的填自然数的思想。我们要完成的工作就是用 C语言描述出题目中给出的思想。首先我们需要对其思想有个正确的认识,这是关键所在。下面,我们来分析代码。结合整段程序代码,我们可以分析出,二维数组 a用来存放我们要填的数字,第一维表示行数,总行数应该是 3。第二维表示列数,总列数应该是 n+2。其中的第(1)空所在的位置是表示一个条件判断语句的条件,在这之前已经对第 1列的

    9、中间 1个进行了填数,那么根据“先自左向右,第 1列中间 1个填数,然后第 2列上、下 2个填数,每次 2列”的思想,再结合下面的填数程序语句,我们可以知道,此语句就是用来实现在先第 1列中间 1个填数后,对第 2列上、下 2个进行填数,每次 2列这个思想的。因此,第(2)空的答案就出来了,是对第 2列下(第 3行)进行填数,因此,答案为“a22*i+1=k”。因为条件判断语句下面是进行了 2次填数,因此可以判断 n应该是个奇数,因为若 n为偶数,最后1次只排第 1列中间一个数,就不需要这个操作了。因此,第(1)空的作用应该是用来判断 n是奇数,所以此空答案为 (n%2=1)。第(3)空所在的

    10、位置在条件 n%2=1成立的情况下才执行,条件 n%2=1成立表明 n 是奇数,根据若 n是奇数,再右第 2列中间填数的思想,我们可以知道,此处应该是对右第 2列中间填数,因此,答案为 a1n+1=k。第(4)空所在的位置是条件 n%2=1不成立的情况下才执行,在上面我们知道 n%2=1 是用来判断 n是否为奇数,如果 n不是奇数,我们不做什么,但为了方便后面的操作,应该将 n+1的值保存起来,因此,此空的答案为 m=n+1。根据思想:若 n是奇数,再右第 2列中间填数。然后依次右第 1列上、下 2个填数,再右第 2列中间 1个填数,直到左第 2列为止。在前面程序中,我们已经完成了前面部分,第

    11、(5)空所在的循环体就是用来完成后面部分的,在循环体中已经实现了对中、下进行填数,缺一个对上进行填数的代码,因此,第(5)空要完成的任务就是对上行进行填数,因此,答案为 a0m-2*i-1=k。四、试题四(总题数:1,分数:15.00)4.【说明】计算 n的合数。一个整数 n可以有多种划分,使其划分的一列整数之和为 n。例如,整数 5的划分为:54 13 23 1 12 2 12 1 1 11 1 1 1 1共有 7种划分。这种划分的程序如下所示。【程序】#include stdio.hint n1000,m,k; void output sum()int j;for(j=0;nj!=0;j+

    12、)printf(“%d/t“,nj);printf(“/n“);void sum(int i)if(m-nini)m=m-ni;(1) i+;ni+1=0;else(2) m-=ni;i+;if(m!=ni)sum(i);elseoutput_sum();if(ni1)ni-;(3) elsewhile(ni=1)(4) if(i!=0)(5) sum(i);void main()int i;scanf(“%d“,m=k=n0;for(i=1;i=k;i+)ni=0;while(n0!=1)n0-;i=0;sum(0);m=k;(分数:15.00)_正确答案:(1)ni+1=m; (2)ni+

    13、1=ni; (3)sum(i);(4) m+=ni; (5)ni-;)解析:分析本题考查 C语言中计算 n合数方法的实现。题目要求计算 n的合数,我们首先来了解一下什么是 n的合数。在正整数 n的所有不同的划分中,将最大加数 n1不大于 m的划分个数记作 q(n,m)。可以建立 q(n,m)的如下递推关系。(1)q(n,1)=1,n1当最大数 n1不大于 1时,任何正整数只有一种划分形式,就是全 1。(2)q(n,m)=q(n,n),mn最大加数 n1实际上不能大于 n。因此,q(1,m)=1。(3)q(n,n)=1+q(n,n-1)正整数 n的划分由 n1=n的划分和 n1n-1 的划分组成

    14、。(4)q(n,m)=q(n,m-1)+q(n-m,m),nm1正整数 n的最大加数 n1不大于 m的划分由 n1=m的划分和 n1m-1 的划分组成。要想求出所有解,只有递归到最底层即全为 1为止。知道了上述特性,下面我们来看代码。在代码中首先声明一个数组和两个全局变量 k,m。结合程序可以看出,其中数组 ni中存放的是当前划分的最大加数,而 m中存放的是当前被划分的数。程序代码中有三个函数,一个是主函数、一个 output_sum()函数和一个 sum()函数,函数 output_sum()的功能很简单,就是输出一次划分结果,在 sum()函数中被调用。经过分析不难发现,函数 sum()的

    15、作用是实现整数的划分。在函数体中,首先是一个条件判断语句,其作用是判断当前被划分的数 m是否小于当前最大加数的两倍,如果条件成立,说明数被划分为两个数后,其最大加数大于另一个数,而另一个数应该存放在数组中。此时执行语句 m=m-ni来求出另一个数,接下来应该是保存这个数到数组中的下个位置,第(1)空就用来完成这个任务,因此,答案为 ni+1=m。第(2)空所在的位置是条件不成立的情况下运行的语句,条件不成立,说明数被划分为两个数后,其最大加数小于另一个数,数可以有更大的最大加数,因此,将当前的最大加数保存到数组中的下个位置,此空答案为 ni+1=ni。第(3)空也在一个条件选择语句下面,此条件

    16、语句用于判断当前最大加数是否大于 1,如果大于 1,则需要接着划分,因此要调用函数 sum(),其参数是 i,所以此空答案为 sum(i)。第(4)空是条件不成立即当前最大加数为 1的情况下执行的语句,当最大加数为 1时,说明递归到了最底层,此时,递归应该往回走了,这需要还原当前最大划分数 m(为这个数的其他划分做准备),因此,这个空的答案为 m+=ni。第(5)空是在条件 i!=0为真的情况下执行的语句,如果条件为真,说明递归还没有回到最上层,应该求当前被划分数在当前最大加数变小后的其他划分情况,因此,此空答案为 ni-。五、试题五(总题数:1,分数:15.00)5.【说明】本程序用于评选优

    17、秀教师和学生。当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出来。其类结构如下图所示:(分数:15.00)_正确答案:(1)virtual bool isgood()=0; (2)public base (3)(num90)?true:false;(4)ptech=new teacher; (5)pi-isgood()=true)解析:分析本题考查 C+中类的继承、虚函数和其他一些语法结构。题目要求本题的程序用于评选优秀教师和学生,在输入一系列教师或学生的记录后,能将优秀学生及教师的姓名列出来。根据题目中的图,对于学生来说,只要拿其考试成绩与 90比较大小就可;对于老师来说,只要一年

    18、内发表的论文超过 3篇就可以。下面我们来分析代码。代码给出了三个类的定义和一个主函数,类 base是类 student和类 teacher的基类。第(1)空处在基类 base的定义里面,结合题目中的要求,我们知道类 base中需要定义一个 isgood()虚函数,但在类 base的代码中并没有看到对虚函数 isgood()的定义,因此,第(1)空应该是定义虚函数isgood()。在 C+中定义虚函数的方法是在函数的定义前加一个关键字 virtual,所以,此空应填virtual bool isgood()=0。第(2)空处的作用很明显,是用在继承类的定义时,表明其对父类的继承方式,由继承类中继

    19、承父类的成员方法 getname()仍然是公有的可以知道,子类对父类的继承方式是公有继承。所以,此空答案为 public base。第(3)空处的作用是在类 student中重新定义虚函数 isgood(),其要完成的任务在上面分析中已经知道,拿学生的考试成绩与 90比大小,如果大于 90返回 true,否则返回 false。因此,此空答案为(num90)?true:false。在做第(4)空时,我们如果结合前面那个订语句下面的代码就很容易明白了,此空要完成的任务是动态创建一个 teacher对象,因此,答案为 ptech=new teacher。第(5)空所在的位置是一个条件选择语句的条件,

    20、再结合全程序来看,不难发现此时程序还没有实现对优秀学生及教师的姓名的列出,而第(5)空下面的语句刚好用来列出姓名,那么第(5)空的功能是判断是否为优秀学生或老师,调用函数 isgood()可以实现。因此,此空答案为 pi-isgood()=true。六、试题六(总题数:1,分数:15.00)6.【说明】本程序输出 10000之内的所有完全数。完全数是指等于其所有因子和(包括 1,但不包括这个数本身)的数。例如:6=123,6=1+2+3,则 6是一个完全数。【程序】public class PerfectNumPublic static void main(String args)int co

    21、unt=1;for(int i=1; i10000; i+)int y=0;for(int j=1; ji; j+)if( (1) )y= (2) if( (3) )System.out.print( (4) +String.valueOf(/t);(5) If(count%3=0)System.out.printin();(分数:15.00)_正确答案:(1)i%j=0 (2)y+j; (3)y=i (4)i (5)count+;)解析:分析本题考查用 Java语言的语法、结构及算法的具体实现。题目要求我们输出 10000之内的所有完全数,而完全数是指等于其所有因子和数。要想求出 1到 10

    22、000中的所有完全数,我们需要从 1开始对每个数进行求解,在判断一个数是否是完全数时,首先要求出其所有因子,再求其因子的和,从而通过判断因子的和与该数是否相等来确定该数是否为完全数。一个数的因子是指能被该数整除的数。下面我们来看代码,定义了一个类 PerfectNum来实现输出 10000之内的所有完全数。在类中有一个主入口函数,在函数体中首先声明了一个整型变量 count并赋初值 1,接下来是一个循环语句,其作用是用来对从 1到 10000之间的数逐个求解。在这个循环体里面又有一个循环,结合我们的分析和程序来看,此循环的功能是求得每个数的所有因子并计算其和,第(1)空就是在这个循环体下面,是

    23、一个条件语句的判断条件,其作用是判断变量 i中的数值是否是变量 i中数的因子,判断是否是因子的方法是取余,看结果是否为 0。因此,第(1)空的答案是 i%j=0。第(2)空是紧接着第(1)空来的,如果变量 i中的数值是变量 i中数的因子,则执行此空,那肯定是对因子求和,其和存放在变量 y中,那么此空答案是 y+1。第(3)空也是一个条件语句的判断条件,结合后面的程序,我们可以知道,此处是判断该数因子的和是否等于该数,如果是,则执行后面的输出语句:不是,则进入下一个循环。因此,此空答案是 y=i。第(4)空在输出语句中,这考查我们对 Java语言中输出语句的熟悉情况,如果熟悉的话,此空很简单,答案是 i或 y。第(5)空是用来记录从 1到 10000之间完全数的个数,有一个记录的变量 count,在每次输出一个完全数后只要我们对变量 count加 1即可。因此,此空答案为 count+。


    注意事项

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




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

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

    收起
    展开