全国计算机技术与软件专业技术资格(水平)考试2011全真模拟试卷(三)下午试题.doc_第1页
全国计算机技术与软件专业技术资格(水平)考试2011全真模拟试卷(三)下午试题.doc_第2页
全国计算机技术与软件专业技术资格(水平)考试2011全真模拟试卷(三)下午试题.doc_第3页
全国计算机技术与软件专业技术资格(水平)考试2011全真模拟试卷(三)下午试题.doc_第4页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全国计算机技术与软件专业技术资格(水平)考试全真模拟试卷(三)下午试题(考试时间14001630,共150分钟) 本试卷共六道试题,满分75分。试题一阅读以下说明和流程图(如图1所示),回答问题1至问题4,将答案写在答卷的对应栏内。【说明】本流程图是将中缀表示的算术表达式转换成后缀表示。如中缀表达式(A(B*CD)*E)/(FG)的后缀表示为ABC*DE*FG/为了方便,假定变量名为单个英文字母,运算符只有、*、/(均为双目运算符,左结合),并假定所提供的算术表达是非空且语法是正确的。另外,中缀表示形式中无空格符,但整个算术表达式以空格符结束。流程图中使用的符号的意义如下: 数组IN存储中缀表达式; 数组POLISH存储其后缀表达式; 数组S是一个后进先出栈; 函数PRIOR(CHAR)返回符号CHAR的优先级,各符号的优先级见表2:表2CHARPRIOR(XHAR)*/43(2)1【问题1】填充流程图中的判断条件。【问题2】写出子程序A的功能,并顺序写出实现该功能的操作【问题3】写出子程序B的功能,并顺序写出实现该功能的操作。【问题4】中缀表达式(ABC*D)*(EF)/G经该流程图处理后的输出是什么?【流程图】图1 试题一 问题1【答案】PRIOR(INi):PRIOR(Sp)问题2【答案】功能: 将当前符号INi入栈 操作:p1pINiSp问题3【答案】功能:出栈 操作:k1kSpPOLISHkp1p问题4【答案】ABCD*EF*G/【解析】本题考查栈的使用和中序表达式与后缀表达式的互换。试题二阅读下列程序和控制流图,将应填入(n)的字句写在答题纸的对应栏内。【程序】图2控制流图下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度。int GetMax(int n,int datalist)int k0;for(int j1;jdatalistk)kj;return k;【控制流图】【问题1】该程序的控制流图中AE分别是什么?【问题2】计算控制流图的McCabe环路复杂性。【问题3】用基本路径覆盖法给出测试路径。【问题4】为各测试路径设计测试用例。试题二 问题1【答案】(1)jdatalistk(4)kj;(5)j; 问题2【答案】 McCabe环路复杂性为3。 问题3【答案】测试路径: Pathl:Path2: Path3: 问题4【答案】测试用例: Path1:取n1,datalist01, 预期结果:k0Path2:取:n2,datalist01,datalist10, 预期结果:k0Path3:取n2,datalist00,datalist11, 预期结果:k1 【解析】本题考查对软件测试概念和过程的理解,结合具体实例运用各种测试技术,学会测试用例设计、软件测试与程序调试的方法。软件测试是为了发现错误而执行程序的过程,其目的在于以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷。根据2004新大纲和最近两次软件设计师考试的真题,不难发现各类系统分析理论的实例化考核比例逐渐升温,只要读者平时对这部分知识的实例多分析、多思考,这部分分数其实不难拿到。 试题三请补充函数fun(),该函数的功能是:只保留字符串中的大写字母,删除其他字符,结果仍保存在原来的字符串中,由全局变量m对删除后字符串的长度进行保存。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include#includeint m;void fun(char *s) int i0,j0;char *ps;while(*(pi) if(*(pi)A&*(pi)Z) (1); (2); sj0; (3);main() char str80;clrscr();printf(nEnter a string:);gets(str);printf(nnThe string is:sn,str);fun(str);printf(nnThe string of changing is:sn,str);printf(nnThe length of changed string is:dn,m);试题三 【答案】(1)sj*(pi)(2)i(3)mj【解析】填空1:将大写字母存于原字符串中,数组下标j自加1,为下一次存放做准备。填空2:为了判断字符串中的下一个字符是否为大写字母,变量i自加1。填空3:最后将大写字母的个数,即删除后字符串的长度赋给全局变量m。 试题四阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。【程序4.1说明】“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,w2,.,wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。如下程序均能求得“背包问题”的一组解,其中程序4.1是“背包问题”的递归解法,而程序4.2是“背包问题”的非递归解法。【程序4.1】#include#define N 7#define S 15int wN10,1,4,3,4,5,2,7;int knap(int s,int n) if(s0)return 1; if (s0& &n1)return 0; if(1) printf(%4d,wn);return 1; return(2);main() if( knap(S,N)printf(OK!n); else printf(NO!n);【程序4.2】#include#define N 7#define S 15typedef struct int s; int n: int job; KNAPTP;int wN10,1,4,3,4,5,2,7;int knap (int s,int n);main( ) if (knap (S,N) printf (OK!n); else printf (NO!n);int knap (int s,int n) KNAPTP stack100,x; int top,k,rep; x.ss;x.nn; x.job0; topl;stacktopx; k0; while(3) xstack top; rep1; while ( !k & rep ) if (x.s0)k1;/*已求得一组解*/ else if (x.s0 | x.n 1&rep) xstacktop; if(x.job1) x.swx.n1; x.job2; stacktopx; (6); if(k)/*输出一组解*/ while(top1)xstacktop;if(x.job1) printf(%dt,wx.n1); return k;试题四 【答案】(1)knap(swn,n1)(2)knap(s,n1)(3)top1 & !k 或 top0 & k 0(4)x.s w x.n(5)stacktop(6)rep 0【解析】试题提供了两种解决问题的方法,程序5.1是用递归的方法来解决背包问题,程序5.2使用非递归的方法来解决背包问题。每次选择一个物品放入背包,那么剩余的物品和背包剩余的重量,又构成一个“背包问题”。程序从数组下标最大的物品开始考查,因此(1)处应该填“knap(swn,n1)”,即将数组中第N个物品放入背包,如果它能够放入到背包中,则该物品是构成解的元素之一;否则,将该物品从背包中取出,该物品不构成解的元素,在以后的考查中,它可以被排除,因此(2)处应该填“knap(s,n1)”。在改程序中用栈来保存已经考查过的物品,结构KNAPTP表示经过考查的物品,s表示考查过该物品后背包所能够盛放的物品的重量;n表示该物品在数组W中的下标;job表示物品当前的状态:当job等于1,表示物品n可以放入背包;job等于2表示物品n不能被放入到背包,那么在以后的选取中将不再考虑该物品。初始时job等于0,表示背包中没有任何放入任何物品。K为有解的标志。Rep为一个标志变量,rep等于0,表示结束当前的动作;rep等于1表示继续进行当前的动作。当栈顶物品不能放入背包时,将rep设置为0,表示下一步不从数组w中取物品。其初值为1。开始时,将数组中下标最大的物品放入栈中,然后开始考查该物品。该物品满足放入背包的条件,第(4)(5)空将完成将物品放入背包的操作,因此(4)空填“x.swx.n”,修改背包的可容纳物品的重量;(5)处填“stacktop”,将下一个要考查的物品放入栈中。若该物品不满足放入背包的条件,则将该物品从背包中取出,因此将rep置为0,结束循环while(!k&rep)。将物品从背包中取出,即释放该物品在背包中所占的重量,并标记为不能放入到背包(job2),再将其放入到栈中;然后继续考查数组w中的下一个物品,因此需要结束循环while(top1&rep),将rep置为0,所以第(6)处应该填“rep0”。在第三处要求给出循环结束的条件,即可以继续选取物品的条件,在此处填“top1&!k”。 试题五阅读下列程序说明和C代码,将应填入(n)处的字句写在答卷的对应栏内。【说明】定义类Table的私有数据成员x和y,分别用于表示九九表中的两个乘数(x*y),它们都是int型的数据。完成类Table的成员函数print()的定义,该函数以“x*yz”的格式打印出九九表中的一个乘法算式,请使用格式化输出函数printf实现。完成类Table9的成员函数print()的定义,该函数调用基类Table的print()函数,将九九表输出到屏幕。补充主函数,在屏幕上输出九九表,以便测试所定义的类的正确性。源程序文件test8_3.cpp清单如下: #include#includeclass Table (1) int z; public: void print(int x,int y,int z); void Table:print (int x,int y,int z) (2)class Table9:public Tablepublic: void print();void Table9:print() (3) int x,y,z; for (i1;i10;i) for(j1;ji1;j) xi; yj; zi*j; Table:print(y,x,z); printf(n);main() /*4试题五 【答案】(1)int x; int y; (2)printf( %d*%d%d ,x,y,z); if(z10) printf( ); (3)int i,j; (4)Table9 t_9; t_9.print(); 【解析】主要考查考生将具体问题抽象为类,将类的定义补充完整,并进行类定义测试的能力。注意(2)中格式化输出函数printf的使用格式,%d代表输出的为整型。 试题六【说明】下面是一个Applet程序,其功能是建立2个文本区域,一个为编辑区,一个为只读区;建立2个按钮,一个实现将编辑区中被鼠标选定的文本内容拷贝到只读区中,一个实现将只读区的全部文本内容清空。程序运行结果如图3所示。图3import java.awt.*;import java.applet.*;/*/public class ex3_6 extends Applet private Button okBtn, clearBtn;private String strMessage;private TextArea tArea1, tArea2;public void init()strMessage Hello! Welcome to the test! n Wish you good luck!;tArea1 new TextArea( 10, 25 ); (1);tArea2 new TextArea( 10, 25 ); (2);okBtn new Button( Copy );clearBtn (3);add( tArea1 );add( tArea2 );add( okBtn );add( clearBtn );public boolean action( Event e, Object o ) if( e.target okBtn ) tArea2.setText(4); else if( e.target clearBtn ) (5); return true;ex3_6.html ex3_6 试题六 【答案】(1)tArea1.setText(strMessage)(2)tArea2.setEditable( false )(3)new Button( Clear )(4)tArea1.getSelectedText()(5)tArea2.setText( )【解析】本题主要考查Applet窗口、其事件处理机制以及对文本区域的相关操作。解题关键是熟悉TextArea的基本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论