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

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

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

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

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

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

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

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

    4、符号常量及栈的类型定义如下: #define MAXSIZE 32 typedef 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-1 S-max=n;U (1) /U=0;return 0; int Push (Stack * s,int

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

    6、 m;Stack S if (InitStack( return; do if( Push( return; n= U(5) /U; 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)_三、B试题三/B(总题数:1,分数:15.00)3.【说明】 函数 void rcr(int a,int n,int k)的功能是:

    7、将数组 a中的元素 s09n-1循环向右平移 k个位置。 为了达到总移动次数不超过 n的要求,每个元素都必须只经过一次移动到达目标位置。在函数 rcr中用如下算法实现:首先备份 a0的值,然后计算应移动到 a0的元素的下标 p,并将 aP的值移至 a0;接着计算应移动到 ap的元素的下标 q,并将 aq的值移至 ap;依次类推,直到将a0的备份值移到正确位置。 若此时移动到位的元素个数已经为 n,则结束;否则,再备份 a1的值,然后计算应移动到 a1的元素的下标 p,并将 ap的值移至 91;接着计算应移动到 ap的元素的下标q,并将 aq的值移至 ap;依次类推,直到将 a1的备份值移到正确

    8、位置。 若此时移动到位的元素个数已经为 n,则结束;否则,从 a2开始,重复上述过程,直至将所有的元素都移动到目标位置时为止。 例如,数组 a中的 6个元素如图 1(a)所示,循环向右平移两个位置后元素的排列情况如图 1(b)所示。 (分数:15.00)_四、B试题四/B(总题数:1,分数:15.00)4.要求执行该段程序后能弹出一个对话框,对话框中有“确定”和“取消”按钮,以及一个带问号的图标,并要求第一个按钮为默认按钮。 Private Sub Form_Load() MsgBox“要重新输入吗?“_,“询问“ End Sub(分数:15.00)_五、B试题五/B(总题数:1,分数:15.

    9、00)5.【说明】本应用程序是一个乘法计算器,其运行窗口如图 2所示。(分数:15.00)_六、B试题六/B(总题数:1,分数:15.00)6.【说明】 请完成下列 Java程序。程序的执行结果是生成一个具有一个 TextField类型的对象 in、 Button类型的对象 btn和 Label类型的对象 out图形用户界面,程序的功能是计算用户输入数的平方,如图 3所示。 (分数:15.00)_七、B试题七/B(总题数:1,分数:15.00)7.【说明】 请编写一个函数 int SeqSearch(int list,int start,int n,int key),该函数从start开始,在

    10、大小为 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 A10 int key,count=0,pos; cout “ Ent

    11、er 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 输出:U (4) /U 第二种情况:输入 2 3

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

    13、printf(“ input astring: /n“ ); gest(str); while( stri ) if(stri =a fputc(stri,U (3) /U); i+; fclose(fp); fp=fopen(“ test.txt“,U (4) /U); fgets(str, 100, fp); printf(“%s/n“ ,str); U (5) /U; (分数:15.00)_初级程序员下午试题-9 答案解析(总分:120.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)1.【算法说明】 某英汉词典文件包含 N个记录(N1),每个记录有两个字段:

    14、一个是英文单词,另一个是相应的汉语解释。各个记录按英文单词的词典顺序排列,各英文单词并不重复。 本算法用于维护、更新该英汉词典文件。维护、更新的方法是:首先输入一个英文单词及其汉语解释,然后在该词典中查找输入的英文单词,若找到,则用输入的汉语解释更新原有的解释;若找不到,则需要将输入的英文单词及其汉语解释插入到该词典的适当位置,使各记录仍按英文单词的词典顺序排列。 【算法】 第一步 读入英汉词典文件,并将读入的 N个英文单词依次存放在字符串数组 ENG中,将相应的汉语解释依次存放在字符串数组 CN中。数组元素 CN(i)给出了数组元素 ENG(i)的解释。 第二步 输入英文单词及其汉语解释,将

    15、它们分别存放在字符串变量 E和 C中。若 E为空串或都是空格,则转向第四步。 第三步 根据变量 E的值,用二分法在数组 ENG中查找。具体步骤如下: 11L,NH 2INT(L+H)/2)K 3若 E=ENG(K),则CCN(K),转向第二步 若 EENG(K),则 K-1U (1) /U;若 EENG(K),则 K+1U (2) /U 4若 HL 则 对 I=N,L,-1(始值,终值,增量)循环执行: ENG(I)ENG(I+1) CN(I)CN(I+1) 然后,将 E和 C分别存入U (3) /U和U (4) /U,N+1N 最后转向第二步 否则,转向U (5) /U 第四步 将数组 EN

    16、G和 CN输出,形成新的英汉词典文件,算法结束。(分数:15.00)_正确答案:()解析:H (2)L (3)ENG(L)或等价表达式 (4)CN(L)或等价表达式 (5)(2) 解析 H,L 分别是二分法查找的上界和下界,所以(1)和(2)应分别填入 H,L。(3)和(4)处是将 L之后的元素依次后移以后,将 E和 C分别存入 L处,所以(3)和(4)处应分别填入 ENG(L)和 CN(L)或其他等价表达式,比如 ENG(H+1)。(5)处是HL,这说明查找表未空,需要转向(2)继续查找。二、B试题二/B(总题数:1,分数:15.00)2.【说明】 函数 MultibaseOutput(lo

    17、ng n,int B)的功能是:将一个无符号十进制整数 n转换成 B(2B16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把 B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C 代码中的符号常量及栈的类型定义如下: #define MAXSIZE 32 typedef struct int * elem; /*栈的存储区*/ int max; /*栈的容量,即栈中最多能存放的元素个数*/ int top; /*栈顶指针*/ Stack; 【代码】 int InitStack(Stack * S,int n) /*创建容量为 n的空栈*/ S - elem

    18、= (int*) malloc(n*sizeof(int); if(S - elem = NULL) return-1 S-max=n;U (1) /U=0;return 0; int Push (Stack * s,int item) /*将整数item压入栈顶*/ if(S-top=S-max)printf(“Stack is full! /n“);return-1; U(2) /U= item; return 0 int StackEmpty(Stack S) return(! S. top)? 1:0; /*判断栈是否为空*/ int Pop(Stack * S) /*栈顶元素出栈*/

    19、 if(! S-top) printf(“Pop an empty stack! /n“) ;return -1; return U(3) /U; void MultibaseOutput(long n,int B) int m;Stack S if (InitStack( return; do if( Push( return; n= U(5) /U; while(n!=0); while(!StackEmpty(S) /*输出 B进制的数*/ m = Pop( if(m10) printf(“%d“,m) ;/*小于 10,输出数字*/ else printf(“%c“,m+55); /*

    20、大于或等于 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)此处语句是出栈操作,即修改栈顶指针,然后弹出栈顶元素。(4)此处语句求得将要入栈的数字,即用 n%B得到 B进制下第一位数字。(5)此处语句修改 n的大小以继续求得更高位的数字。三、B试题三/B(总题数:1,分数:15.00)3.【说明】 函数 voi

    21、d rcr(int a,int n,int k)的功能是:将数组 a中的元素 s09n-1循环向右平移 k个位置。 为了达到总移动次数不超过 n的要求,每个元素都必须只经过一次移动到达目标位置。在函数 rcr中用如下算法实现:首先备份 a0的值,然后计算应移动到 a0的元素的下标 p,并将 aP的值移至 a0;接着计算应移动到 ap的元素的下标 q,并将 aq的值移至 ap;依次类推,直到将a0的备份值移到正确位置。 若此时移动到位的元素个数已经为 n,则结束;否则,再备份 a1的值,然后计算应移动到 a1的元素的下标 p,并将 ap的值移至 91;接着计算应移动到 ap的元素的下标q,并将

    22、aq的值移至 ap;依次类推,直到将 a1的备份值移到正确位置。 若此时移动到位的元素个数已经为 n,则结束;否则,从 a2开始,重复上述过程,直至将所有的元素都移动到目标位置时为止。 例如,数组 a中的 6个元素如图 1(a)所示,循环向右平移两个位置后元素的排列情况如图 1(b)所示。 (分数:15.00)_正确答案:()解析:(1)k 或 k!=0 (2)(j-k+n)%n或(t-k+n)%n (3)j (4)at或等价表达式 (5)i+或等价表达式 解析 (1)判断 k执行 k=k%n后是否为 0,即是否是 n的倍数,应填入 k或 k!=0。(2)j 表示要移动到 at的元素的位置,于

    23、是 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+或其他等价表达式。四、B试题四/B(总题数:1,分数:15.00)4.要求执行该段程序后能弹出一个对话框,对话框中有“确定”和“取消”按钮,以及一个带问号的图标,并要求第一个按钮为默认按钮。 Private Sub Form_Load() MsgBox“要重新输

    24、入吗?“_,“询问“ End Sub(分数:15.00)_正确答案:()解析:VbOkCancel+VbQuestion+VbDefaultButtonl解析 该题考查的是输出消息函数 MsgBox()的知识,要求考生熟练运用该函数中的参数。在 Visual Basic程序设计中,输出消息函数 MsgBox()的格式是:Msgbox(提示,按钮,标题)“提示”项是必选项,是消息框中出现的文字说明,如该程序中的“要重新输入吗?”字样。“按钮”项是可选项。这个值可以决定消息框中按钮数目及形式、图标的样式以及默认按钮等内容。表 1列出了消息框上内容及符号常数的对应关系。B 表 1 消息框符号对照表/

    25、B 组 符号常数 消息框上的对应内容VbOkOnly “确定”按钮VbOkCancel “确定”和“取消”按钮VbAbortRetrylgnore“终止”、“重试”和“忽略”按钮VbYesNoCancel “是”、“否”和“取消”按钮VbYesNo “是”和“否”按钮VbRetryCancel “重试”和“取消”按钮 VbCritical “中止”图标VbQuestion “问号”图标VbExclamation “惊叹号”图标VbInformation “i”图标 VbDefaultButton1 第一个按钮为默认按钮VbDefaultButton2 第二个按钮为默认按钮VbDefaultBu

    26、tton3 第三个按钮为默认按钮VbDefaultButton4 第四个按钮为默认按钮五、B试题五/B(总题数:1,分数:15.00)5.【说明】本应用程序是一个乘法计算器,其运行窗口如图 2所示。(分数:15.00)_正确答案:()解析:(1)False (2)cmdMultiply (3)Val(txt1.Text)*Val(txt2.Text)或其等价形式 (4)cmdClear-Click (5)End或 Unload frmMultiply或其等价形式 解析 (1)空处需要填写文本框 3的 Enabled属性,在说明中已经指出用户不能在“积”对应的文本框中输入数据,因此其 Enabl

    27、ed属性为“False”。 (2)空处需要填写按钮 1(运算按钮)的名称,从程序代码的 Private Sub cmdMaltiply_Click()事件中,可以判断按钮 1的名称为“cmdMultiply”。 (3)空处所在语句是进行乘积运算,由于文本框的文字是字符类型,不能直接进行乘积运算,先要将它转换成数据型再进行乘积运算。因此(3)空处应当填写“Val(txt1.Text)*Val(txt2.Text)”或其等价形式。 (4)空处需要填写一个事件的名称,从下面的代码可以看出这是“清空”按钮 Click事件所完成的工作,“清空”按钮的名称为“cmdClear”,因此(4)空应填写“cmd

    28、Clear_Click”。 (5)空处需要填写退出应用程序的语句。在 VB中,这样的语句有很多,常用有两个,一个是“End”,另一个“Unload窗口名称”。六、B试题六/B(总题数:1,分数:15.00)6.【说明】 请完成下列 Java程序。程序的执行结果是生成一个具有一个 TextField类型的对象 in、 Button类型的对象 btn和 Label类型的对象 out图形用户界面,程序的功能是计算用户输入数的平方,如图 3所示。 (分数:15.00)_正确答案:()解析:(1)new AppFrame() (2)ActionListener (3)ActionEvent (4)Int

    29、eger,parseInt(s);或等价形式 (5)WindowEvent 解析 生成类 AppFrame的对象。实现接口 ActionListener。按钮动作事件类名。将字符串 a转化为整数并赋给变量 d。窗口事件类名。七、B试题七/B(总题数:1,分数:15.00)7.【说明】 请编写一个函数 int SeqSearch(int list,int start,int n,int key),该函数从start开始,在大小为 n的数组 list中查找 key值,返回最先找到的 key值的位置,如果没有找到则返回-1。请修改程序中画线部分的错误并将不同情况下的输出结果补充完整。 【程序】 文件

    30、 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 A10 int key,count=0,pos; cout “ Enter a list of 10 integers:“; for(pos=0;pos10;pos+) cin A; /(3) cout “ Enter a key; “; cin

    31、 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 输出:U (4) /U 第二种情况:输入 2 3 126 8 45 8 33 7输入 k6y:9 输出:U (5) /U(分数:15.00)_正确答案:()解析:(1)for(int i=start;in;i+) (2)if

    32、(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。八、B试题八/B(总题数:1,分数:15.00)8.【说明】 以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件 test.txt中,然后从

    33、该文件读出字符串并显示出来。 【程序】 #include stdio. h main( ) FILE * fp; char str100; int i=0; if(fp=fopen(“text.txt“U (1) /U) =NULL) printf(“cant open this file. /n“) ;exit(0) ; printf(“ input astring: /n“ ); gest(str); while( stri ) if(stri =a fputc(stri,U (3) /U); i+; fclose(fp); fp=fopen(“ test.txt“,U (4) /U);

    34、fgets(str, 100, fp); printf(“%s/n“ ,str); U (5) /U; (分数: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)。


    注意事项

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




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

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

    收起
    展开