您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 全国计算机技术与软件专业技术资格(水平)考试全真模拟试卷(三)下午试题
全国计算机技术与软件专业技术资格(水平)考试全真模拟试卷(三)下午试题(考试时间14∶00~16∶30,共150分钟)本试卷共六道试题,满分75分。●试题一阅读以下说明和流程图(如图1所示),回答问题1至问题4,将答案写在答卷的对应栏内。【说明】本流程图是将中缀表示的算术表达式转换成后缀表示。如中缀表达式(A-(B*C+D)*E)/(F+G))的后缀表示为ABC*D+E*-FG+/为了方便,假定变量名为单个英文字母,运算符只有+、-、*、/(均为双目运算符,左结合),并假定所提供的算术表达是非空且语法是正确的。另外,中缀表示形式中无空格符,但整个算术表达式以空格符结束。流程图中使用的符号的意义如下:数组IN[]存储中缀表达式;数组POLISH[]存储其后缀表达式;数组S[]是一个后进先出栈;函数PRIOR(CHAR)返回符号CHAR的优先级,各符号的优先级见表2:表2CHARPRIOR(XHAR)*/4+-3(2)1【问题1】填充流程图中①的判断条件。【问题2】写出子程序A的功能,并顺序写出实现该功能的操作【问题3】写出子程序B的功能,并顺序写出实现该功能的操作。【问题4】中缀表达式(A+B-C*D)*(E-F)/G经该流程图处理后的输出是什么?【流程图】图1●试题二阅读下列程序和控制流图,将应填入(n)的字句写在答题纸的对应栏内。【程序】图2控制流图下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度。intGetMax(intn,intdatalist[]){intk=0;for(intj=1;jn;j++)if(datalist[j]datalist[k])k=j;returnk;}【控制流图】【问题1】该程序的控制流图中A~E分别是什么?【问题2】计算控制流图的McCabe环路复杂性。【问题3】用基本路径覆盖法给出测试路径。【问题4】为各测试路径设计测试用例。●试题三请补充函数fun(),该函数的功能是:只保留字符串中的大写字母,删除其他字符,结果仍保存在原来的字符串中,由全局变量m对删除后字符串的长度进行保存。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#includestdio.h#includeconio.hintm;voidfun(char*s){inti=0,j=0;char*p=s;while(*(p+i)){if(*(p+i)=′A′&&*(p+i)=′Z′){(1);}(2);}s[j]=′\0′;(3);}main(){charstr[80];clrscr();printf(\nEnterastring:);gets(str);printf(\n\nThestringis:s\n,str);fun(str);printf(\n\nThestringofchangingis:s\n,str);printf(\n\nThelengthofchangedstringis:d\n,m);}●试题四阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。【程序4.1说明】“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,w2,...,wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。如下程序均能求得“背包问题”的一组解,其中程序4.1是“背包问题”的递归解法,而程序4.2是“背包问题”的非递归解法。【程序4.1】#includestdio.h#defineN7#defineS15intw[N+1]={0,1,4,3,4,5,2,7};intknap(ints,intn){if(s==0)return1;if(s0||(s0&&n1))return0;if((1))){printf(″%4d″,w[n]);return1;}return(2);}main(){if(knap(S,N))printf(″OK!\n″);elseprintf(″NO!\n″);}【程序4.2】#includestdio.h#defineN7#defineS15typedefstruct{ints;intn:intjob;}KNAPTP;intw[N+1]={0,1,4,3,4,5,2,7};intknap(ints,intn);main(){if(knap(S,N))printf(″OK!\n″);elseprintf(″NO!\n″);}intknap(ints,intn){KNAPTPstack[100],x;inttop,k,rep;x.s=s;x.n=n;x.job=0;top=l;stack[top]=x;k=0;while((3)){x=stack[top];rep=1;while(!k&&rep){if(x.s==0)k=1;/*已求得一组解*/elseif(x.s0||x.n=0)rep=0;else{x.s=(4);x.job=1;(5)=x;}}if(!k){rep=1;while(top=1&&rep){x=stack[top--];if(x.job==1){x.s+=w[x.n+1];x.job=2;stack[++top]=x;(6);}}}}if(k){/*输出一组解*/while(top=1){x=stack[top--];if(x.job==1)printf(″%d\t″,w[x.n+1]);}}returnk;}●试题五阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。【说明】①定义类Table的私有数据成员x和y,分别用于表示九九表中的两个乘数(x*y),它们都是int型的数据。②完成类Table的成员函数print()的定义,该函数以“x*y=z”的格式打印出九九表中的一个乘法算式,请使用格式化输出函数printf实现。③完成类Table9的成员函数print()的定义,该函数调用基类Table的print()函数,将九九表输出到屏幕。④补充主函数,在屏幕上输出九九表,以便测试所定义的类的正确性。源程序文件test8_3.cpp清单如下:#includeiostream.h#includestdio.hclassTable{(1)intz;public:voidprint(intx,inty,intz);};voidTable::print(intx,inty,intz){(2)}classTable9:publicTable{public:voidprint();};voidTable9::print(){(3)intx,y,z;for(i=1;i10;i++){for(j=1;ji+1;j++){x=i;y=j;z=i*j;Table::print(y,x,z);}printf(\n);}}main(){//**4]●试题六【说明】下面是一个Applet程序,其功能是建立2个文本区域,一个为编辑区,一个为只读区;建立2个按钮,一个实现将编辑区中被鼠标选定的文本内容拷贝到只读区中,一个实现将只读区的全部文本内容清空。程序运行结果如图3所示。图3importjava.awt.*;importjava.applet.*;/*appletcode=ex3_6.classwidth=800height=400/applet*/publicclassex3_6extendsApplet{privateButtonokBtn,clearBtn;privateStringstrMessage;privateTextAreatArea1,tArea2;publicvoidinit(){strMessage=Hello!Welcometothetest!\n+Wishyougoodluck!;tArea1=newTextArea(10,25);(1);tArea2=newTextArea(10,25);(2);okBtn=newButton(Copy);clearBtn=(3);add(tArea1);add(tArea2);add(okBtn);add(clearBtn);}publicbooleanaction(Evente,Objecto){if(e.target==okBtn)tArea2.setText((4));elseif(e.target==clearBtn)(5);returntrue;}}ex3_6.htmlHTMLHEADTITLEex3_6/TITLE/HEADBODYappletcode=ex3_6.classwidth=800height=400/applet/BODY/HTML
本文标题:全国计算机技术与软件专业技术资格(水平)考试全真模拟试卷(三)下午试题
链接地址:https://www.777doc.com/doc-2688563 .html