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

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

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

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

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

    1、初级程序员下午试题-98 及答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【算法说明】某英汉词典文件包含 N 个记录(N1),每个记录有两个字段:一个是英文单词,另一个是相应的汉语解释。各个记录按英文单词的词典顺序排列,各英文单词并不重复。本算法用于维护、更新该英汉词典文件。维护、更新的方法是:首先输入一个英文单词及其汉语解释,然后在该词典中查找输入的英文单词,若找到,则用输入的汉语解释更新原有的解释;若找不到,则需要将输入的英文单词及其汉语解释插入到该词典的适当位置,使各记录仍按英文单词的词典顺序排列。【算法】第一步 读入英汉词典文件,并将

    2、读入的 N 个英文单词依次存放在字符串数组 ENG 中,将相应的汉语解释依次存放在字符串数组 CN 中。数组元素 CN(i)给出了数组元素 ENG(i)的解释。第二步 输入英文单词及其汉语解释,将它们分别存放在字符串变量 E 和 C 中。若 E 为空串或都是空格,则转向第四步。第三步 根据变量 E 的值,用二分法在数组 ENG 中查找。具体步骤如下:11L,NH2INT(L+H)/2)K3若 E=ENG(K),则 CCN(K),转向第二步若 EENG(K),则 K-1 (1) ;若 EENG(K),则 K+1 (2) 4若 HL 则对 I=N,L,-1(始值,终值,增量)循环执行:ENG(I)

    3、ENG(I+1)CN(I)CN(I+1)然后,将 E 和 C 分别存入 (3) 和 (4) ,N+1N 最后转向第二步否则,转向 (5) 第四步 将数组 ENG 和 CN 输出,形成新的英汉词典文件,算法结束。(分数:15.00)_二、试题二(总题数:1,分数:15.00)2.【说明】函数 MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数 n 转换成 B(2B16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把 B 进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C 代码中的符号常量及栈的类型定义如下:#define

    4、MAXSIZE 32typedef struct int * elem; /*栈的存储区*/int max; /*栈的容量,即栈中最多能存放的元素个数*/int top; /*栈顶指针*/Stack;【代码】int InitStack(Stack * S,int n) /*创建容量为 n 的空栈*/S - elem = (int*) malloc(n*sizeof(int);if(S - elem = NULL) return-1S-max=n; (1) =0;return 0;int Push (Stack * s,int item) /*将整数 item 压入栈顶*/if(S-top=S-

    5、max)printf(“Stack is full! /n“);return-1;(2) = item; return 0int StackEmpty(Stack S) return(! S. top)? 1:0; /*判断栈是否为空*/int Pop(Stack * S) /*栈顶元素出栈*/if(! S-top) printf(“Pop an empty stack! /n“) ;return -1;return (3) ;void MultibaseOutput(long n,int B)int m;Stack Sif (InitStack( return;do if( Push( re

    6、turn;n= (5) ;while(n!=0);while(!StackEmpty(S) /*输出 B 进制的数*/m = Pop(if(m10) printf(“%d“,m) ;/*小于 10,输出数字*/else printf(“%c“,m+55); /*大于或等于 10,输出相应的字符*/printf( “/n“) ;(分数:15.00)_三、试题三(总题数:1,分数:15.00)3.【说明】函数 void rcr(int a,int n,int k)的功能是:将数组 a 中的元素 s09n-1循环向右平移 k 个位置。为了达到总移动次数不超过 n 的要求,每个元素都必须只经过一次移动

    7、到达目标位置。在函数 rcr 中用如下算法实现:首先备份 a0的值,然后计算应移动到 a0的元素的下标 p,并将 aP的值移至 a0;接着计算应移动到 ap的元素的下标 q,并将 aq的值移至 ap;依次类推,直到将 a0的备份值移到正确位置。若此时移动到位的元素个数已经为 n,则结束;否则,再备份 a1的值,然后计算应移动到 a1的元素的下标 p,并将 ap的值移至 91;接着计算应移动到 ap的元素的下标 q,并将 aq的值移至 ap;依次类推,直到将 a1的备份值移到正确位置。若此时移动到位的元素个数已经为 n,则结束;否则,从 a2开始,重复上述过程,直至将所有的元素都移动到目标位置时

    8、为止。例如,数组 a 中的 6 个元素如图 1(a)所示,循环向右平移两个位置后元素的排列情况如图 1(b)所示。(分数:15.00)_四、试题四(总题数:1,分数:15.00)4.要求执行该段程序后能弹出一个对话框,对话框中有“确定”和“取消”按钮,以及一个带问号的图标,并要求第一个按钮为默认按钮。Private Sub Form_Load()MsgBox“要重新输入吗?“_,“询问“End Sub(分数:15.00)_五、试题五(总题数:1,分数:15.00)5.【说明】本应用程序是一个乘法计算器,其运行窗口如图 2 所示。(分数:15.00)_六、试题六(总题数:1,分数:15.00)6

    9、.【说明】请完成下列 Java 程序。程序的执行结果是生成一个具有一个 TextField 类型的对象 in、 Button 类型的对象 btn 和 Label 类型的对象 out 图形用户界面,程序的功能是计算用户输入数的平方,如图 3 所示。(分数:15.00)_七、试题七(总题数:1,分数:15.00)7.【说明】请编写一个函数 int SeqSearch(int list,int start,int n,int key),该函数从 start 开始,在大小为 n 的数组 list 中查找 key 值,返回最先找到的 key 值的位置,如果没有找到则返回-1。请修改程序中画线部分的错误并

    10、将不同情况下的输出结果补充完整。【程序】文件 search.cpp 的内容如下:#include iostream. h int SeqSearch( int list ,int start,int n,int key)for(int i=start;i=n;i+) /(1)if( listi = key)/(2)return i;return -1;void main( )int A10int key,count=0,pos;cout “ Enter a list of 10 integers:“;for(pos=0;pos10;pos+)cin A; /(3)cout “ Enter a

    11、key; “;cin key;pos=0;while( pos = SeqSearch ( A, pos, 10, key) !=-1 )count +;pos +;coutkey“occurs“ count (count!=1?“ times“:“ time“) “ in the list,“ endl;第一种情况:输入 2 3 12 6 8 45 8 33 7 输入 key:8输出: (4) 第二种情况:输入 2 3 126 8 45 8 33 7 输入 k6y:9输出: (5) (分数:15.00)_八、试题八(总题数:1,分数:15.00)8.【说明】以下程序的功能是:从键盘上输入一个

    12、字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt 中,然后从该文件读出字符串并显示出来。【程序】#include stdio. h main( )FILE * fp;char str100; int i=0;if(fp=fopen(“text.txt“ (1) ) =NULL)printf(“cant open this file. /n“) ;exit(0) ;printf(“ input astring: /n“ ); gest(str);while( stri )if(stri =a fputc(stri, (3) );i+;fclose(fp);fp=fopen

    13、(“ test.txt“, (4) );fgets(str, 100, fp);printf(“%s/n“ ,str);(5) ;(分数:15.00)_初级程序员下午试题-98 答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【算法说明】某英汉词典文件包含 N 个记录(N1),每个记录有两个字段:一个是英文单词,另一个是相应的汉语解释。各个记录按英文单词的词典顺序排列,各英文单词并不重复。本算法用于维护、更新该英汉词典文件。维护、更新的方法是:首先输入一个英文单词及其汉语解释,然后在该词典中查找输入的英文单词,若找到,则用输入的汉语解释更新原有

    14、的解释;若找不到,则需要将输入的英文单词及其汉语解释插入到该词典的适当位置,使各记录仍按英文单词的词典顺序排列。【算法】第一步 读入英汉词典文件,并将读入的 N 个英文单词依次存放在字符串数组 ENG 中,将相应的汉语解释依次存放在字符串数组 CN 中。数组元素 CN(i)给出了数组元素 ENG(i)的解释。第二步 输入英文单词及其汉语解释,将它们分别存放在字符串变量 E 和 C 中。若 E 为空串或都是空格,则转向第四步。第三步 根据变量 E 的值,用二分法在数组 ENG 中查找。具体步骤如下:11L,NH2INT(L+H)/2)K3若 E=ENG(K),则 CCN(K),转向第二步若 EE

    15、NG(K),则 K-1 (1) ;若 EENG(K),则 K+1 (2) 4若 HL 则对 I=N,L,-1(始值,终值,增量)循环执行:ENG(I)ENG(I+1)CN(I)CN(I+1)然后,将 E 和 C 分别存入 (3) 和 (4) ,N+1N 最后转向第二步否则,转向 (5) 第四步 将数组 ENG 和 CN 输出,形成新的英汉词典文件,算法结束。(分数:15.00)_正确答案:(H (2)L (3)ENG(L)或等价表达式(4)CN(L)或等价表达式 (5)(2)解析:解析 H,L 分别是二分法查找的上界和下界,所以(1)和(2)应分别填入 H,L。(3)和(4)处是将 L之后的元

    16、素依次后移以后,将 E 和 C 分别存入 L 处,所以(3)和(4)处应分别填入 ENG(L)和 CN(L)或其他等价表达式,比如 ENG(H+1)。(5)处是 HL,这说明查找表未空,需要转向(2)继续查找。二、试题二(总题数:1,分数:15.00)2.【说明】函数 MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数 n 转换成 B(2B16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把 B 进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C 代码中的符号常量及栈的类型定义如下:#define MAXSIZE 32t

    17、ypedef struct int * elem; /*栈的存储区*/int max; /*栈的容量,即栈中最多能存放的元素个数*/int top; /*栈顶指针*/Stack;【代码】int InitStack(Stack * S,int n) /*创建容量为 n 的空栈*/S - elem = (int*) malloc(n*sizeof(int);if(S - elem = NULL) return-1S-max=n; (1) =0;return 0;int Push (Stack * s,int item) /*将整数 item 压入栈顶*/if(S-top=S-max)printf(

    18、“Stack is full! /n“);return-1;(2) = item; return 0int StackEmpty(Stack S) return(! S. top)? 1:0; /*判断栈是否为空*/int Pop(Stack * S) /*栈顶元素出栈*/if(! S-top) printf(“Pop an empty stack! /n“) ;return -1;return (3) ;void MultibaseOutput(long n,int B)int m;Stack Sif (InitStack( return;do if( Push( return;n= (5)

    19、 ;while(n!=0);while(!StackEmpty(S) /*输出 B 进制的数*/m = Pop(if(m10) printf(“%d“,m) ;/*小于 10,输出数字*/else printf(“%c“,m+55); /*大于或等于 10,输出相应的字符*/printf( “/n“) ;(分数:15.00)_正确答案:(1)S-top (2)S-elemS-top+(3)S-elem-S-top (4)n%B (5)n/B)解析:解析 (1)此处初始化栈顶指针,即 S-top=0。(2)此处语句是入栈操作,即先将入栈元素放入栈顶,然后修改栈顶指针。(3)此处语句是出栈操作,即

    20、修改栈顶指针,然后弹出栈顶元素。(4)此处语句求得将要入栈的数字,即用 n%B 得到 B 进制下第一位数字。(5)此处语句修改 n 的大小以继续求得更高位的数字。三、试题三(总题数:1,分数:15.00)3.【说明】函数 void rcr(int a,int n,int k)的功能是:将数组 a 中的元素 s09n-1循环向右平移 k 个位置。为了达到总移动次数不超过 n 的要求,每个元素都必须只经过一次移动到达目标位置。在函数 rcr 中用如下算法实现:首先备份 a0的值,然后计算应移动到 a0的元素的下标 p,并将 aP的值移至 a0;接着计算应移动到 ap的元素的下标 q,并将 aq的值

    21、移至 ap;依次类推,直到将 a0的备份值移到正确位置。若此时移动到位的元素个数已经为 n,则结束;否则,再备份 a1的值,然后计算应移动到 a1的元素的下标 p,并将 ap的值移至 91;接着计算应移动到 ap的元素的下标 q,并将 aq的值移至 ap;依次类推,直到将 a1的备份值移到正确位置。若此时移动到位的元素个数已经为 n,则结束;否则,从 a2开始,重复上述过程,直至将所有的元素都移动到目标位置时为止。例如,数组 a 中的 6 个元素如图 1(a)所示,循环向右平移两个位置后元素的排列情况如图 1(b)所示。(分数:15.00)_正确答案:(1)k 或 k!=0 (2)(j-k+n

    22、)%n 或(t-k+n)%n(3)j (4)at或等价表达式 (5)i+或等价表达式)解析:解析 (1)判断 k 执行 k=k%n 后是否为 0,即是否是 n 的倍数,应填入 k 或 k!=0。(2)j 表示要移动到 at的元素的位置,于是 j 和 t 的关系为 j=(t-k+n)%n;当执行完 j=i,t=i 后,j=t,于是此处可填入(j-k+n)%n 或(t-k+n)%n。(3)将 aj移动到 at后,需要将 t 指向 j,即此处填入 j。(4)将暂存在temp 中的值移动到 at中。即此处填入 at或等价表达式。(5)此处 while 循环的递增条件,显然应该是 i+或其他等价表达式。

    23、四、试题四(总题数:1,分数:15.00)4.要求执行该段程序后能弹出一个对话框,对话框中有“确定”和“取消”按钮,以及一个带问号的图标,并要求第一个按钮为默认按钮。Private Sub Form_Load()MsgBox“要重新输入吗?“_,“询问“End Sub(分数:15.00)_正确答案:(VbOkCancel+VbQuestion+VbDefaultButtonl)解析:解析 该题考查的是输出消息函数 MsgBox()的知识,要求考生熟练运用该函数中的参数。在 Visual Basic 程序设计中,输出消息函数 MsgBox()的格式是:Msgbox(提示,按钮,标题)“提示”项是

    24、必选项,是消息框中出现的文字说明,如该程序中的“要重新输入吗?”字样。“按钮”项是可选项。这个值可以决定消息框中按钮数目及形式、图标的样式以及默认按钮等内容。表 1 列出了消息框上内容及符号常数的对应关系。表 1 消息框符号对照表组 符号常数 消息框上的对应内容VbOkOnly “确定”按钮VbOkCancel “确定”和“取消”按钮VbAbortRetrylgnore“终止”、“重试”和“忽略”按钮VbYesNoCancel “是”、“否”和“取消”按钮VbYesNo “是”和“否”按钮VbRetryCancel “重试”和“取消”按钮 VbCritical “中止”图标VbQuestion

    25、 “问号”图标VbExclamation “惊叹号”图标VbInformation “i”图标VbDefaultButton1 第一个按钮为默认按钮VbDefaultButton2 第二个按钮为默认按钮VbDefaultButton3 第三个按钮为默认按钮VbDefaultButton4 第四个按钮为默认按钮五、试题五(总题数:1,分数:15.00)5.【说明】本应用程序是一个乘法计算器,其运行窗口如图 2 所示。(分数:15.00)_正确答案:(1)False (2)cmdMultiply(3)Val(txt1.Text)*Val(txt2.Text)或其等价形式(4)cmdClear-Cl

    26、ick(5)End 或 Unload frmMultiply 或其等价形式)解析:解析 (1)空处需要填写文本框 3 的 Enabled 属性,在说明中已经指出用户不能在“积”对应的文本框中输入数据,因此其 Enabled 属性为“False”。(2)空处需要填写按钮 1(运算按钮)的名称,从程序代码的 Private Sub cmdMaltiply_Click()事件中,可以判断按钮 1 的名称为“cmdMultiply”。(3)空处所在语句是进行乘积运算,由于文本框的文字是字符类型,不能直接进行乘积运算,先要将它转换成数据型再进行乘积运算。因此(3)空处应当填写“Val(txt1.Text

    27、)*Val(txt2.Text)”或其等价形式。(4)空处需要填写一个事件的名称,从下面的代码可以看出这是“清空”按钮 Click 事件所完成的工作,“清空”按钮的名称为“cmdClear”,因此(4)空应填写“cmdClear_Click”。(5)空处需要填写退出应用程序的语句。在 VB 中,这样的语句有很多,常用有两个,一个是“End”,另一个“Unload窗口名称”。六、试题六(总题数:1,分数:15.00)6.【说明】请完成下列 Java 程序。程序的执行结果是生成一个具有一个 TextField 类型的对象 in、 Button 类型的对象 btn 和 Label 类型的对象 out

    28、 图形用户界面,程序的功能是计算用户输入数的平方,如图 3 所示。(分数:15.00)_正确答案:(1)new AppFrame() (2)ActionListener (3)ActionEvent(4)Integer,parseInt(s);或等价形式 (5)WindowEvent)解析:解析 生成类 AppFrame 的对象。实现接口 ActionListener。按钮动作事件类名。将字符串 a 转化为整数并赋给变量 d。窗口事件类名。七、试题七(总题数:1,分数:15.00)7.【说明】请编写一个函数 int SeqSearch(int list,int start,int n,int

    29、key),该函数从 start 开始,在大小为 n 的数组 list 中查找 key 值,返回最先找到的 key 值的位置,如果没有找到则返回-1。请修改程序中画线部分的错误并将不同情况下的输出结果补充完整。【程序】文件 search.cpp 的内容如下:#include iostream. h int SeqSearch( int list ,int start,int n,int key)for(int i=start;i=n;i+) /(1)if( listi = key)/(2)return i;return -1;void main( )int A10int key,count=0,

    30、pos;cout “ Enter a list of 10 integers:“;for(pos=0;pos10;pos+)cin A; /(3)cout “ Enter a key; “;cin key;pos=0;while( pos = SeqSearch ( A, pos, 10, key) !=-1 )count +;pos +;coutkey“occurs“ count (count!=1?“ times“:“ time“) “ in the list,“ endl;第一种情况:输入 2 3 12 6 8 45 8 33 7 输入 key:8输出: (4) 第二种情况:输入 2 3

    31、 126 8 45 8 33 7 输入 k6y:9输出: (5) (分数:15.00)_正确答案:(1)for(int i=start;in;i+) (2)if(listi=key)(3)cinApos (4)8 occurs 2 times in the list(5)9 occurs 0 time in the list)解析:解析 数组下标从 0 开始,所以 n 次循环要在 i=n-1 时结束,而不是在 i=n 时结束。判断是否相等使用“=”,一个等号是赋值。将输入数字逐个赋给 A 的 pos 处的元素。8 出现 2 次,注意结果中的 times。9 出现 0 次,注意结果中的 time

    32、。八、试题八(总题数:1,分数:15.00)8.【说明】以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt 中,然后从该文件读出字符串并显示出来。【程序】#include stdio. h main( )FILE * fp;char str100; int i=0;if(fp=fopen(“text.txt“ (1) ) =NULL)printf(“cant open this file. /n“) ;exit(0) ;printf(“ input astring: /n“ ); gest(str);while( stri )if(str

    33、i =a fputc(stri, (3) );i+;fclose(fp);fp=fopen(“ test.txt“, (4) );fgets(str, 100, fp);printf(“%s/n“ ,str);(5) ;(分数:15.00)_正确答案:(1)W (2)stri-a+A (3)fp (4)r(5)fclose(fp)解析:解析 程序运行后,首先打开文件 test.txt 用于写入,因此(1)空填 w。程序从键盘读入字符串到变量 str 中,对 str 中每个字符,如是小写字母,则将其转换成大写字母。(2)空是小写字母转换大写字母的操作。(3)空是将 str 中的字符写入文件 text.txt 中。str 中所有字符处理完后,关闭文件 test.txt(对应语句是 fclose (fp),然后重新以读方式打开,因此(4)空填 r,将 test.txt 中的内容读到 str 中并显示输出后,关闭文件 test.txt,即(5)空填 fclose(fp)。


    注意事项

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




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

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

    收起
    展开