软件水平考试(初级)程序员下午(应用技术)模拟试卷5(共57题)_第1页
软件水平考试(初级)程序员下午(应用技术)模拟试卷5(共57题)_第2页
软件水平考试(初级)程序员下午(应用技术)模拟试卷5(共57题)_第3页
软件水平考试(初级)程序员下午(应用技术)模拟试卷5(共57题)_第4页
软件水平考试(初级)程序员下午(应用技术)模拟试卷5(共57题)_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

软件水平考试(初级)程序员下午(应用技术)模拟试卷5(共8套)(共57题)软件水平考试(初级)程序员下午(应用技术)模拟试卷第1套一、流程图题(本题共1题,每题1.0分,共1分。)1、如果公司内网PC不能从DHCP服务器获取IP地址,则首先应该检查(5);若在PC中使用ping命令分别查询“sinA.com.cn”和其对应的IP地址94所得结果如图3-3所示,则应该检查(6);若所有PC通过DHCP服务正确获取了IP地址,但均无法访问Internet,则应该检查(7)。(5)~(7)备选答案:A.外网的连通性B.内网的连通性C.DNS服务器的配置是否正确标准答案:BCA知识点解析:暂无解析二、C语言题(本题共4题,每题1.0分,共4分。)2、阅读下列说明和C代码,将应填入(n)处的字句写在对应栏内。【说明】本题给出四个函数,它们的功能分别是:1.intpush(PNODE*top,inte)是进栈函数,形参top是栈顶指针的指针,形参e是入栈元素。2.intpop(PNODE*top,int*e)是出栈函数,形参top是栈顶指针的指针,形参e作为返回出栈元素使用。3.intenQueue(PNODE*tail,inte)是入队函数,形参tail是队尾指针的指针,形参e是入队元素。4.intdeQueue(PNODE*tail,int*e)是出队函数,形参tail是队尾指针的指针,形参e作为返回出队元素使用。以上四个函数中,返回值为。表示操作成功,返回值为-1表示操作失败。栈是用链表实现的;队是用带有辅助结点(头结点)的单向循环链表实现的。两种链表的结点类型均为:typedefstructnode{intvalue;structnode*next;}NODE,*PNODE;【函数1】intpush(PNOOE*top,inte){PNODEp=(PNODE)malloc(sizeof(NODE));if(!p)return-1;p->value=e;(1);*top=p;return0;}【函数2】intpop(PNODE*top,int*e){PNODEp=*top;if(p==NULL)return-1;*e=p->value;(2);free(p);return0;}【函数3】intenQueue(PNODE*tail,inte){PNODEp,t;t=*tail;p=(PNODE)malloc(sizeof(NODE));if(!p)return-1;p->value=e;p->next=t->next;(3);*tail=p;return0;}【函数4】intdeQueue(PNODE*tail,int*e){PNODEp,q;if((*tail)->next==*tail)return-1;p=(*tail)->next;q=p->next;*e=q->value;(4)=q->next;if(,tail==q)(5);free(q);return0;}标准答案:(1)p->next=*top(2)*top=p->next或*top=(*top)->next(3)t->next=p或(*tail)->next=p(4)p->next或(*tail)->next->next(5)*tail=p或*tail=(*tail)->next知识点解析:(1)插入结点p后,p应当指向插入前头结点,所以填入p->next=*top。(2)出栈后,头指针应指向它的下一结点,所以填入*top=p->next或*top=(*top)->next。(3)入队时,需要将结点插入队尾,所以应当填入(*tail)->next=p或t->next=p(t也指向尾结点)。(4)出队时,需要删除队头结点,通过(*tail)->next可以得到对队头结点的引用。(4)处是正常删除队头结点的情况,空格处应填入头结点指向下一结点的指针,即p->next或(*tail)->next->next。(5)处是需要考虑的特殊情况,即队列中最后一个元素出队后,要更新队尾指针,即填入*tail=p或*tail=(*tail)->next。3、阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。【说明】以下【C程序】能将自然数1,2,…,N2按蛇形方式逐个存入N阶矩阵。换言之,程序从anO开始到aOn。为止(n=N-1)顺序填入自然数,交替地对每一斜列从左上元素向右下元素或从右下元素向左上元素存数。例如,当N=5时,程序输出结果如图2-12所示;当N=8时,程序输出结果如图2-13所示。【C程序】#include<stdio.h>#defineSIZE10inta[SIZE][SIZE],k;main(){inti,j,n,N;for(N=3;N<=SIZE;N++){k=1;makeArray(n=N-1);printf("\nN=%d;\n",n+1);for(i=0;i<=n;i++){for(j=0;j<=n;j++)printf("%4d",a[i][j]);printf("\n");}}}makeline(introw_start,intcol_start,introwend){/*完成矩阵一条斜线的整数填写*/inti,j,sign=(1);for(i=row_start,j=colstart;(2);i+=sign,j+=sign)a[i][j]=k++;}makeArray(intn){/*完成矩阵每条斜线的整数填写*/intd;for(d=1;d<=(3);d++)if(d<=n)if(d%2)makeline((4));elsemakeline((5));elseif(d%2)makeline((6));elsemakeline((7));标准答案:(1)row_start<row_end?1:-1或((rowend-rowstart)>0)*2-1或其他等价的代码形式(2)(row-end-i)*sign>=0或其等价的代码形式(3)2*n+1或其等价的代码形式(4)n,d-1,n+1-d(5)n+1-d,0,n(6)2*n-d+1,n,0(7)0,dn-1,2*n-d+1知识点解析:这是一道要求读者掌握二维数组应用的程序设计题。本题的解答思路如下。本程序由主函数main、函数makeline和函数makeArray组成。函数makeArray通过对函数makeline的调用,每次形成矩阵的一条斜线,直到完成整个矩阵。主函数main通过调用函数makeArray分别形成了1阶至10阶(由常量SIZE决定)的蛇形矩阵,并将其输出。函数makeline的3个参数分别为起点的行号、列号及终点的行号。sing是行列号的增量。当从人上到右下方填数时,变量sing值为1,此时终点行号(row_end)大于起点行号(row_start);当从右下方到左上方填数时,变量sing值为-1,此时终点行号小于起点行号。(1)空缺处所填写内容的功能是对变量sing赋值,应填入“row_start<row_end?1:-1”,或“((row_end-row_start)>0)*2-1”,或其他等价的代码形式。函数makeline中的for循环是对斜线的元素进行赋值。(2)空缺处是循环的结束条件,所填入的内容是“(row_end-i)*sign>=0”。函数makeArray通过多次调用makeline形成矩阵的各条斜线。顺序是从左下角填起,第奇数条斜线从右下方向左上方填写,第偶数条斜线从左上方向右下方填。对于第d条斜线,如果在主对角线左下(即d<=n),其左上角的行号、列号分别为n+1-d和0,右下角的行号、列号分别为n和d-1。而(4)、(5)空缺处所填写的语句是处理主对角线左下的各条斜线,根据斜线方向和起止位置,应分别填入“n,d-1,n+1-d”和“n+1-d,0,n”。如果在主对角线右上,其左上角的行号、列号分别为0和d-n-1,右下角的行号、列号分别为2*n-d+1和n。(6)、(7)空缺处所填写的语句是处理主对角线右上的各条斜线。根据斜线方向利起止位置,应分别填入“2*n-d+1,n,0”和“0,d-n-1,2*n-d+1”。需要注意的是:函数makeArray中的n不是阶数N,而是N-1。函数makeArray通过调用函数makeline形成矩阵的2*n+1条斜线。而(3)空缺处是控制for循环的终值,其所填写的内容是“2*n+1”。阅读以下技术说明和问题模型图,根据要求回答问题1和问题2。【说明】某大学城图书馆需要在无线阅览厅的某些位置上放置无线接入点AP(AccessPoin)。假设每个无线AP覆盖范围的半径是6米,因此必须使得每台笔记本电脑上的无线网卡到某个无线AP的直线距离不超过6米。为了简化问题,假设所有无线网卡在同一直线上,并且无线AP沿该直线放置。该问题可以建模为如图1-16所示,其中直线表示无线网卡所在的直线,实心正方形表示无线网卡。现利用贪心策略实现用尽可能少的无线AP覆盖所有的无线网卡。实现贪心算法的流程如图1-17所示。其中,①d[i](1≤i≤N)表示第i张无线网卡到通道A端的距离,N表示无线网卡的总数,无线网卡的编号按照无线网卡到通道A端的距离从小到大进行编号;②s[k]表示第k(k≥1)个无线AP到通道A端的距离。算法结束后k的值为无线AP的总数。4、请填补图1-17流程图中(1)-(4)空缺处的内容。标准答案:(1)k=0(2)j<=N或其等价形式(3)k=k+1或其等价形式(4)d[i]+6或其等价形式知识点解析:本试题的题干说明中已将无线网卡分布问题建模(如图1-16所示)。其中,直线表示无线网卡所在的直线,实心正方形表示无线网卡。而要求解的问题是要求如何在该直线上布局无线AP,使其能覆盖所有的无线网卡,并且所用无线AP的数量要尽可能的少。这是一个通过进行一系列选择求最优解的问题。分析该问题,发现其具有最优子结构,并且具有贪心选择性质,故该问题可以用贪心算法来求解。贪心算法思想是:问题的规模为N,从第1个无线网卡(最左端)开始布局无线AP,把第1个无线AP放置在该无线网卡右方的6m处,此时该无线AP会覆盖从第1个无线网卡到该无线网卡右方直线长度为12m的所有无线网卡,假设覆盖了N1个无线网卡。此时问题规模变成了N-N1,接着把第1个无线AP覆盖的无线网卡去掉,再从N-N1中选择第1个(最左端)无线网卡开始布局无线AP,将第2个无线AP放置在该无线网卡右方的6m处。依此布局,直到覆盖所布的无线网卡。图1-20是问题解的模型。其中,直线表示无线网卡所在的直线,实心正方形表示无线网卡,实心圆形表示无线AP,虚线圆以对应无线AP为圆心,直径为无线AP的覆盖范围,即对应无线AP的覆盖范围(12米)。实现贪心算法的流程见图1-17。由于“算法结束后k的值为无线AP的总数”,因此在算法开始处需要对变量k赋初值,即(1)空缺处所填写的内容是“k=0”。该贪心算法中,N表示无线网卡的总数,且无线网卡的编号按照无线网卡到通道A端的距离从小到大进行编号,d[i]1≤i≤N)表示第i个无线网卡到通道A端的距离。当判断第i个无线网卡未超过无线网卡总数N,而求解下一个无线网卡(即第i+1个无线网卡,或第j个无线网卡)所归属的无线AP时,也需要判断第j个无线网卡是否超过无线网卡总数N,以及第j个无线网卡与第j个无线网卡之间的距离是否超过12米,因此(2)空缺处所在的判断条件是“j<=N&&d[i]-d[i]<=12”,即该空缺处所填写的内容是“j<=N”或其等价形式。若第j个无线网卡未超过无线网卡总数N,且第j个无线网卡与第j个无线网卡之间的距离未超过12米,则可以求解再下一个无线网卡(即第i+2个无线网卡,或第j+1个无线网卡)所归属的无线AP。反之,则需要记录无线AP的总数k,即(3)空缺处所填写的内容是“k=k+1”或其等价形式;以及记录第A(A)1)个无线AP到通道A端的距离,即(4)空缺处所填写的内容是“d[i]+6”或其等价形式。当求解完第k个无线AP(覆盖了N1个无线网卡)的布局后,需要把第A个无线AP覆盖的无线网卡去掉,再从N-N1中选择第1个(最左端)无线网卡开始布局第k+1个无线AP。依此不断求解,直到覆盖所有的无线网卡。5、该贪心算法的时间复杂度为(5)。标准答案:(5)O(N)或O(n)知识点解析:虽然该贪心算法中包含两个循环,但实际上只是遍历所有无线网卡一次,因此算法复杂度是O(N)。三、VB题(本题共1题,每题1.0分,共1分。)6、阅读以下应用说明以及用VisualBasic语言编写的程序代码,将应填入(n)处的字句写在答题纸的对应栏内。【应用4.1】设应用程序的运行窗口内有一个文字标签(Label)以及一个框架,其中有三个复选框(chk1,chk2,chk3),各个复选框单击事件过程的程序代码如下:PrivateSubchkl_Click()Label.fontBold=chkl.ValueEndSubPrivateSubchk2_Click()Label.fontltalic=chk2.ValueEndSubPrivateSubchk3_Click()Label.fontUnderLine=chk3.ValueEndSub三个复选框chkl、chk2、chk3的功能分别是:(1)。【应用4.2】设应用程序的运行窗口内有两个文本框Txt1和Txt2,其初始内容为空。在Txt1文本框中输入一个数值,当光标离开此文本框(例如进入文本框Txt2)时,执行的程序代码如下:PrivateSubTxt1_LostFocus()dimxaSdoublex=Val(Txtl.Text)工fx<0Orx>100ThenTxtl.Text=""MsgBox$("请重新输入!")Txtl.SetFocusElseTxt2.Text=Txt1.TextEndIfEndSub该程序代码的功能是:若在文本框Txtl中输入的数值小于0或大于100,当光标离开此文本框时,(2);否则,将其值复制到文本框Txt2中。【应用4.3】在下面的应用中,当窗口内发生C1ick事件时,窗口内将显示如图2-4所示的杨辉三角(每一行都是二项式展开的系数)。请完善程序代码。PrivateSubFormClick()Dimi,j,cAsInteger,StrTempASStringDima(9)AsIntegera(0)=0=a(1)=l:StrTemp=Str(a(1))+Space(3)CurrentX=(ScaleWidth-TextWidth(StrTemp))/2PrintStrTempForj=2TO9a(j)=1ForC=j-1TO2Step-1a(c)=(3)Next(4)=""Forc=1TojStrTemp=StrTemp&Str((5))&Space(5-Len(Str(a(c))))NextCurrentX=(ScaleWidth-TextWidth(StrTemp))/2PrintStrTempNextEndSub标准答案:(1)对文字标签中的文字,分别控制其粗体、斜体和下划线设置;或含义相同的文字描述(2)将该文本框清空:弹出对话框,提示重新输入:光标定位于该文本框中;或含义相同的文字描述(3)a(c)+a(c-1)(4)StrTemp(5)a?知识点解析:本题考查VisualBasic中常用控件的属性设置及事件处理。对于同一框架中的一组单选按钮,只能有一个被选中,用户选中一个时,另一个就自动呈现取消选中状态。这种效果是系统自动赋予的,无须编程。对于复选框,则可以同时选中多个,每个复选框是独立选择的,单击复选框就是改变该复选框的选中状态。因此,复选框的Click事件的程序代码中,还需要判断是选中还是取消选中。单选钮的属性为Value,其值为True表示选中,为False表示未选中(默认)。复选框的属性为Value,其值为0表示未选中(默认),1表示选中,2表示禁用。fontBold、fontltalic和fontUnderLine分别表示文字的粗体属性、斜体属性和下划线属性,因此应用4.1中,复选框chk1、chk2、chk3分别控制文字标签中文字的粗体、斜体和下划线设置。应用4.2程序代码的功能是:若在文本框Txt1中输入的数值小于0或大于100,当光标离开此文本框时,将该文本框清空,弹出对话框并提示重新输入,光标定位于该文本框中;否则,将其值复制到文本框Txt2中。应用4.3在窗体中显示杨辉三角(每一行都是二项式展开的系数),观察元素的值可知,值不等于1的元素由其左上角和右上角的元素相加得到。例如,若已经计算出第四行的所有元素,如下所示,然后需求出第五行的所有元素,每行的元素存储在一维数组a中。a(1)a(2)a(3)a(4)第四行:1331第五行上的元素自左至右表示为a(1)、a(2)、a(3)、a(4)、a(5),如下所示。a(1)a(2)a(3)a(4)第四行:1331第五行:14641a(1)a(2)a(3)a(4)a(5)先设置最后一个元素a(5)等于1,再根据第四行上的a(4)和a(3)求出第五行上的a(4),根据第四行的a(3)和a(2)求出第五行上的a(3),依此类推,可求出第五行的每个元素(每行的第一个元素等于1,无需另外计算)。推广至其他行,可计算出杨辉三角中的每个数并以串的方式输出,对应的程序代码如下:Forj=2To9’计算出第2行到第9行的每个数并输出a(j)=1’每行的最后一个数为1Forc=j-1To2Step-1a(c)=a(c)+a(c-1)’计算出值不等于1的元素NextStrTemp=""’字符串初始化,每行所有数串接成一个字符串输出ForC=1TojStrTemp=StrTemp&Str(a(c))&Space(5-Len(Str(a(C))))NextCurrentX=(ScaleWidth-TextWidth(StrTemp))/2PrintStrTempNext四、C++题(本题共1题,每题1.0分,共1分。)7、阅读以下说明和C++程序,将应填入(n)处的字句写在答题纸的对应栏内。说明以下程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类Triangle、Rectangle和Square分别表示三角形、矩形和正方形;抽象类Figure提供了一个纯虚拟函数getArea(),作为计算上述三种图形面积的通用接口。c++程序#include<iostream.h>#inclule<math.h>classFigure{public:virtualdoublegetArea()=0;//纯虚拟函数};classRectangle:(1){protected:doubleheight;doublewidth;public:Rectangle(){};Rectangle(doubleheight,doublewidth){this->height=height;this->width=width;}doublegetArea(){return(2);}classSquare:(3){public:Square(doublewidth){(4);}};classTriangle:(5){doublela;doublelb;doublelc;public:Triangle(doublela,doublelb,doublelc){this->la=la;this->lb=’lb;this->lc=lc;}doublegetArea(){doubles=(la+lb+lc)/2.0;returnsqrt(s*(s-la)*(s-lb)*(s-lc));}};voidmain(){Figure*figures[3]={newTriangle(2,3,3),newRectangle(5,8),newSquare(5)};for(inti=0;i<3;i++){com<<"figures["<<i<<"]area="<<(figures[i])->getArea0<<endl;}标准答案:(1)publicFigure(2)height*width(3)publicRectangle(4)height=this->width=width(5)publicFigure知识点解析:本题以C++语言为载体,考查面向对象程序设计中的三个重要机制——继承、抽象类和动态绑定的应用。继承是父类和子类之间共享数据和方法的机制。这是类之间的一种关系,在定义和实现一个类的时候,可以在一个已经存在的类的基础上进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。动态绑定是实现动态多态的基础,在C++中,重置是一种动态多态。重置(overriding)的基本思想是,通过一种动态绑定机制的支持,使得子类在继承父类界面定义的前提下,用适合于自己要求的实现去置换父类中的相应实现。抽象类的主要作用在于为派生类提供一个基本框架和一个公共的对外接口。在C++语言中,通过定义纯虚函数来定义抽象类。纯虚函数是指只给出函数声明而没有给出实现(包括在类定义的内部和外部)的虚成员函数,其格式为:在函数原型的后面加上符号“=0”。包含纯虚函数的类称为抽象类。一个抽象类的派生类应对其抽象基类的所有纯虚成员函数进行实现。本程序的功能是通过一个公共接口getArea()来计算不同形状图形的面积。题目中定义了4个类Figure、Rectangle(长方形)、Square(正方形)和Triangle(三角形)。在完成本题目时,一个重要的环节是确定这4个类之间的继承关系。第一步:确定基类。题目的说明已经指出,类Figure是一个抽象类,那么Figure只能作为基类。第二步:确定把Figure作为直接基类的派生类。理论上,其余的3个类都可以作为Figure的直接派生类。我们先假定Rectangle、Square和Triangle都是Figure的直接派生类,下面结合程序来验证一下这种继承关系是否合理:▲类Rectangle是Figure的派生类,在Rectangle中将getArea进行了重置,所以第(2)空应给出getArea的实现体:计算长方形的面积,即height*width。这时需要考虑的另一个问题是继承的方式。在C++中继承有三种方式:public、private和protected,它用于说明派生类的实例的用户以及派生类的派生类对该派生类的基类成员的访问控制。由于无法确定Rectangle是否会作为其他类的基类(若存在这种情况,该类中的某些成员函数可能会是其他类的公共接口),所以选择public继承方式,则第(1)空应填publicFigure。▲类Triangle是Figure的派生类,在该类中也给出了getArea的实现,所以第(5)空应该填publicFigure。▲对类Square来说,它的基类可能有两个:Figure和Rectangle。Square本身是一种图形,同时Square也是一种特殊的Rectangle。但是在类Square中没有提供对方法getArea的重新定义,所以Square不可能作为Figure的派生类。那么,它的基类只能是Rectangle,所以第(3)空应填publicRectangle。显而易见,第(4)空是要给出计算正方形面积的操作。这时可以借助其基类Rectangle的getArea方法,此时需要做的是将正方形的边长width传递到基类Rectangle的属性height和width中即可,所以第(4)空应填height=this->width=width。这也是第(3)空选择public继承方式的原因。[*]此时我们可以得出题目中4个类的继承关系如下:其中箭头表示继承关系。五、JAVA题(本题共1题,每题1.0分,共1分。)8、阅读以下说明和Java代码,将应填入(n)处的语句写在对应栏内。【说明】本程序通过移动滑动条修改颜色RGB值,从而控制颜色。程序中有一个面板、3个标签和3个滑动条,标签和滑动条一一对应,分别对应三原色红、绿、蓝,任意拖动其中的一个滑动条,所对应的颜色值就会发生变化,面板的颜色也会发生对应的变化,如下图所示,滑动条值的范围是0~255。【Java代码】importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclasssimpleextendsJFrameimplementsAdjustmentListener{publicsimple(){setTitle("simple");setSize(300,200);addWindowListener(newWindowAdapter(){publicvoidwindowClosing((1)){System.exit(0);}});ContainercontentPane=getContentPane();JPanelp=(2);p.setLayout(newGridLayout(3,2));p.add(redLabel=newJLabel("Red0"));p.add(red=newJScrollBar(Adjustable.HORIZONTAL,0,0,0,255));red.setBlocklncrement(16);red.addAdjustmentListener(this);p.add(greenLabel=(3)("Green0"));p.add(green=newJScrollBar(Adjustable.HORIZONTAL0,0,0,255));greensetBIocklncrement(16);green.addAdjustmentListener(this);p.add(blueLabel=newJLabel("Blue0"));p.add(btue=newJScrollBar(Adjustable.HORIZONTAL,0,0,0,255));blue,setBIocklncrement(16);blue.addAdjustmentListener(this);contentPane.add(p,"South");colorPanet=newJPanel();colorPanet.setBackground(newColor(0,0,0));contentPane.add((4),"Center");}publicvoidadjustmentValueChanged(AdjustmentEventevt){redLabel.setText("Red"+red.getValue());greenLabel.setText("Green"+green.getValue());blueLabel.setText("Blue"+blue.getValue());coiorPanel.setBackground(newColor(red.getValue(),green.getValue(),blue.getValue()));colorPanel.repaint();}publicstaticvoidmain(String[]args){JFramef=(5);f.show();}privateJLabelredLabel;privateJLabelgreenLabel;privateJLabelblueLabel;privateJScrollBarred;privateJScroilBargreen;privateJScrollBarblue;privateJPanelcolorPanel;标准答案:(1)WindowEvente(2)newJPanel()(3)newJLabel(4)colorPanel(5)newsimple()知识点解析:本题考查在Java中实现对面板颜色的控制。题目要求三原色红、绿、蓝,通过任意拖动其对应的一个滑动条来改变,而面板的颜色也会发生对应的变化。这需要我们了解Java中对滑动条和颜色进行定义的类。下面我们来分析程序。第(1)空在类simple的构造函数中,这个类是继承JFrame这个框架类的,这个构造函数的作用是创建一个框架。很明显此空是函数windowClosing()的参数,而这个函数的作用我们不难看出是关闭框架用的,其参数是WindowEvente,因此,此空答案就为WindowEvente。第(2)空是给JPanel类型的变量p赋一个值,JPanel类型是控制板类型,在程序上面申请了一个容器,此空应该是在容器中创建一个控制板,而Java中一般用关键字new来创建对象,因此,此空答案为newJPanel()。第(3)空是给变量greenLabel赋一个初值,从程序中我们不难看出greenLabel是一个标签类型的变量,且其中存放的是绿色的值。结合程序中上下红和蓝的处理我们也不难推断出此空的答案为newJLabel。第(4)空是容器对象contentPane的add()函数的参数,这个函数的作用是往其对象中增加内容,其第一个参数是要添加的对象,第二个参数是添加的位置,从程序中不难看出应该添加对象colorPanel,这是界面中下面的板块。因此,此空答案为colorPanel。第(5)空是给JFrame类型的变量f赋一个值,而JFrame是框架类simple的父类,那么变量f应该是一个框架对象,关键字new一般用来创建一个新的对象,因此,此空答案为newsimple()。软件水平考试(初级)程序员下午(应用技术)模拟试卷第2套一、流程图题(本题共1题,每题1.0分,共1分。)1、阅读以下说明和流程图,填补流程图中的空缺(1)~(9),将解答填入对应栏内。[说明]假设数组A中的各元素A(1),A(2),…,A(M)已经按从小到大排序(M≥1);数组B中的各元素B(1),B(2),…,B(N)也已经按从小到大排序(N≥1)。执行下面的流程图后,可以将数组A与数组B中所有的元素全都存入数组C中,且按从小到大排序(注意:序列中相同的数全部保留并不计排列顺序)。例如,设数组A中有元素:2,5,6,7,9;数组B中有元素:2,3,4,7;则数组C中将有元素:2,2,3,4,5,6,7,7,9。[流程图]标准答案:(1)i;(2)A(i);(3)B(j);(4)i;(5)j;(6)B(j);(7)A(i);(8)i;(9)i知识点解析:暂无解析二、C语言题(本题共4题,每题1.0分,共4分。)2、阅读以下说明和C程序,将应填入(n)处的字句写在答题纸的对应栏内。[说明]下面的程序按照以下规则输出给定名词的复数形式:a.若名词以“y”结尾,则删除y并添加“ies”;b.若名词以“s”、“ch”或“sh”结尾,则添加“es”;c.其他所有情况,直接添加“s”。[C语言程序]#include<stdio.h>#include<string.h>char*plural(char*word){intn;char*pstr;n=strlen(word);/*求给定单词的长度*/pstr=(char*)malloc(n+3);/*申请给定单词的复数形式存储空间*/if(!pstr||n<2)returnNULL;strcpy(pstr,word);/*复制给定单词*/if((1)){pstr[n-1]=’i-’;pstr[n]=’e’;pstr[n+1]=’s’;(2);}elseif(pstr[n-1]==’s’||pstr[n-1]==’h’&&((3)){pstr[n]=’e’;pstr[n+1]=’s’;pstr[n+2]=’\0’;}else{pstr[n]=’s’;pstr[n+1]=’\0’;}(4);}main(){inti;char*ps;charwc[9][10]={"chair","dairy","boss","circus","fly","dog","church","clue","dish");for(i=0;i<9;i++){ps=(5);printf("%s:%s\n",wc[i],ps);/*输出单词及其复数形式*/free(ps);/*释放空间*/}system("pause");}标准答案:(1)pstr[n-1]==’y’;(2)pstr[n+2]=’\0’;(3)pstr[n-2]=’c’||pstr[n-2]==’s’;(4)returnpstr;(5)plufal(wc[i])知识点解析:暂无解析3、阅读以下说明和C函数,将应填入(n)处的字句写在对应栏内。[说明]若一个矩阵中的非零元素数目很少且分布没有规律,则称之为稀疏矩阵。对m行n列的稀疏矩阵M,进行转置运算后得到n行m列的矩阵MT,如图3-1所示为了压缩稀疏矩阵的存储空间,用三元组(即元素所在的行号、列号和元素值、表示稀疏矩阵中的一个非零元素,再用一维数组逐行存储稀疏矩阵中的所有非零元素也称为三元组顺序表)。例如,图3-1所示的矩阵M相应的三元组顺序表如表3-1所示。其转置矩阵MT的三元组顺序表如表3-2所示。函数TransposeMatrix(MatrixM)的功能是对用三元组顺序表表示的稀疏矩阵M进行转置运算。对M实施转置运算时,为了将M中的每个非零元素直接存入其转置矩阵MT三元组顺序表的相应位置,需先计算M中每一列非零元素的数目(即MT中每一行非零元素的数目),并记录在向量num中;然后根据以下关系,计算出矩阵M中每列的第一个非零元素在转置矩阵MT三元组顺序表中的位置:cpot[0]=0cpot[j]=cpot[j-1]+num[j-1])/*j为列号*/类型ElemType,Triple和Matrix定义如下:typedefintElemType;typedefstruct{/*三元组类型*/intr,c;/*矩阵元素的行号、列号*/ElemTypee;/*矩阵元素的值*/}Triple;typedefstruct{/*矩阵的元组三元组顺序表存储结构*/introws,cols,elements;/*矩阵的行数、列数和非零元素数目*/Tripledata[MAXSIZE];}Matrix;[C语言函数]intTransposeMatrix(MatrixM){intj,q,t;int*num,*cpot;MatrixMT;/*MT是M的转置矩阵*/num=(int*)malloc(M.cols*sizeof(int));cpot=(int*)malloc(M.cols*sizeof(int));if(!num||cpot)returnERROR;MT.rows=(1);/*设置转置矩阵MT行数、列数和非零元素数目*/MT.cols=(2);MT.elements=M.elements;if(M.elements>0){for(q=0;q<M.cols;q++)num[q]=0;for(t=0;t<M.elements;++t)/*计算矩阵M中每一列非零元素数目*/num[M.data[t].c]++;/*计算矩阵M中每列第一个非零元素在其转置矩阵三元组顺序表中的位置*/(3);for(j=1;j<M.cols;j++)cpot[j]=(4);/*以下代码完成转置矩阵MT三元组顺序表元素的设置*/for(t=0;t<M.elements;t++){j=(5);/*取矩阵M的一个非零元素的列号存入j*//*q为该非零元素在转置矩阵MT三元组顺序表中的位置(下标)*/q=cpot[j];MT.data[q].r=M.data[t].c;MT.data[q].c=M.data[t].r;MT.data[q].e=M.data[t].e;++cpot[j];/*计算M中第j列的下一个非零元素的目的位置*/}/*for*/}/*if*/free(num);free(cpot);/*此处输出矩阵元素,代码省略*/returnOK;}/*TransposeMatrix*/标准答案:(1)M.cols;(2)M.rows;(3)cpot[0]=0;(4)cpot[j-1]+num[j-1];(5)M.data[t].c知识点解析:暂无解析4、阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。[说明]假设一个剧场有N*N个座位,顾客买票时可以提出任意有效的座号请求。下面用二维数组a[N][N]模拟剧场中的座位,a[i][j]等于0表示第i排第j列(0≤i,j≤N-1)的票尚未售出。函数intFind(inta[][N],intR,int*row,int*col)的功能是:在部分票已售出的情况下,找出剧场中的R*R个空座位,要求这些座位的排列形成一个正方形。若找到满足要求的一个座位排列,则函数返回1,并算出该正方形左上角的行、列号;若未找到,则返回0。例如,一个7×7个座位的剧场如下图(a)所示,已售出部分座位的剧场如下图(b)所示,图中阴影部分表示已售出的座位,从图(b)中找出的3×3正方形空座位如图(c)中斜线区所示。[C语言函数]intFind(inta[][N],intR,int*row,int*col){inti,j,k,c,t;intFOUND=0;for(i=0;!FOUND&&i<N-R+1;i++){/*从第0排开始查找*/(1);while(j<N-R+1&&!FOUND){for(k=0;(2)&&a[i][j+k]==0;k++);/*查找第i排连续的R个座位*/if(k>=R){/*找到第i排连续的R个空座位*/for(c=0;c<R;c++){/*查找其余的R*(R-1)个座位*/for(t=1;t<R;t++)if(a[(3)][j+c]!=0)break;if(t<R)break;}/*for*/if((4))FOUND=1;}/*if*/(5);}/*while*/}/*fori*/if(FOUND){*row=i-1;*col=j-1;/*计算正方形区域的左上角坐标*/return1;}return0;}标准答案:(1)j=0;(2)k<R;(3)i+t;(4)c>=R;(5)j++或j+=1知识点解析:暂无解析5、阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。[说明]某班级有N名学生,他们可根据自己的情况选修名称和数量不尽相同的课程。设N等于6,学生信息、所选课程及成绩用链表结构存储,如图5-1所示。程序中相应的类型定义如下:#defineN6structnode{charcname[5];/*课程名*/intgrade;/*成绩*/structnode*next;/*指针,指示某学生选修的下一门课程及成绩*/};structstudent{charxh[5];/*学号*/charname[20];/*姓名*/structnode*link;/*指针,指示出选修的课程及成绩链表*/}stud_info[n];Stud_info[]为一个全局数组。函数func(charkc[],int*num)的功能是统计选修了课程名为kc的学生的人数,并返回该课程的平均成绩(若无人选修该课程,则平均成绩为0),参数num带回选修课程kc的学生人数。[C语言函数]doublefunc(charkc[],int*num){inti,count=0,sum=0;/*count用于记录选修课程名为kc的学生的人数*/doubleavg=0.0;structnode*p;for(i=0;i<N;i++){p=(1);/*取第土个学生所修课程链表的头指针*/while(p){if((2)){sum=(3);count++;break;;}/*if*/p=p->next;}/*while*/}(4);if((5))avg=(double)sum/count;/*计算平均成绩*/returnavg;}/*func*/标准答案:(1)stud_info[i].link;(2)!strcmp(p->cname,kc);(3)sum+p->grade;(4)*num=count;(5)count!=0知识点解析:暂无解析三、C++题(本题共1题,每题1.0分,共1分。)6、阅读下列说明、图和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。[说明]已知对某载客车辆(Car)进行类建模,如图5-1所示,其中类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。[C++代码]constint(1)=7;//定义最多载客数constintMAXWHEELS=5;//定义最多轮胎数classBody{//此处代码省略};//车身类classPassenger{//此处代码省略};//乘客类classWheel{//此处代码省略};//车轮类classDriver{//司机类public:stringname;//表示第几路公交车司机Driver(stringdriverName):name((2)){};//构造函数};classEngine{//引擎类public:stringengineNo;//引擎编号Engine(stringengineNo){(3)->engineNo=engineNo;}//构造函数};classCar{//汽车类protected:Engine*engine;Driver*driver;Bodybody;Wheel*wheels[MAX_HEELS];Passenger*passengers[MAX_PASSENGERS];public:Car(Driver*driver){//构造函数this->driver=driver;engine=newEngine("TX6536型号引擎");intindex;for(index=0;index<MAX_HEELS;index++){wheels[index]=newWheel();}for(index=0;index<MAX_PASSENGERS;index++){passengers[index]=NULL;}}virtual~Car(){//析构函数for(intindex=0;index<MAX_WHEELS;index++)deletewheels[index];delete(4);}intgetPassengerNumber(){//获取车上乘客数量//此处代码省略}voidgetOnPassenger(Passenger*aPassenger){//乘客上车//此处代码省略}voidrun(){//开车if(driver==NULL){cout<<"司机尚未上车!";return;}//此处代码省略});voidmain(){Driverdriver("第五路公交车司机");Carcar((5));Passengerpassengers[MAX_PASSENGERS];for(intindex=0;index<MAXPASSENGERS;index++)//乘客上车处理car.getOnPassenger(&passengers[index]);car.run();}标准答案:(1)MAX_PASSENGERS;(2)driverName;(3)this;(4)engine;(5)&driver知识点解析:暂无解析四、JAVA题(本题共1题,每题1.0分,共1分。)7、阅读以下说明和Java程序代码,将应填入(n)处的字句写在答题纸的对应栏内。[说明]在下面的Java程序代码中,类SalesTicket能够完成打印票据正文的功能,类HeadDecorator与FootDecorator分别完成打印票据的抬头和脚注的功能。己知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。这是票据的抬头!这是票据正文!这是票据的脚注!---------------------------------------这是票据的抬头!这是票据的脚注![Java程序代码]publicclassSalesTicket{publicvoidprintTicket(){System.out.println("这是票据正文!");}}publicclassDecoratorextendsSalesTicket{SalesTicketticket;publicDecorator(SalesTickett){ticket=t;}publicvoidprintTicket(){if(ticket!=null)ticket.printTicket();}}publicclassHeadDecoratorextendsDecorator{publicHeadDecorator(SalesTickett){(1);}publicvoidprintTicket(){System.out.rintln("这是票据的抬头!");Super.printTicket();}}publicclassFootDecoratorextendsDecorator{publicFootDecorator(SalesTickett){(2);}publicvoidprintTicket(){super.printTicket();System.out.println("这是票据的脚注!");}}publicclassMain{publicstaticvoidmain(String[]args){DecoratorT=newHeadDecorator((3));T.(4);System.out.println("-----------------------------------------");T=newFootDecorator((5));T.printTicket();}}标准答案:(1)super(t);(2)super(t);(3)newFootDecoratro(newSalesTicke());(4)printTicket();(5)newHeadDecorator(null)知识点解析:暂无解析软件水平考试(初级)程序员下午(应用技术)模拟试卷第3套一、流程图题(本题共1题,每题1.0分,共1分。)1、阅读下列算法说明和算法,将应填入(n)处的语句写在对应栏内。1.【说明】实现连通图G的深度优先遍历(从顶点v出发)的非递归过程。【算法】第一步:首先访问连通图G的指定起始顶点v;第二步:从V出发,访问一个与v(1)p,再从顶点P出发,访问与p(2)顶点q,然后从q出发,重复上述过程,直到找不到存在(3)的邻接顶点为止。第三步:回退到尚有(4)顶点,从该顶点出发,重复第二、三步,直到所有被访问过的顶点的邻接点都已被访问为止。因此,在这个算法中应设一个栈保存被(5)的顶点,以便回溯查找被访问过顶点的未被访问过的邻接点。标准答案:(1)邻接的顶点(2)邻接的且未被访问的(3)未访问过(4)未被访问过的邻接点的(5)访问过知识点解析:本题考查连通图的深度优先遍历算法的非递归过程。在做题前,我们首先来了解一下图的遍历。和树的遍历类似,图的遍历也是从某个顶点出发,沿着某条搜索路径对图中每个顶点各做一次且仅做一次访问。连通图的深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。其关键是每次遍历都是往下直到最后再往回搜索,找到还未被访问过的邻接点的顶点,然后从该顶点出发,对它及下面的顶点进行深度优先遍历。下面来具体分析其算法。第(1)空在第二步中,在访问起始顶点v后应该访问的结点,那么这个结点肯定是与起始顶点v邻接的顶点,因此此空答案为“邻接的顶点”。第(2)空是在访问p顶点后应该访问的顶点,接下来应该也是访问与p顶点邻接的顶点,但这个时候p顶点的邻接顶点中有已经被访问过了的顶点,因此在访问前还需判断此顶点是否被访问过了,所以此空答案为“邻接的且未被访问的”。第(3)空也在第二步中,结合前后的内容,可以知道此空是要判断是否还可以找到与当前访问顶点邻接而未被访问的顶点,根据上面分析,如果找不到,才往回搜索,因此此空答案为“未访问过”。第(4)空是回退过程中要注意的地方,一般回退到还未被访问过的邻接点的顶点,接着访问这个未被访问过的邻接点。因此此空答案为“未被访问过的邻接点的”。第(5)空是存放在栈中的内容,栈具有后进先出的特点,根据上面对深度优先遍历的分析可以知道,在回退的过程中需要用到被访问过的顶点,而且回退的过程是按遍历的顶点的顺序回退的,越后被访问的顶点越先被回退,因此此空答案是“访问过”。二、C语言题(本题共3题,每题1.0分,共3分。)2、阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】实现矩阵(3行3列)的转置(即行列互换)。例如,输入下面的矩阵:100200300400500600700800900程序输出:100400700200500800300600900【函数】intfun(intarray[3][3]){inti,j,t;for(i=0;(1);i++)for(j=0;(2);j++){t=array[i][j];(3);(4);}}}main(){inti,j;intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};clrscr();for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",array[i][j]);printf("\n");}fun((5));printf("Convertedarray:\n");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",array[i][j]);printf("\n");}}标准答案:(1)i<3(2)j<i(3)array[i][j]=array[j][i](4)array[j][i]=t(5)array知识点解析:本题考查用C语言实现矩阵的转置。题目要求程序实现矩阵(3行3列)的转置,其关键是将当前行列对应的元素与其对应的列行元素互换。题目中给出了具体的矩阵元素和结构,下面来具体分析程序。第(1)空很明显是循环语句的判断条件,是上界条件,这个二重循环的作用是进行数组中元素的互换,而从题目中给出的已知条件可以判断出,这个数组是一个三维的数组,而在程序中下标是从0开始的,那么其上界应该是不大于3,因此这个空的答案分别是i<3。第(2)空也是循环的判断上界,在上面我们已经分析出了这个二重循环的作用是进行数组中元素的互换,而元素互换的过程是将当前行列对应的元素与其对应的列行元素互换,元素的下标都要在能互换的下标范围内,那么第二重循环的上界应该是第一重循环变量的当前值,因此此空答案为j<i。第(3)空在这个二重循环体中,从程序中不难发现,用一个临时变量f来存放要置换的值,接下来就是此空,那么应该是将其中一个值放到其转置后的位置,再结合上面分析,可以得出此空答案为array[i][j]=array[j][i]。第(4)空是紧接着上一空而来的,在上面的程序中已经将当前位置中的值保存到了临时变量t中,且把其对应的转置位置的元素值放到了这个位置,那么接下来应该是将临时变量中的值放到转置位置,因此此空答案为array[j][i]=t。第(5)空很明显是函数的参数,这个函数就是功能函数fun(),用来实现矩阵的转置,根据程序中函数的定义,它只有一个参数,这个参数是要被处理的数组。在主函数中,需要被处理的数组是array,这里我们需要注意在数组作为函数的形参时,一般是通过传递其地址来实现参数传递的,因此此空答案为array。3、阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】对20个数进行排序,可以利用选择法,即从后19个比较过程中,选择一个最小的与第一个元素交换,依次类推,即用第二个元素与后18个进行比较,并进行交换。【函数】#defineN20main(){inti,j,min,tem,a[N];printf("pleaseinputtwentynum:\n");for(i=0;i<N;i){printf("a[%d]=",i);scanf("%d",&a[i]);}printf("\n");for(i=0;i<N;i)printf(",",a[i]);printf("\n");for(i=0;(1);i){min=(2);for(j=(3);j<N;j++)if((4))min=j;tem=a[i];(5);a[min]=tem;}printf("Aftersorted\n");for(i=0;i<N;i++)printf(",",a[i]);}标准答案:(1)i<N-1(2)i(3)i+1(4)a[min]>a[j](5)a[i]=a[min]知识点解析:本题考查C语言中的排序算法。题目要求对20个数进行排序,并告诉我们利用选择法,即从后19个比较过程中,选择一个最小的与第一个元素交换,依此类推,即用第二个元素与后18个进行比较,并进行交换。它的每次排序的过程都是从元素中选取最小的一个排在当前排序序列的最前面,需要注意的是,程序中用数组的下标来协助完成排序。下面来具体分析程序。第(1)空是循环的判断条件,而这个循环是一个二重循环的第一重,从程序中不难分析出,这个二重循环的作用是完成排序的过程,且这个排序的元素存放在数组a中,元素的个数为N个,而数组的下标是从0开始的,根据题目的意思,最多到最后一个元素的时候就不需要再排序了,它就是最大的元素。那么循环的上界应该是不大于N-1,因此此空答案为i<N-1。第(2)空是给变量min赋一个值,根据题目要求,这个变量中存放的是当前排序序列中最小的元素的数组下标,而在开始排序之前,这里存放的是当前排序序列的第一个元素,每次参加排序的序列的第一个元素下标就是i,因此此空答案为i。第(3)空是给第二重循环的循环变量j赋一个初值,这重循环的作用是从当前位置后面的元素中选一个最小的元素排在当前位置的后一个位置,那么循环应该是从当前位置的后一个位置开始,因此此空答案为i+1。第(4)空是条件判断语句的判断条件,很明显,这个条件判断语句的作用是判断当前数组min中的值(最小元素)与当前位置元素的大小关系,如果小则继续与下一个元素比较,如果大则把数组中当前位置的元素的下标存放到min中,从min=j可以看出,应该是大,因此此空答案为a[min]>a[j]。第(5)空也在循环中,从程序中不难看出是用来调换序列中元素的位置,上面的程序是将a[i]的值存放到临时变量tem中,a[i]中存放的元素应该是参加排序的序列中最小的元素值,而数组中下标min指明了序列中最小元素在数组中的位置,此空的任务就是将最小的元素放到数组的i位置,因此此空答案为a[i]=a[min]。4、阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】已知某数列的前两项为2和3,其后继项根据当前最后两项的乘积按下列规则生成:(1)若乘积为一位数,则该乘积即为数列的后继项;(2)若乘积为二位数,则该乘积的十位数和个位数依次作为数列的两个后继项。本程序输出该数列的前n项以及它们的和。其中,函数sum(n,pa)返回数列的前n项之和,并将生成的前n项存放于首指针为pa的数组中。程序中规定输入的n值必须大于2并且不超过给定的常数值MAXNUM。例如:若输入n值为10,则程序输出如下内容:sum(10)=442361886424#include<stdio.h>#defineMAXNUM100intsum(intn,int*pa){intcount,total,temp;*pa=2;(1)=3;total=5;count=2;while(count++<n){temp+=*(pa-1)**pa;if(temp<10){total+=temp;*(++pa)=temp;}else{(2)=temp/10;total+=*pa;if(count<n){count++;pa++;(3)=temp%10;total+=*pa;}}}(4);}main(){intn,*p,*q,num[MAXNUM];do{printf("InputN=?(2<N<%d):",MAXNUM+1);scanf("%d",&n);}while((5));printf("\nsum(%d)=%d\n",n,sum(n,num));for(p=num,q=(6);p<q;p++)printf("%4d",*p);printf("\n");}标准答案:(1)*++pa(2)*++pa(3)*pa(4)return(total)(5)n<3||n>MAXNUM(6)p+n知识点解析:本题考查用C语言对数列的操作。通过程序说明部分的描述及实例,可以清楚地了解程序功能。由于真正的处理函数是sum(),而主函数只是输入数据,调用sum(),以及输出结果,所以我们可以先分析sum()。intsum(imn,int*pa){intcotmt,total,temp;*pa=2;(1)=3;程序说明部分已经提到数列的前两个元素为2和3。*pa存储了第一个元素“2”,很显然“3”应存在*(pa+1)中。又因为后面有语句“temp+=*(pa-1)**pa;”,这说明在求乘积时,pa是指向要运算数的后者,例如要求2*3,pa指向3,用*(pa-1)表示2。所以(1)空应填*(++pa),而不能用*(pa+1)。total=5;count=2;while(count++<n){temp+=*(pa-1)**pa;这里是求两数列元素的乘积。if(temp<10){total+=temp;*(++pa)=temp;}else{(2)=temp/10;对应程序说明,当乘积小于10时,直接把乘积作为数列的后继项;当乘积大于等于10时,把该乘积的十位数字和个位数字依次作为数列的两个后继项。这时应当把大于等于10的数(因为最大的数为9*9=81,所以都为两位数)分解为单个的数字,“temp/10”求出的是十位数字,所以存入当前数列元素的后继项,即(2)空应填*(++pa)。total+=*pa;统计当前数列和。if(count<n){如果当前数列元素个数没有达到指定值n,则把乘积的个位数(temp%10)作为数列的后继项;如果当前数列元素个数已经达到指定值n,则可以退出循环,返回主函数了。count++;pa++;(3)=temp%10;由于前面已经有“pa++”,所以(3)空应填*pa。total+=*pa;}}}(4);}又因为主函数有“printf("\nsum(%d)=%d\n",n,sum(n,num,));”,说明函数sum()返回了数列和。因此,(4)空应填return(total)。当分析完函数sum()的功能后,我们再来看main(),就显得十分简单了。do{printf("InputN=?(2<N<%d):",MAXNUM+1);scanf("%d",&n);}while((5));上面是输入n的值,n要保证是合法值才能继续下面的工作,所以当输入n不合法时,应重新输入n值。因此,(5)空应填n<3||n>MAXNUM。printf("\nsum(%d)=%d\n",n,sum(n,num));for(p=num,q=(6);p<q;p++)printf("%4d",*p);此for循环用于输出数列,循环终止条件是“p<q”,又因为num是数列首指针且n为数列长度,所以(6)空应填p+n。三、C++题(本题共1题,每题1.0分,共1分。)5、阅读以下说明,以及用C++在开发过程中所编写的程序代码,将应填入(n)处的字句写在对应栏内。【说明】在下面程序横线处填上适当的字句,3个(2)空填的是一样的。使其输出结果为:x=5x=6y=7x=8z=9【程序】#include<iostream.h>classX1{intx;(1);X1(intxx=0){x=xx;}(2)voidOutput(){cout<<"x="<<x<<end;}};(3)Y1:publicX1{inty;public:Y1(intxx=0,intyy=0);X1(xx){y=yy;}(2)voidOutput(){(4)Output();cout<<"y="<<y<<endl;}};classZ1:publicX1{intz:(5);Z1(

温馨提示

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

评论

0/150

提交评论