




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷33(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序輸出:1,2,3,4,5,注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。#includeClassTeStClass{//********error********TestClass(inti){mi=i;}voidprint(){cout<<++mi<<‘,’;}public:intmi;},intmain(){∥********error********inti();TeStClassdata(0);while(i>5){//********error********i++;data.print();}cout<標(biāo)準(zhǔn)答案:(1)public:TestClass(inti)(2)inti(10);(3)i一一;知識(shí)點(diǎn)解析:程序要求輸出1,2,3,4,5,。主函數(shù)main()中有while循環(huán),調(diào)用類TestClass中的成員函數(shù)print()實(shí)現(xiàn)函數(shù)功能。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。sum(intn1計(jì)算所有n的因子之和(不包括1和自身)。注意:不能修改程序的其他部分,只能補(bǔ)充sum()函數(shù)。{}includeintsum(intn){}voidmain(){cout<標(biāo)準(zhǔn)答案:intall=0;for(inti=2;i知識(shí)點(diǎn)解析:函數(shù)sum(intn)主要功能是實(shí)現(xiàn)計(jì)算所有n的因子之和(不包括1和自身),函數(shù)中定義變量all保存最終求和結(jié)果,可利用循環(huán)方式查找n的因子,根據(jù)題目要求循環(huán)變量從2開始至n—1。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示坐標(biāo)的類TestClassl,但類TestClassl的定義并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)聲明TestClass2類為TestClassl類的友元類,請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類的構(gòu)造函數(shù),分別對(duì)成員變量賦值,請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類的構(gòu)造函數(shù),分別對(duì)成員變量賦值,請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成計(jì)算平面上兩點(diǎn)之間的距離函數(shù)Distance,計(jì)算的方法如下:X坐標(biāo)之差的平方與Y坐標(biāo)之差的平方之和的開方。請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:僅在函數(shù)指定位置添加語(yǔ)句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include#includeusingnamespaceStd;classTeStClassl{∥********1********public:∥********2********{X=a;y=b;}∥********3********{X=a;Y=0;}voidprint(){cout<<“x=”<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:friendclasSTestClass2;(2)添加語(yǔ)句:TestClassl(floata,floatb)(3)添加語(yǔ)句:TestClassl(floata)(4)添加語(yǔ)句:result=sqrt((p.X—q.X)*(p.X—q.X)+(p.Y—q.Y)*(p.Y—q.Y));知識(shí)點(diǎn)解析:在VC環(huán)境下打開程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已給定源程序的main主函數(shù)開始入手,可以看出程序通過(guò)調(diào)用類TestClass實(shí)現(xiàn)各種輸出操作。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:Number=7Number=12注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#includeclassCMyClass{public://********error********CMyClass(inti):Number=i{//********error********returnNumber;}voidSet(inti){Number=i;}voiddisplay(){cout<<"Number="<display();P->set(12);P->display();return;}標(biāo)準(zhǔn)答案:(1)CMyClass(inti):Number(i)(2)應(yīng)刪除:returnNumber;(3)CMyClass*p=newCMyClass(7);知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下是聲明構(gòu)造函數(shù),并使用初始化列表完成成員變量的初始化,可知第1標(biāo)識(shí)下的初始化列表錯(cuò)誤,正確的應(yīng)該是“CMyClass(inti):Number(i)”。(2)構(gòu)造函數(shù)不能有返回值,不能用return來(lái)返回值,故第2個(gè)標(biāo)識(shí)下應(yīng)將“returnNumber;”刪除。(3)類實(shí)例在不指定構(gòu)造函數(shù)的情況下,調(diào)用的是默認(rèn)無(wú)參數(shù)的構(gòu)造函數(shù),此時(shí)成員變量Number是不確定的,在定義對(duì)象時(shí)應(yīng)使用已定義的構(gòu)造函數(shù),,根據(jù)輸出結(jié)果可知P指向的對(duì)象的Number初始化值為7,故第3個(gè)標(biāo)識(shí)下應(yīng)改為“CMyClass*P=newCMyClass(7);”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。該程序從鍵盤讀入整數(shù),并按從大到小的順序輸出輸入整數(shù)中互不相等的那些整數(shù)。程序一邊讀入整數(shù),一邊構(gòu)造一個(gè)以大到小順序鏈接的鏈表,直至輸入0時(shí)結(jié)束。然后順序輸出鏈表上各表元的整數(shù)值。主函數(shù)每讀入一個(gè)整數(shù),就調(diào)用函數(shù)fun(),函數(shù)fun()將還未出現(xiàn)在鏈表上的整數(shù)按從大到小的順序插入到鏈表中。為了插入方便,鏈表在表首有一個(gè)輔助表元。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#includeClassNODE{public:intdata;NODE*next;};Voidfun(NODE*list,intx){}Voidmain(){intx;NODE*head,*p;/*首先建立只有輔助表元的空鏈表*/head=newNODE;head->next=NULL;std::cout<<"Enterintegers,endwith0"<>x;if(x==0)break;fun(head,x);}for(p=head->next;p!=NULL;p=p->next、std::cout<data<<’’;Std::cout<next;deletehead;head=p;}while(p);}標(biāo)準(zhǔn)答案:NODE*u,*v,*p;u=list;V=u->next;while(v!=NULL&&xdata)//尋找插入的位置{u=v;v=v->neXt;}if(v==NULL||x>v->data)//判斷是否為新的元素{p=newNODE;p->data=x;//生成新的元素p->next。V;u->next=p;//插入新的元素}知識(shí)點(diǎn)解析:(1)首先利用while循環(huán)尋找插入元素的位置。(2)然后判斷要插入的元素是否為新元素。(3)如果為新元素,那么執(zhí)行單鏈表的操作,插入元素。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)完成類TestClass1的成員函數(shù)seta定義,定義seta對(duì)象x為int類型,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類TestClass1(共有)和類TestClass2(私有)派生類TestClass3的定義,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)定義類TestClass3中的私有成員C為int,請(qǐng)?jiān)谧⑨專?*******3********添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成setc中對(duì)基類的變量a的賦值,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeClassTestClass1{inta;public://********1********{returna=x:}Voidshowa(){cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:intseta(intx)(2)添加語(yǔ)句:classTestClass3:publicTestClass1,privateTestClass2(3)添加語(yǔ)句:intc;(4)添加語(yǔ)句:seta(x);知識(shí)點(diǎn)解析:(1)題目1要求“完成類TestClass1的成員函數(shù)seta定義,定義seta對(duì)象X為int類型”。類的成員函數(shù)是函數(shù)的一種,它與一般函數(shù)的區(qū)別只是,它是一個(gè)類的成員,出現(xiàn)在類體中。所以類TestClass1中的成員函數(shù),就是在TestClass1中定義題目中要求的參數(shù)為imX的seta函數(shù),即“intseta(intx)”。(2)題目2要求“完成類TestClass1(公有)和類TestClass2(私有)派生類TestClass3的定義”。從已有的類產(chǎn)生一個(gè)新的子類,稱為類的派生。聲明派生類的一般形式為:class派生類名:[繼承方式]基類名。根據(jù)聲明派生類的一般形式,這里補(bǔ)全“classTestClass3:publicTestClass1,privateTestClass2”。(3)題目3要求“定義類TestClass3中的私有成員C為int”。在類TestClass3中的private數(shù)據(jù)成員區(qū)域,定義intC,即在第3個(gè)標(biāo)識(shí)下補(bǔ)全“intc:”。(4)題目4要求“完成setc中對(duì)基類的變量a的賦值”?;悶門estClass1,setc對(duì)于該類a的賦值,是intseta(intx)函數(shù)的賦值,即“seta(x);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開考生文件夾下的解決方案文件proj1,其中在編輯窗口內(nèi)顯示的主程序文件中定義有類AAA和主函數(shù)main。程序文本中位于每行“//ERROR****found****”下面的一行有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:sum=60注意:只修改每個(gè)“//ERROR****found****”下面的一行,不要改動(dòng)程序中的其他任何內(nèi)容。#include<iostream>usingnamespacestd;classAAA{inta[10];intn;//ERROR*******found*******private:AAA(intaa[],intnn):n(nn){//ERROR*******found*******for(inti=0;i<rl;i++)aa[i]=a[i];}intGeta(inti){returna[i]};};intmain(){inta[6]={2,5,8,10,15,20};AAAx(a,6);intsum=0;//ERROR*******found*******for(inti=0;i<6;i++)sum+=x.a(chǎn)[i];cout<<"sum="<<sum<<endl;return0;}標(biāo)準(zhǔn)答案:(1)public:(2)for(inti=0;i<n;i++)a[i]=aa[i];(3)for(inti=0;i<6;i++)sum+=x.Geta(i);知識(shí)點(diǎn)解析:(1)構(gòu)造函數(shù)肯定是公有成員,所以應(yīng)使用public。(2)主要考查考生對(duì)賦值語(yǔ)句的掌握,因?yàn)閿?shù)組a是私有成員,因此a應(yīng)該在左邊,而數(shù)組aa是形參,要賦值給數(shù)組a。(3)主要考查考生對(duì)成員函數(shù)調(diào)用的掌握,數(shù)組a是類的私有成員,因此不能被main函數(shù)直接調(diào)用,要通過(guò)成員函數(shù)Geta來(lái)調(diào)用數(shù)組a。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開考生文件夾下的解決方案文件proj2,此工程中包含一個(gè)頭文件shape.h,其中包含了類Shape、Point和Triangle的聲明;包含程序文件shape.cpp,其中包含了類Triangle的成員函數(shù)和其他函數(shù)的定義;還包含程序文件proj2.cpp,其中包含測(cè)試類Shape、Point和Triangle的程序語(yǔ)句。請(qǐng)?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述功能。此程序的正確輸出結(jié)果應(yīng)為:此圖形是一個(gè)抽象圖形,周長(zhǎng)=0,面積=0此圖形是一個(gè)三角形,周長(zhǎng)=6.82843,面積=2注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。//shape.hclassShape{public:virtualdoubleperimeter()const{return0;}//返回形狀的周長(zhǎng)virtualdoublearea()const{return0;}//返回形狀的面積virtualconstchar*name()const{return"抽象圖形";}//返回形狀的名稱};classPoint{//表示平面坐標(biāo)系中的點(diǎn)的類doublex;doubley;public://*******found*******Point(doublex0,doub2ey0):_______{}//用x0、y0初始化數(shù)據(jù)成員x、ydoublegetX()const{returnx;}doublegetY()const{returny;}};classTriangle:publicShape{//*******found*******_______;//定義3個(gè)私有數(shù)據(jù)成員public:Triangle(Pointp1,Pointp2,Pointp3):point1(p1),point2(p2),point:3(p3){}doubleperimeter()const;doublearea()const;constchar*narne()const{return"三角形";}};//shape.cpp#include"shape.h"{}include<cmath>doublelength(Pointp1,Pointp2){returnsqrt((p1.getX()-p2.getX())*(p1.getX()-p2.getX())+(p1.getY()-p2.getY())*(p1.getY()-p2.getY()));}doubleTriangle::perimeter()const{//一個(gè)return語(yǔ)句,它利用length函數(shù)計(jì)算并返回三角形的周長(zhǎng)//*******found*******_______;}doubleTriangle::area()const{doubles=perimeter()/2.0;returnsqrt(s*(s-length(point1,point2))*(s-length(point2,point3))*(s-length(point3,pointl)));}//proj2.cpp#include"shape.h"#include<iostream>usingnamespacestd;//*******found*******_______//show函數(shù)的函數(shù)頭(函數(shù)體以前的部分){cout<<"此圖形是一個(gè)"<<shape.name()<<",周長(zhǎng)="<<shape.perimeter()<<",面積:"<<shape.a(chǎn)rea()<<endl;}intmsin(){Shapes;Triangletri(Point(0,2),Point(2,0),Point(0,0));show(s);Show(tri);return0;}標(biāo)準(zhǔn)答案:(1)x(x0),y(y0)(2)Pointpoint1,point2,point3(3)returnlength(point1,point2)+length(point1,point3)+length(point2,point3)(4)voidshow(Shape&shape)知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,題目要求用x0、y0初始化數(shù)據(jù)成員x、y,因此在這里使用成員列表初始化,即Point(doublex0,doubley0):X(x0),y(y0){}。(2)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,題目要求定義3個(gè)私有數(shù)據(jù)成員。由構(gòu)造函數(shù)可知3個(gè)私有數(shù)據(jù)成員的類型都是Point,名稱分別為point1、point2和point3,因此空格處填寫:Pointpoint1,point2,point3。(3)主要考查考生對(duì)成員函數(shù)的掌握,題目要求使用return語(yǔ)句,利用length函數(shù)計(jì)算并返回三角形的周長(zhǎng)。length函數(shù)返回的是兩點(diǎn)間的距離,因此return語(yǔ)句只要返回三角形三條邊的距離和,即為三角形的周長(zhǎng)。(4)主要考查考生對(duì)成員函數(shù)的掌握,這里要定義show函數(shù)的函數(shù)頭(函數(shù)體以前的部分)。由主函數(shù)main中show函數(shù)的使用情況show(S)和show(tri)可知,S是Shape類,tri是Triangle類,因?yàn)門riangle是Shape類的派生類,所以可知show函數(shù)的參數(shù)是Shape類型,無(wú)返回值,得出語(yǔ)句voidshow(Shape&shape)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開考生文件夾下的解決方案文件proj3,其中包含主程序文件main.cpp和用戶定義的頭文件Array.h,整個(gè)程序包含有類Array的定義和主函數(shù)main的定義。請(qǐng)把主程序文件中的Array類的成員函數(shù)Contrary()的定義補(bǔ)充完整,經(jīng)補(bǔ)充后運(yùn)行程序,得到的輸出結(jié)果應(yīng)該是:585,4,3,2,10,0,8.4,5.6,4.5,3.4,2.3,1.2注意:只允許在“//********333********”和“//********666********”之間填寫內(nèi)容,不允許修改其他任何地方的內(nèi)容。//Array.h#include<iostream>usingnamespacestd;template<classType,intm>classArray{//數(shù)組類public:Array(Typeb[],intmm){//構(gòu)造函數(shù)for(inti=0;i<m;i++)if(i<mm)a[i]=b[i];elsea[i]=0;}voidContrary();//交換數(shù)組a中前后位置對(duì)稱的元素的值intLength()const{returnm;}//返回?cái)?shù)組長(zhǎng)度Typeoperator[](inti)const{//下標(biāo)運(yùn)算符重載為成員函數(shù)if(i<0||i>=m){cout<<"下標(biāo)越界!"<<endl;exit(1);}returna[i];}private:Typea[m];};voidwriteToFile(constchar*);//不用考慮此語(yǔ)句的作用//main.cpp#include"Array.h"//交換數(shù)組a中前后位置對(duì)稱的元素的值template<classType,intm>voidArray<Type,m>::Contrary(){//補(bǔ)充函數(shù)體//********333********//********666********}intmain(){ints1[5]={1,2,3,4,5};doubles2[6]={1.2,2.3,3.4,4.5,5.6,8.4};Array<int,5>d1(s1,5);Array<double,8>d2(s2,6);inti;d1.Contrary();d2.Contrary();cout<<d1.Length()<<’’<<d2.Length()<<endl;for(i=0;i<4;i++)cout<<d1[i]<<",";cout<<d1[4]<<endl;for(i=0;i<7;i++)cout<<d2[i]<<",";cout<<d2[7]<<endl;writeToFile("");//不用考慮此語(yǔ)句的作用return0;}標(biāo)準(zhǔn)答案:for(inti=0,j=m-1;i<j;i++,j--){//i從0開始自加,j從數(shù)組最一位開始自減,條件是i<j,開始遍歷數(shù)組aTypetemp=a[i];//把a(bǔ)[i]賦值給變量tempa[i]=a[j];//把a(bǔ)[j]賦值給[j]a[i]=temp;//把temp賦值給a[j],最終使a[i]與a[j]值的互換}知識(shí)點(diǎn)解析:主要考查考生對(duì)交換算法的掌握情況,根據(jù)題目對(duì)要完成的函數(shù)Contrary的要求:交換數(shù)組a中前后位置對(duì)稱的元素的值。這里取下標(biāo)j=0,即為數(shù)組中的第一個(gè)元素,j=m-1,即為數(shù)組中的最后一個(gè)元素,利用中間值temp交換元素的值,然后i逐次遞增的同時(shí)j逐次遞減,再交換,循環(huán)到i>j時(shí)停止交換即可。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,請(qǐng)修改程序中的錯(cuò)誤,使程序能得出正確的結(jié)果:num:0num:1num:10注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。#includeinti=10;ClassTestClass{public:TestClass(inti){cout<<"num:"<標(biāo)準(zhǔn)答案:(1)this->i=i+1;或TestClass::i=i+1:或(*this).i=i+1:(2)TestClassprint(0);(3)cout<<"num:"<<::i<知識(shí)點(diǎn)解析:(1)打開modi1.cpp,調(diào)試程序,顯示錯(cuò)誤提示為第二標(biāo)識(shí)下“modi1.cpp(22):errorC2512:TestClass’:noappropriatedefaultconstructoravailable”,主函數(shù)中首先調(diào)用的就是第2個(gè)標(biāo)識(shí)下的TestClassprint函數(shù),構(gòu)造函數(shù)的名字和類的名字是一樣的,而程序中給出的“TestClassprint;”沒(méi)有給出參數(shù),所以程序調(diào)試時(shí)無(wú)法確定調(diào)用的函數(shù)。根據(jù)TestClass構(gòu)造函數(shù)“TestClass(inti)”的定義,應(yīng)該存在int型參數(shù),并且題目要求第一次輸出的值為“0”,所以第2個(gè)標(biāo)識(shí)正確的調(diào)用函數(shù)為“TestClassprint(0);”。(2)運(yùn)行,發(fā)現(xiàn)第一次的輸出正確,但是第二次的輸出值為“-858993460”,并不是題目中要求的“1”。在主函數(shù)中,可知第二次輸出調(diào)用的是“print.Print();”,即類TestClass的成員函數(shù)“Print()”。成員函數(shù)Print的定義“voidPrintoconst”中的輸出語(yǔ)句為“cout<<”num:”<i=i+l;”或“TestClass::i=i+1;”或“(*this).i=i+1;”。(3)主函數(shù)中通過(guò)“cout<<"num:"<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序,使函數(shù)fun()實(shí)現(xiàn)以下功能:找出一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再加上268又是一個(gè)完全平方數(shù),請(qǐng)問(wèn)該數(shù)是多少?程序分析:在10萬(wàn)以內(nèi)判斷,先將該數(shù)加上100后再開方,再將該數(shù)加上268后開方,如果開方后的結(jié)果滿足條件,即是結(jié)果。#include#includeVoidfun(){}intmain(){fun();return0;}標(biāo)準(zhǔn)答案:longinti,x,y,z;for(i=1;i<100000;i++){x=Sqrt(i+100);//x為加上100后開方后的結(jié)果y=sqrt(i+268);//y為再加上268后開方的結(jié)果if(x*x==i+100&&y*y==i+268)//如果一個(gè)數(shù)的平方根的平方等于該數(shù)。說(shuō)明此數(shù)是完全平方數(shù)cout<知識(shí)點(diǎn)解析:(1)利用循環(huán)找到滿足條件的整數(shù)。(2)首先計(jì)算X加上100和Y加上268的開方。(3)一個(gè)數(shù)的平方根的平方等于該數(shù),說(shuō)明此數(shù)是完全平方數(shù)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)聲明類objA1,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)為類objA0增加友元函數(shù)func(),請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)為類objA1增加友元函數(shù)func(),請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)函數(shù)func()返回objA1對(duì)象中的變量和objA0的靜態(tài)變量的乘積,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#include//********1********classobjA0{private:staticintmA0;//********2********};intobjA0..m_A0=10;classobjA1{private:intm_A1;//********3********public:objA1(inti){m_A1=i;}};intfunc(objA1&obj){//********4********}intmain(){objA1obj0(10);cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:classobjA1;(2)添加語(yǔ)句:friendintfunc(objA1&obj);(3)添加語(yǔ)句:friendintfunc(objA1&obj);(4)添加語(yǔ)句:returnobj.m_A1*objA0::m_A0;知識(shí)點(diǎn)解析:(1)類的聲明格式為:“class<類名>;”,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“classobjA1;”。(2)按照友元的定義格式,友元函數(shù)是在類聲明中由關(guān)鍵字friend修飾的非成員函數(shù),func函數(shù)在類外部給出了具體的實(shí)現(xiàn)形式,即“intfunc(objA1&obj)”,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“friendintfunc(objA1&obj);”,這里參數(shù)是0bjA1類對(duì)象obj。(3)第3個(gè)標(biāo)識(shí)下和題目2要求一樣,均是聲明友元函數(shù),因此第2標(biāo)識(shí)下應(yīng)添加“friendintfunc(objA1&obj);”。(4)通過(guò)參數(shù)obj對(duì)象可以直接訪問(wèn)obj.mA1,objA0的靜態(tài)變量m_A0是所有對(duì)象的共享成員,其訪問(wèn)形式為:objA0::mA0,因此第4個(gè)標(biāo)識(shí)下應(yīng)添加“returnobj.m_A1*objA0::m_A0;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:Number=7Numbe=12注意:錯(cuò)誤的語(yǔ)句在//********error********的下面,修改該語(yǔ)句即可。1#include2classCMyClass3{4public:5//******error******6CMyClass(inti):Number=i7{8//******error******9returnNumber;10}11voidset(inti)12{13Number=i;14}15voiddisplay()16{17cout<<"Number="<display();27P->set(12);28P->display();29return;30}標(biāo)準(zhǔn)答案:(1)CMyClass(inti):Number(i)(2)應(yīng)刪除:returnNumber;(3)CMyClasS*P=newCMyClass(7);知識(shí)點(diǎn)解析:CMyClass類含有成員變量Number和多個(gè)成員函數(shù),set(inti)函數(shù)可改變成員變量的值,display()~數(shù)在屏幕上打印成員變量的值。[解題思路](1)第1個(gè)標(biāo)識(shí)下是聲明構(gòu)造函數(shù),并使用初始化列表完成成員變量的初始化,可知第1標(biāo)識(shí)下的初始化列表錯(cuò)誤,正確的應(yīng)該是“CMyClass(inti):Number(i)”。(2)構(gòu)造函數(shù)不能有返回值,不能用return來(lái)返回值,故第2個(gè)標(biāo)識(shí)下應(yīng)將“returnNumber;”刪除。(3)類實(shí)例在不指定構(gòu)造函數(shù)的情況下,調(diào)用的是默認(rèn)無(wú)參數(shù)的構(gòu)造函數(shù),此時(shí)成員變量Number是不確定的,在定義對(duì)象時(shí)應(yīng)使用已定義的構(gòu)造函數(shù),,根據(jù)輸出結(jié)果可知P指向的對(duì)象的Number初始化值為7,故第3個(gè)標(biāo)識(shí)下應(yīng)改為“CMyClass*P=newCMyClass(7);”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。sum(intn)計(jì)算所有n的因子之和(不包括1和自身)。注意:不能修改程序的其他部分,只能補(bǔ)充sum()函數(shù)。1#include2intsum(intn)3{45}6voidmain()7{8cout<標(biāo)準(zhǔn)答案:1inta11=0;2for(inti=2;i知識(shí)點(diǎn)解析:函數(shù)sum(intn)主要功能是實(shí)現(xiàn)計(jì)算所有n的因子之和(不包括1和自身),函數(shù)中定義變量an保存最終求和結(jié)果,可利用循環(huán)方式查找n的因子,根據(jù)題目要求循環(huán)變量從2開始至n-1。[解題思路](1)數(shù)n的因子是指為整除n等于0的所有自然數(shù)的集合。(2)為了實(shí)現(xiàn)計(jì)算所有n的因子之和且不包含l和自身,函數(shù)中定義一個(gè)變量all用來(lái)保存求和結(jié)果,并為最終結(jié)果在函數(shù)結(jié)束時(shí)返回;(3)在循環(huán)中逐個(gè)尋找n的因子,為了在計(jì)算中排除掉1和n本身,因此循環(huán)變量i的變化范圍為從2到n-1。(4)如果n%i=0,說(shuō)明i是n的因子,因此將i加到all上。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)聲明類objAl,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)為類objA0增加友元函數(shù)func(),請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)為類objAl增加友元函數(shù)func(),請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)函數(shù)funcO返回objAl對(duì)象中的變量和0bjA0的靜態(tài)變量的乘積,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。1#include2//********1********34classobjA05{6private:7staticintm_A0;8//********2********910};11intobjA0::m_A0=10;12classobjAl13{14private:15intm_A1;16//********3********1718public:19objA1(inti)20{21m_A1=i;22}23};24intfunc(objAl&obj)25{26//********4********2728}29intmein()30{31objA1obj0(10);32COUt<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:C1assobjA1;(2)添加語(yǔ)句:friendintfunc(objA1&obj);(3)添加語(yǔ)句:friendintfunc(objAl&obj);(4)添加語(yǔ)句:returnobj.mA1*objA0::mA0;知識(shí)點(diǎn)解析:友元提供了不同類或?qū)ο蟮某蓡T函數(shù)之間、類的成員函數(shù)與一般函數(shù)之間進(jìn)行數(shù)據(jù)共享的機(jī)制,友元不是本類的成員函數(shù),在它的函數(shù)體內(nèi)部可以通過(guò)對(duì)象名來(lái)訪問(wèn)類的私有成員和保護(hù)成員。友元函數(shù)是在類聲明中由關(guān)鍵字friend修飾的非成員函數(shù)。func()函數(shù)為類0bjAl的友元,因此可以通過(guò)對(duì)象名直接訪問(wèn)到objAl的私有成員變量。[解題思路](1)類的聲明格式為:“class<類名>:”,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“classobiAl;”。(2)按照友元的定義格式,友元函數(shù)是在類聲明中由關(guān)鍵字friend修飾的非成員函數(shù),func函數(shù)在類外部給出了具體的實(shí)現(xiàn)形式,即“intfunc(objAl&obj)”,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“friendintfunc(objAl&obj);”,這里參數(shù)是objAl類對(duì)象obi。(3)第3個(gè)標(biāo)識(shí)下和題目2要求一樣,均是聲明友元函數(shù),因此第2標(biāo)識(shí)下應(yīng)添加“friendintfunc(0bjAl&obj);”。(4)通過(guò)參數(shù)Obj對(duì)象可以直接訪問(wèn)obj.mA1,objA0的靜態(tài)變量mA0是所有對(duì)象的共享成員,其訪問(wèn)形式為:objA0::mA0,因此第4個(gè)標(biāo)識(shí)下應(yīng)添加“retumobj.mAl*objA0::m_A0;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾projl下的工程proj1,此工程中含有一個(gè)源程序文件projl.epp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Thisobjectisno.1注意:只修改注釋“//ERROR****found****”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。/Jprojl.cpp#includeusingnamespacestd;classNyClass{public:NyClass():count(0){tout<<“Thisobjectis”;}//ERROR*********found*********voidInc()const{tout<<“no.”<<++count<標(biāo)準(zhǔn)答案:(1)voidInc()(2)intcount;(3)0bj一>Inc();知識(shí)點(diǎn)解析:主要考查的是MyClass類,其中涉及構(gòu)造函數(shù)、成員函數(shù)、私有成員及類的指針。const用于限定變量的值不發(fā)生改變,const函數(shù)的定義要謹(jǐn)慎,確保函數(shù)體內(nèi)沒(méi)有成員值的改變。私有成員只能聲明不能初始化,只有通過(guò)構(gòu)造函數(shù)或者成員函數(shù)來(lái)初始化?!窘忸}思路】(1)考查考生對(duì)const的掌握,在Inc函數(shù)的函數(shù)體{cout<<”n0.”<<++count<”,而不能使用“.”。【解題寶典】主要考查考生對(duì)const語(yǔ)法、私有成員及類的指針的理解。私有成員在類中只能聲明不能初始化,這是最基礎(chǔ)的知識(shí),只要認(rèn)真看程序一般沒(méi)問(wèn)題。判斷一個(gè)函數(shù)是否為eonst函數(shù)關(guān)鍵看函數(shù)體內(nèi)是否有成員值發(fā)生改變,如果發(fā)生改變,則不能用corot修飾。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,此工程中含有一個(gè)源程序文件proj2.epp。函數(shù)char*GetNum(char’lc8rc,char*buf)從src開始掃描下一個(gè)數(shù)字字符序列,并將其作為一個(gè)字符串取出放人字符串空間buf中。函數(shù)返回掃描的終止位置,如果返回NULL表示沒(méi)有掃描到數(shù)字字符序列。運(yùn)行程序時(shí),如果輸入的一行字符序列是ABC012XYZ378MN274WS則輸出為:Diotstring1is012Digitstung2is378DiotstriIlg3is274注意:只在橫線處編寫適當(dāng)代碼,不要?jiǎng)h除或移動(dòng)“//****found****”。//proj2.cpp#includeusingnamespacestd;char*GetNum(char*src,char*bur){while(*SrC!=‘\0’){if(isdigit(*SrC))break;SrC++;}if(*SrC=‘\0’)//*********found*********_________;while(*src!=‘\0’&&isdigit(*SEC)){//*********found*********_____;:bur++;SrC++;}*bur=‘\0’;returnSrC;}intmain(){charstr[100],digits[20];cin.getline(str,100);char*p=str;inti=1;while((p=GetNurn(p,digits))!=NULL){cout<<“Digitstring”<標(biāo)準(zhǔn)答案:(1)returnNULL(2)*buf=*src(3)i++知識(shí)點(diǎn)解析:主要考查的是GetNum函數(shù)、while循環(huán)語(yǔ)句、if語(yǔ)句和字符數(shù)組。從該函數(shù)的聲明中,可以得到如下信息:該函數(shù)的返回值為字符指針,形參為兩個(gè)字符指針SYC和bufo該函數(shù)的功能是,函數(shù)從sre開始掃描下一個(gè)數(shù)字字符序列,并將其作為一個(gè)字符串取出放入字符串空間buf中?!窘忸}思路】(1)主要考查考生對(duì)if語(yǔ)句的掌握,由判斷條件if(*src==‘\0’),說(shuō)明字符串SIC為空,則返回NULL即可。(2)主要考查考生對(duì)while循環(huán)語(yǔ)句的掌握,while語(yǔ)句的循環(huán)條件為/src!=’\0’&&isdigit(*src),該條件是指,若字符串sic不為空并且*src指向的字符為數(shù)字字符,則進(jìn)行循環(huán)。題目要求把數(shù)字字符放人字符串buf中,因此為*buf=*src。(3)主要考查考生對(duì)while循環(huán)語(yǔ)句的掌握,從上一行語(yǔ)句cout<<“Digitstring”<三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開考生目錄proj3下的工程文件pmj3,該文件中定義了用于表示日期的類Date、表示人員的類Person和表示職員的類Staff;程序應(yīng)當(dāng)顯示:張小麗123456789012345但程序中有缺失部分,請(qǐng)按以下提示把缺失部分補(bǔ)充完整:(1)在“//**1******found****”的下方是析構(gòu)函數(shù)定義中的語(yǔ)句,它釋放兩個(gè)指針成員所指向的動(dòng)態(tài)空間。(2)在“//**2******found****”的下方是rename函數(shù)中的一個(gè)語(yǔ)句,它使指針name指向申請(qǐng)到的足夠容納字符串new_name的空間。(3)在“**3******found****”的下方是構(gòu)造函數(shù)定義的一個(gè)組成部分,其作用是利用參數(shù)表中前幾個(gè)參數(shù)對(duì)基類Person進(jìn)行初始化。注意:只在指定位置編寫適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“****found****”。填寫的內(nèi)容必須在一行中完成,否則評(píng)分將產(chǎn)生錯(cuò)誤。//proj3.cpp#includeusingnamespacestd;ClassPerson{char*idcardno;//用動(dòng)態(tài)空間存儲(chǔ)的身份證號(hào)char*name;//用動(dòng)態(tài)空間存儲(chǔ)的姓名boolismale;//性別:true為男.false為女public:Person(constchar*pid,constchar*pname,boolpmale);一Person(){//**1***********found*********——;:}constchar*getIDCardNO()const{returnidcardno;)constchar*getName()const{returnname;)voidrename(constchar*newname);boolisMale()const{returnismale;)};classStaff:publicPerson{char*department;doublesalary;public:Staff(constchar*idcardno,constchar*P—name,boolis—male,constchar*dept,doublesal);一Staff(){delete[]department;}constchar*getDepartment()const{returndepartment;)voidsetDepartment(constchar*d);doublegetSalary()const{returnsalary;}voidsetSalary(doubleS){salary=S;}};Person::Person(constchar*idcardno,constchar*P—name,boolismale):ismale(iSmale){idcardno=newchar[strlen(idcardno)+1];strcpy(idcardno,id—card—no);name=newchar[strlen(p_name)+1];strcpy(name,p_name);}voidPerson::rename(constchar‘new_name){delete[]name;//**2************found**********_________;;strcpy(name,newname);}Staff::Staff(constchar*idcardno,constchar*P—name,boolis—male,//**3*************found*************constchar*dept,doublesal):________{department=newchar[strlen(dept)+1];strcpy(department,dept);salary=sal;}voidStaff::setDepartment(constchar*dept){delete[]department;department=newchar[strlen(dept)+1];strcpy(department,dept);}intmain(){StaffZhangsan(“123456789012345”,“張三”,false,“人事部”,1234.56);Zhangsan.rename(”張小麗”);cout<標(biāo)準(zhǔn)答案:(1)delete[].idcardno,nallle(2)name=newchar[strlen(new—name)+1](3)Person(i(1_card_no,p—name,is—male)知識(shí)點(diǎn)解析:主要考查的是Person類及其派生類Staff,其中涉及構(gòu)造函數(shù)、析構(gòu)函數(shù)、動(dòng)態(tài)數(shù)組及派生類的構(gòu)造函數(shù)。【解題思路】(1)主要考查考生對(duì)析構(gòu)函數(shù)的掌握,題目要求釋放兩個(gè)指針成員所指向的動(dòng)態(tài)空間。釋放動(dòng)態(tài)空間應(yīng)使用delete語(yǔ)句,因?yàn)橐尫艃蓚€(gè)指針,使用語(yǔ)句:delete[]idcardno,name;實(shí)現(xiàn)。注意當(dāng)釋放多個(gè)指針時(shí),中間用逗號(hào)隔開。(2)考查動(dòng)態(tài)數(shù)組分配空間,題目要求指針name指向申請(qǐng)到的足夠容納字符串new—name的空間。使用strlen(new—name)得到字符串new—name的長(zhǎng)度,但是這里要注意加1。(3)主要考查考生對(duì)派生類構(gòu)造函數(shù)的掌握,題目要求利用參數(shù)表中前幾個(gè)參數(shù)對(duì)基類Person進(jìn)行初始化。派生類的構(gòu)造函數(shù)要使用成員列表初始化法對(duì)基類初始化,因此為constchar木dept,doublesal):Person(id—card—n0,p—name,is—male)。【解題寶典】使用new語(yǔ)句為字符串分配空間時(shí),應(yīng)注意分配的空間大小為字符串長(zhǎng)度+1。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使該程序的輸出結(jié)果為:20,1515.20注意:錯(cuò)誤的語(yǔ)句在∥********error********的下面,修改該語(yǔ)句即可。#include∥********error********voidExchangel(intm,intn){intt=m;m=n;n=t;}∥********error********voidExchange2(intm,intn){intt=*m:*m=*n;*n=t:}voidmsin(){intb=20;inta=15;Exchangel(a,b);cout<標(biāo)準(zhǔn)答案:(1)voidExchangel(int&m,int&n)(2)voidExchange2(int*m,int*n)(3)Exchange2(&a,&b);知識(shí)點(diǎn)解析:程序中定義了兩個(gè)交換函數(shù),分別采用傳地址和傳引用的方式來(lái)實(shí)現(xiàn)交換。(1)由程序的運(yùn)行結(jié)果可知,分別調(diào)用Exchangel()和Exchange20后,a和b的值兩次發(fā)生交換,因此Exchangel()函數(shù)和Exchange20函數(shù)均為實(shí)現(xiàn)交換的函數(shù)。參數(shù)傳遞方式有多種,將變量名作為實(shí)參和形參、傳遞變量的指針和傳送引用方式,將變量名作為實(shí)參和形參方式,這種傳遞是單向的,在函數(shù)執(zhí)行過(guò)程中形參的值發(fā)生變化不會(huì)傳回實(shí)參,而指針和引用方式在函數(shù)執(zhí)行過(guò)程中形參會(huì)影響實(shí)參。顯然這里不是采用變量名作為實(shí)參和形參的單向傳遞方式,而是采用的傳地址或傳引用的方式,在Exchange10體內(nèi)沒(méi)有出現(xiàn)指針運(yùn)算符“*”,因此可知Exchange10函數(shù)是采用的傳引用的方式,因此第1個(gè)標(biāo)識(shí)下應(yīng)改為“voidExchangel(int&m,int&n)990(2)由1分析可知,Exchange20~數(shù)內(nèi)有指針運(yùn)算符“*”,可知其是采用的傳指針的方式作為參數(shù)傳遞,因此第2個(gè)標(biāo)識(shí)下應(yīng)改為“voidExchange2(int*m,int*n)99。(3)Exchange20參數(shù)為int型數(shù)據(jù)指針,因此調(diào)用Exchange20時(shí)應(yīng)傳入指針而不是變量名,故第3個(gè)標(biāo)識(shí)下應(yīng)改為“Exchange2(&a,&b);”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。函數(shù)convert(cha*des,char*str)實(shí)現(xiàn)的功能是:(1)如果字符串最后面有空格,則全部刪除:(2)轉(zhuǎn)換后的數(shù)據(jù)放到des,并且指針作為返回值返回。注意:不能修改程序的其他部分,只能補(bǔ)充convert()函數(shù)。#include#include#defineMAXLEN1024char*convert(char*des,char*str){}voidmain(){chardeSt[MAXLEN];char*string=“abcdef”;cout<<String<<“<一一”<標(biāo)準(zhǔn)答案:Intlength=0;inti;for(1ength=0;Str[1ength]!=NULL;length++);//求數(shù)組長(zhǎng)度length一一;//下標(biāo)從0~len一1,下標(biāo)減1表示最后一個(gè)字符的下標(biāo)值for(i=length;i>=0;i一一){if(str[i]!=‘’)//判斷結(jié)尾是否有空格,從后往前判斷直到不是不是空格了跳出循環(huán)break;}for(length=0;length<=i;length++){des[length]=Str[length];//從前面開始,逐個(gè)將str中的字符拷貝到des數(shù)組中,不含最后面的空格}des[1ength]=NULL;//最后一個(gè)字符為NULLreturndes;知識(shí)點(diǎn)解析:函數(shù)convert(cha*des,char*str)實(shí)現(xiàn)的功能是將字符串最后面有空格刪除,并將轉(zhuǎn)換后的數(shù)據(jù)放到des,返回指針,可以將字符串最后空格前的所有所有字符拷貝到des中,關(guān)鍵是確定下標(biāo)從那開始到最后都是空格。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義類的公有數(shù)據(jù)成員函數(shù)No、Name[32],其中No是int型的數(shù)據(jù),Name[32]為字符型。請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成函數(shù)set的定義,分別設(shè)置NO和Name的值,請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成函數(shù)print(),請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句,打印的輸出如下:No=111Name=Garfield(4)加缺省構(gòu)造函數(shù),設(shè)置No為0,Name為空,請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeClassTestClass{public:∥********1********∥********2********{No=no;for(inti=0;strName[i]!:0;i++){Name[i]=strName[i];Name[i+1]=0;}}voidprint(){∥********3********}TeStClass(){∥********4********}},intmain(){TestClasSStu;stu.Set(111,“Garfield”);stu.print();return0;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:intNo;charName[32];(2)添加語(yǔ)句:voidSet(intno,char*StrName)(3)添加語(yǔ)句:cout<<“No=”<知識(shí)點(diǎn)解析:本題程序的功能是利用成員函數(shù)set設(shè)置類成員數(shù)據(jù)數(shù)值,并利用成員函數(shù)print輸出成員數(shù)值。在VC環(huán)境下打開程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已定源程序的main主函數(shù)開始入手,可以看出程序通過(guò)調(diào)用類TestClass和其構(gòu)造函數(shù)實(shí)現(xiàn)各種輸出操作。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用”答題”菜單或使用VC6打開考生文件夾pmjI下的工程pmjl,程序中位于每個(gè)//ERROR**********found**********水下的語(yǔ)句行有錯(cuò)誤,請(qǐng)加以更正,不得修改程序的其他部分。更正后程序的輸出應(yīng)該是:ATme注意:只能修改每個(gè)//ERROR**********found**********下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#includeusingnamespacestd;classChoice{private:constcharanswer,public://ERROR**********found**********Choice(charC){answer=C;)一Choice(){)voidcheck(charx){cout<check(’A’);deleteC;return0;}標(biāo)準(zhǔn)答案:(1)Choice(charc):answer(c){}(2)if(answer=:x)(3)Choice*c=newChoice(’A’);知識(shí)點(diǎn)解析:主要考查類中const成員變量的初始化,容易出錯(cuò)的是=與==運(yùn)算符,以及指針的使用?!窘忸}思路】(1)C++約定:初始化eonst對(duì)象或引用類型的對(duì)象,但不能對(duì)他們賦值。在開始執(zhí)行構(gòu)造函數(shù)的函數(shù)體之前,必須完成初始化。初始化const或引用類型數(shù)據(jù)成員的唯一機(jī)會(huì)是在構(gòu)造函數(shù)初始化列表中。(2)判斷相等使用==運(yùn)算符,不是賦值號(hào)“=”。(3)new操作符返回的是一個(gè)指針,因此使用指針變量來(lái)接收。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用”答題”菜單或使用VC6打開考生文件夾proj2下的工程proj2,本程序中有兩個(gè)類:一是日期類(Date),用于表示一天的日期(年、月、日);另一個(gè)是截止日期類(Dead.1ine),用于表示一個(gè)任務(wù)的截止日期,超過(guò)該日期即為超時(shí)。Deadline類中有Date類的數(shù)據(jù)成員。這里對(duì)Deadline類的數(shù)據(jù)成員和成員函數(shù)做一下說(shuō)明:intid;//截止日期的idDateend—date;//截止日期,表示允許完成該任務(wù)的最后一天voidfinish(Datedate);//date未超過(guò)截止日期時(shí),輸出”Finished!”,否則輸出”Timeout.”boolcheck(Datedate);//date未超過(guò)截止日期時(shí)返回true,否則返回false。程序正確情況下輸出:Finished!Timeout.注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不能刪除或移動(dòng)“//**********found**********”。#includeusingnamespacestd;classDate(private:intyear;intmonth;intday.ofmonth;public:Date(intY,intm,intd){this一>year=Y;.this一>month:m;this一>dayOfmonth=d;}booloperator<=(Date&dt)const{if(this一>yearyear==dt.year&&this一>monthyear==dt.year&&this一>month==dt.month&&this一>day—of—month<=dt.day_of_month))//**********found**********};returnfalse;}};classDeadline{private:intid;Dateenddate;public:Deadline(intid,intyear,intmonth,intday_of_month)//**********found**********{this一>id=id;}voidfinish(Datedate){if(check(date))//**********found**********cout<<<finish(currenttime);d2一>finish(currenttime);deleted1,deleted2;return0;}標(biāo)準(zhǔn)答案:(1)returntrue(2):end—date(year,month,day-0f_month)(3)”Finshed”(4)(end—date<=date)?false:true知識(shí)點(diǎn)解析:主要考查類構(gòu)造函數(shù)定義,初始化列表;條件運(yùn)算符的使用?!窘忸}思路】(1)根據(jù)題設(shè)可知比較兩個(gè)日期的大小,由if語(yǔ)言的判斷,可知this的日期大于date,返回真。(2)構(gòu)造函數(shù)的初始化列表,使用基類的構(gòu)造函數(shù)完成子類成員的初始化。(3)根據(jù)題意可知,沒(méi)有超過(guò)deadline,故輸出“Finshed”。(4)檢查當(dāng)前日期是否超過(guò)截止時(shí)間。超過(guò)deadline,返回false,否則返回true。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用“答題”菜單或使用VC6打開考生文件夾proj3下的工程proj3,其中定義了BaseX類(X進(jìn)制整數(shù)類),其中成員函數(shù)print輸出該整數(shù)指定數(shù)制的表示形式。使用展轉(zhuǎn)相除法,可從低位到高位逐位求出所需要的表示形式,例如,求十制數(shù)231的四進(jìn)制表示形式,方法如下:231/4=57……357/4=14……114/4=3……2結(jié)果是:3213在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),正確的輸出是:2001注意:只需在//**********333**********和//**********666**********,之間填入所編寫的若干語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。#include#include#include”BaseX.h”usingnamespacestd;BaseX::BaseX(intn)(thiS一>num=n;}BaseX::一BaseX(){)voidBaseX::print(intx){//輸出整數(shù)num的X進(jìn)制表示形式intarr[100];//存放轉(zhuǎn)換結(jié)果,arr[0]存放最低位intindex=0;//當(dāng)前數(shù)組arr中元素的個(gè)數(shù)//**********333**********//**********666**********for(inti=、index一1;i>=0;i—一){//從高位到低位輸出所需表示形式cout<標(biāo)準(zhǔn)答案:while(aura){art[index++]=num%x;Bum/=x;}知識(shí)點(diǎn)解析:主要考查將一個(gè)數(shù)轉(zhuǎn)化為x進(jìn)制,使用輾轉(zhuǎn)相除法來(lái)處理?!窘忸}思路】將一個(gè)數(shù)轉(zhuǎn)化為x進(jìn)制,使用輾轉(zhuǎn)相除法,將余數(shù)放在arr[]數(shù)組中,對(duì)商繼續(xù)使用輾轉(zhuǎn)相除法來(lái)處理,直到商為0。最后反向輸出數(shù)組中的值,即為x進(jìn)制的數(shù)。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第9套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開考生文件夾下的解決方案文件proj1,此工程包含一個(gè)源程序文件proj1.cpp。文件中將表示數(shù)組元素個(gè)數(shù)的常量Size定義為4,并用int類型對(duì)類模板進(jìn)行了實(shí)例化。文件中位于每個(gè)注釋“//ERROR****found****”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:1234注意:模板參數(shù)名用T。只修改注釋“//ERROR********found********”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#include<iostream>usingnamespacestd;//將數(shù)組元素個(gè)數(shù)size定義為4//ERROR********found********constintsize;template<typenameT>classMyClasS{public:MyClass(T*p){for(inti=0;i<Size;i++)arrays[i]=p[j];}voidPrint();private:Tarray[size];};template<typenameT>//ERROR*******found*******voidMyClass::Print(){for(inti=0;i<size;i++)cout<<array[i]<<’\t’;}intmain(){intintArray[Size]={1,2,3,4};//ERROR*******found*******MyClass<double>obj(intArray);obj.Print();cout<<endl;return0;}標(biāo)準(zhǔn)答案:(1)constintSize=4;(2)voidMyClass<T>::Print()(3)MyClass<inl>obj(intArray);知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)eonst變量的掌握,因?yàn)閏onst變量不能修改,所以在定義的同時(shí)必須仞始化。(2)主要考查考生對(duì)模板類的成員函數(shù)定義的掌握,因?yàn)镸yClass類是模板類,所以在定義該函數(shù)時(shí)要加上模板標(biāo)識(shí)符“<T>”,即語(yǔ)句voidMyClass<T>::Print()。(3)主要考查考生對(duì)模板類構(gòu)造函數(shù)的調(diào)用的理解,從上一條語(yǔ)句intintArray[Size]={1,2,3,4};中可以知道intArray為int型,因此定義obj時(shí)要使用<int>,即MyClass<int>obj(intArrav);。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開考生文件夾下的解決方案文件proj2,該工程中包含一個(gè)程序文件main.cpp,其中有日期類Date、人員類Person及排序函數(shù)sortByName和主函數(shù)main的定義。請(qǐng)?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義和函數(shù)定義。此程序的正確輸出結(jié)果應(yīng)為:按姓名排序排序前張三男出生日期:1978年4月20日王五女出生日期:1965年8月3日楊六女出生日期:1965年9月5日李四男出生日期:1973年5月30日排序后:李四男出生日期:1973年5月30日王五女出生日期:1965年8月3日楊六女出生日期:1965年9月5日張三男出生日期:1978年4月20日注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#include<iostream>usingnamespacestd;classDate{//日期類intyear,month,day;//年、月、日
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 15045-4-2:2024 EN Information technology - Home Electronic System (HES) gateway - Part 4-2: Structure - Simple gateway
- 【正版授權(quán)】 ISO 10993-4:2017/Amd 1:2025 EN Biological evaluation of medical devices - Part 4: Selection of tests for interactions with blood - Amendment 1
- 2025年度兒童接送服務(wù)與社區(qū)共建合作協(xié)議
- 2025年度出租車大包合同范本與合同法解讀
- 2025年新型不銹鋼罐體設(shè)計(jì)、制造與安裝集成合同
- 財(cái)務(wù)報(bào)表披露規(guī)定計(jì)劃
- 主管如何激勵(lì)高表現(xiàn)者計(jì)劃
- 倉(cāng)庫(kù)精益管理的實(shí)施效果計(jì)劃
- 班級(jí)外聯(lián)活動(dòng)的經(jīng)驗(yàn)分享計(jì)劃
- 課程創(chuàng)新與教學(xué)實(shí)驗(yàn)計(jì)劃
- VOC廢氣治理工程中低溫催化氧化技術(shù)的研究與實(shí)踐
- 智能廣告投放技術(shù)方案
- 知識(shí)產(chǎn)權(quán)保護(hù)執(zhí)法
- 《管理統(tǒng)計(jì)學(xué)》課件
- 教師的挑戰(zhàn):寧?kù)o的課堂革命
- 新能源材料與器件導(dǎo)論緒論
- 高質(zhì)量社區(qū)建設(shè)的路徑與探索
- 數(shù)字化時(shí)代的酒店員工培訓(xùn):技能升級(jí)
- 足球守門員撲救技巧:撲救結(jié)合守護(hù)球門安全
- 《學(xué)術(shù)規(guī)范和論文寫作》課件全套 第1-10章 知:認(rèn)識(shí)研究與論文寫作 - 引文規(guī)范
- 市政工程監(jiān)理實(shí)施細(xì)則(完整版)
評(píng)論
0/150
提交評(píng)論