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