【计算机类职业资格】初级程序员下午试题-98及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-98及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-98及答案解析.doc(10页珍藏版)》请在麦多课文档分享上搜索。
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
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 98 答案 解析 DOC
