07软考程序员模拟试题2下午da.doc

上传人:公**** 文档编号:549028315 上传时间:2023-04-17 格式:DOC 页数:13 大小:200.01KB
返回 下载 相关 举报
07软考程序员模拟试题2下午da.doc_第1页
第1页 / 共13页
07软考程序员模拟试题2下午da.doc_第2页
第2页 / 共13页
07软考程序员模拟试题2下午da.doc_第3页
第3页 / 共13页
07软考程序员模拟试题2下午da.doc_第4页
第4页 / 共13页
07软考程序员模拟试题2下午da.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《07软考程序员模拟试题2下午da.doc》由会员分享,可在线阅读,更多相关《07软考程序员模拟试题2下午da.doc(13页珍藏版)》请在金锄头文库上搜索。

1、试题一阅读下列算法说明和算法,将应填入(n)处的字句写在答卷的对应栏内。【算法说明】某英汉词典文件包含N个记录(N1),每个记录有两个字段:一个是英文单词,另一个是相应的汉语解释。各个记录按英文单词的词典顺序排列,各英文单词并不重复。本算法用于维护、更新该英汉词典文件。维护、更新的方法是:首先输入一个英文单词及其汉语解释,然后在该词典中查找输入的英文单词,若找到,则用输入的汉语解释更新原有的解释;若找不到,则需要将输入的英文单词及其汉语解释插入到该词典的适当位置,使各记录仍按英文单词的词典顺序排列。【算法】第一步读入英汉词典文件,并将读入的N个英文单词依次存放在字符串数组ENG中,将相应的汉语

2、解释依次存放在字符串数组CN中。数组元素CN(i)给出了数组元素ENG(i)的解释。第二步输入英文单词及其汉语解释,将它们分别存放在字符串变量E和C中。若E为空串或都是空格,则转向第四步。第三步根据变量E的值,用二分法在数组ENG中查找。具体步骤如下:1.1L,NH2.INT(L+H)2)K3.若E=ENG(K),则CCN(K),转向第二步若EENG(K),则K-1 (1) ;若EENG(K),则K+1 (2) 4.若HL,这说明查找表未空,需要转向(2)继续查找。 试题二阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】函数MultibaseOutput(long n

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

4、t);if(S-elem=NULL)return-1;S-max=n; (1) =0;return 0;int Push (Stack *s,int item)/*将整数item压入栈顶*/if(S-top=S-max)printf(Stack is full!n);return-1; (2) =item;return 0;int StackEmpty(Stack S)return(! Stop)?10;/*判断栈是否为空*/int Pop(Stack *S)/*栈顶元素出栈*/if(! S-top)printf(Pop an empty stack!n);return -1; return

5、(3) ;void MultibaseOutput(long n,int B)int m;Stack S; if(InitStack(&S,MAXSIZE)printf(Failure!n);return; do if(Push(&S, (4) )printf(Failure!n);return;n= (5) ; while(n !=0);while(! StackEmpty(S)/*输出B进制的数*/m=Pop(& S);if(m10)printf(%d,m);/*小于10,输出数字*/else printf(%c,m+55);/*大于或等于10,输出相应的字符*/ printf(n); 试

6、题二【答案】(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的大小以继续求得更高位的数字。 试题三阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】函数void rcr(int a,int n,int k)的功能是:将数组a中的元素a0an

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

8、程,直至将所有的元素都移动到目标位置时为止。例如,数组a中的6个元素如图1(a)所示,循环向右平移两个位置后元素的排列情况如图1(b)所示。【函数】void rcr(int a,int n,int k)int i,j,t,temp,count;count=0;*记录移动元素的次数*k=kn;if( (1) )/*若k是n的倍数,则元素无须移动;否则,每个元素都要移动*i=0;while(countn)j=i;t=i;temp=ai;*备份ai的值*/*移动相关元素,直到计算出ai应移动到的目标位置*while(j= (2) )!=i)at=aj;t= (3) ;count+; (4) =tem

9、p;count+; (5) ; 试题三【答案】(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的元素的位置,于是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+或其他等价表

10、达式。 试题四阅读下面的要求,在填入适当的语句。要求执行该段程序后能弹出一个对话框,对话框中有确定和取消按钮,以及一个带问号的图标,并要求第一个按钮为默认按钮。Private Sub Form_Load()MsgBox要重新输入吗?,询问End Sub 试题四【答案】VbOkCancel+VbQuestion+VbDefaultButton1【解析】该题考查的是输出消息函数MsgBox()的知识,要求考生熟练运用该函数中的参数。在Visual Basic程序设计中,输出消息函数MsgBox()的格式是:Msgbox(提示,按钮,标题)提示项是必选项,是消息框中出现的文字说明,如该程序中的要重新

11、输入吗?字样。按钮项是可选项。这个值可以决定消息框中按钮数目及形式、图标的样式以及默认按钮等内容。表1列出了消息框上内容及符号常数的对应关系。 试题五阅读以下应用说明及Visual Basic程序代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】本应用程序是一个乘法计算器,其运行窗口如图2所示。在该界面中,被乘数、乘数以及积等文字为标签,相应的3个输入输出数据框为文本框,此外还有3个命令按钮。用户在被乘数和乘数相应的文本框内输入数据,再单击运算按钮,便能在积对应的文本框中看到相乘的结果;当用户单击清除按钮时,就会清除各文本框中的数据;当用户单击关闭按钮时就会关闭该窗口并退出应用程序。用

12、户不能在积对应的文本框中输入数据。【属性设置】各个对象、有关的属性名以及需要修改的属性值设计如下:【程序】Private Sub cmdMultiply_Click()txt3Text=Trim(Str( (3) )加法运算获得和数End SubPrivate Sub (4) ()txt1Text= 空字符串赋值给文本框txt1的内容txt2Text= 空字符串赋值给文本框txt2的内容txt3Text= 空字符串赋值给文本框txt3的内容End SubPrivate Sub cmdClose_Click() (5) 退出应用程序End Sub 试题五【答案】(1)False(2)cmdMultiply(3)Val(txt1Text)*Val(txt2Text)或其等价形式(4)cmdClear-Click(5)End或Unload frmMultiply或其等价形式【解析】(1)空处需要填写文本框3的Enabled属性,在说明中已经指出用户不能在积对应的文本框中输入数据,因此其Enabled属性为False。(2)空处需要填写按钮1(运算按钮)的名称,从程序代码的Private Sub cmdMultiply_Click()事件中,可以判断按钮1的名称为cmdMultiply。(3)空处所在语句是进行乘积运算,由于文本框的文字是字符类

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号