國家二級(C++)機(jī)試模擬試卷3(共64題)_第1頁
國家二級(C++)機(jī)試模擬試卷3(共64題)_第2頁
國家二級(C++)機(jī)試模擬試卷3(共64題)_第3頁
國家二級(C++)機(jī)試模擬試卷3(共64題)_第4頁
國家二級(C++)機(jī)試模擬試卷3(共64題)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

國家二級(C++)機(jī)試模擬試卷3(共9套)(共64題)國家二級(C++)機(jī)試模擬試卷第1套一、程序改錯題(本題共1題,每題1.0分,共1分。)1、給定一個函數(shù),其函數(shù)功能為:使10個整數(shù)按由小到大的順序排列。在主函數(shù)中輸入10個數(shù),并輸出結(jié)果。使用VC6打開考生文件夾下的工程RevProj5。此工程包含一個源程序文件RevMain5.cpp,該程序?qū)崿F(xiàn)上述功能。但此程序運(yùn)行有問題。請找出錯誤的地方,改正后將此程序調(diào)試正確。注意:不得刪行或增行,也不得更改程序結(jié)構(gòu)。文件RevMain5.cpp中的程序清單如下://RevMain5.cpp#include<iostream>#include<iomanip>usingnamespacestd;intmain(){voidsort(intarray[],intn);intdata[10],*p,i;cout<<"Input10numbers\n";for(i=0;i<10;i++)cin>>data[i];cout<<"theoriginedarrayis:";for(p=data;p<data+10;p++){if((p-&data[0])%5==0)cout<<"\n";cout<<setw(5)<<*p;}sort(data,10);cout<<"\nthepresentarrayis:";for(p=data;p〈data+10;p++){if((p-&data[0])%5==0)cout<<"\n";cout<<setw(5)<<*p;}}voidsort(intarray[],intn){/*********found**********/for(p1=array;p1<array+(n-1);p1++){for(p2=p1+1;p2<array+n;p2++){if(*p1>*p2){/*********found**********/temp=*p1;*p1=*p2;*p2=*p1;}}}}標(biāo)準(zhǔn)答案:修改后的函數(shù)sort為:voidsort(intarray[],intn){int*p1,*p2,temp;for(p1=array;p1<array+(n-1);p1++){for(p2=p1+1;p2<array+n;p2++)if(*p1>*p2){temp=*p1;*p1=*p2;*p2=temp;}}}知識點(diǎn)解析:程序中有兩處標(biāo)識行,表明程序中有兩處錯誤,而且都是在函數(shù)sort的函數(shù)體中的錯誤。不難發(fā)現(xiàn)在函數(shù)sort中出現(xiàn)了*p1、*p2、temp這樣的變量,而在用到這些變量前,程序沒有對它們進(jìn)行定義,所以在第1處錯誤處寫上“int*p1,*p2,temp;”。第2處錯誤:易知if語句中的語句序列是實(shí)現(xiàn)兩個指針變量中值的交換,顯然上述語句不能實(shí)現(xiàn)此功能,所以應(yīng)改為:“temp=*p1;*p1:*p2;*p2=temp;”二、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的工程MyProj4。此工程包含一個源程序文件MyMain4.cpp,該程序?qū)⑼ㄟ^把類Distance定義為類Point的友元類來實(shí)現(xiàn)計(jì)算兩點(diǎn)之間距離的功能。但程序中定義的類并不完整。請按要求完成下列操作,把類的定義補(bǔ)充完整。①把類Distance定義為類Point的友元類。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。②定義類Point的構(gòu)造函數(shù),完成給私有數(shù)據(jù)成員x和y的賦值,并且兩個參數(shù)的默認(rèn)值都為0。請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。③完成類Distance的成員函數(shù)Dis(Point&p,Point&q)的定義,并在其中計(jì)算點(diǎn)p、q之間的距離,并且返回結(jié)果。假設(shè)兩點(diǎn)之間的距離distance=sqrt((p.x-q.x)*(p.x-q.x)+(p.y-q.y)*(p.y-q.y))。請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。源程序文件MyMain4.cpp中的程序清單如下://MyMain4.cpp#include<iostream>#include<cmath>usingnamespacestd;classPoint{public://**1**//定義類Point的構(gòu)造函數(shù)//**2**voidpint(){cout<<"x="<<x<<end1;cout<<"y="<<y<<end1;}private:floatx,y;};classDistance{public:floatDis(Point&p,Point&q);};floatDistance::Dis(Point&p,Point&q){//**3**}intmain(){Pointp(10,10),q(20,20);Distanced;cout<<d.Dis(p,q)<<end1;return0;}標(biāo)準(zhǔn)答案:類Point的定義如下:classPoint{public:friendclassDistance;Point(floata=0,floatb=0){x=a;y=b;}voidpint(){cout<<"x="<<x<<end1;cout<<"y="<<y<<end1;}private:floatx,y;};知識點(diǎn)解析:此道綜合應(yīng)用題主要考核友元類的定義與使用。①第1處是完成友元類的聲明,根據(jù)友元類的聲明格式已知此處可填入:friendclassDistance;②第2處是完成類Point的構(gòu)造函數(shù),此處還要注意類Point的構(gòu)造函數(shù)中還應(yīng)該有參數(shù)默認(rèn)值。此處應(yīng)填入:Point(floata=0,floatb=0){x=a;y=b}③第3處是完成類Distance成員函數(shù)Dis()的定義,函數(shù)Dis()的功能是計(jì)算兩點(diǎn)之間的距離。根據(jù)題目給出的計(jì)算公式,已知第3處應(yīng)填入:floatresult;result=sqrt((p.x-q.x)*(p.x-q.x)+(p.y-q.y)*(p.y-q.y));returnresult;國家二級(C++)機(jī)試模擬試卷第2套一、程序改錯題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的工程test21_1,此工程包含一個源程序文件test21_1.cpp,但該程序運(yùn)行有問題,請改正程序中的錯誤,使程序的輸出結(jié)果如下:Thegradeis3源程序文件test21_1.cpp清單如下:#include<iostream.h>classstudent{private:intgrade;public:/****************found*******************/student(intthegra):(thegra){}~student(){}intget_grade(){returngrade;}};voidmain(){intthegra=3;/****************found*******************/studentpoint=newstudent(thegra);/****************found*******************/cout<<"Thegradeis"<<point.get_grade()<<endl;deletepoint;}標(biāo)準(zhǔn)答案:(1)錯誤:student(intthegra):(thegra){}正確:student(intthegra):grade(thegra){}(2)錯誤:studentpoint=newstudent(thegra)正確:student*point=newstudent(thegra);(3)錯誤:cout<<"Thegradeis"<<point.get_grade()<<endl;正確:cout<<"Thegradeis"<<point->get_grade()<<endl;知識點(diǎn)解析:(1)主要考查考生對于構(gòu)造函數(shù)使用參數(shù)列表初始化數(shù)據(jù)成員的掌握,可以使用參數(shù)列表的形式,也可以在函數(shù)內(nèi)部實(shí)現(xiàn),不過參數(shù)賦值的雙方都必須出現(xiàn),本題的錯誤就在于并沒有把參數(shù)賦值給數(shù)據(jù)成員;(2)主要考查考生對于使用指針申請動態(tài)空間的方法的理解,new運(yùn)算符申請的空間返回值為指針類型,指針類型的定義是在變量名前加上“*”;(3)主要考查考生對于對象指針調(diào)用成員函數(shù)方法的掌握,必須使用符號“->”,而對象本身使用符號“.”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請編寫函數(shù)fun(),對長度為7個字符的字符串,除首、尾字符外,將其余5個字符按ASCII碼值降序排列。例如:原來的字符串為CEAedca,則排序后輸出為CedcEAa。注意:部分源程序已存在文件test22_2.cpp中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。文件test22_2.cpp的內(nèi)容如下:#include<iostream.h>#include<stdio.h>#include<ctype.h>#include<conio.h>voidintfun(char*s,intnum){}voidmain(){chars[10];printf("輸入7個字符的字符串:");gets(s);fun(s,7);cout<<s;}標(biāo)準(zhǔn)答案:intfun(char*s,intnum){chart;inti,j;for(i=1;i<num-2;i++)for(j=i+1;j<num-1;j++)if(s[i]<s[j]){t=s[i];s[i]=s[j];s[j]=t;}}知識點(diǎn)解析:本題考查利用循環(huán)來控制數(shù)組元素的操作,首尾元素除外,因此,數(shù)組的下標(biāo)值要從1開始,用循環(huán)變量i來依次取得數(shù)組中的元素,用數(shù)組中的元素s[i]和s[j]進(jìn)行比較,如果后一個元素的ASCII碼值大于前一個元素的ASCII碼值,則交換這兩個數(shù)組元素的值。國家二級(C++)機(jī)試模擬試卷第3套一、程序改錯題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的工程RevProj3。此工程包含一個源程序文件RevMain3.cpp。閱讀文件中的程序代碼,找出程序中的錯誤,并改正。源程序文件RevMain3.cpp清單如下://RevMain3.cpp#include<iostream>usingnamespacestd;classMyClass{public:/*********found******+***/voidMyClass(inta){value=a;}intMax(intx,inty){if(x>y)returnx>y?x:y;elsereturny>value?y:value;}/*********found**********/~MyClass(inta){value=a;}private:intvalue;};intmain(){MyClassmy(10);cout<<my.Max(20,30)<<end1;return0;}標(biāo)準(zhǔn)答案:正確的類MyClass定義為:classMyClass{public:MyClas(inta){value=a;}intMax(intx,inty){if(x>y)returnx>y?x:y;elsereturny>a?y:a;}~MyClass(){}private:value;};知識點(diǎn)解析:本題考核類的定義。程序中出現(xiàn)了2個出錯標(biāo)識符,說明此程序有2處錯誤。第1處錯誤:類的構(gòu)造函數(shù)沒有返回類型,而程序中將類的構(gòu)造函數(shù)設(shè)為void型,顯然是錯誤的。第2處錯誤:C++中類的析構(gòu)函數(shù)中不能帶有行參,所以程序中析構(gòu)函數(shù)的定義是錯誤的。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請編寫一個函數(shù)resort,該函數(shù)的功能是:能在一個數(shù)列中,對從指定位置開始的幾個數(shù),按相反順序重新排列,并在主函數(shù)中輸出新的數(shù)列。注意:部分源程序已存在文件PROC4.cpp中。請勿修改主函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)reson()的花括號中填寫若干語句。文件PROC4.cpp的內(nèi)容如下://PROC4.cpp#include<iostream>usingnamespacestd;voidresort(intarray[],intwhere,intarrount);intmain(){intnumber[20],where,arrount,i;cout<<"input20numbers\n";for(i=0;i<20;i++)cin>>number[i];cout<<"howmanydoyouwanttosort:";cin>>arrount;cout<<"wheredoyouwanttostart:";cin>>where;resort(number,where,arrount);cout<<"\nresortedarrayasfollow:\n";for(i=0;i<20;i++)cout<<number[i];return0;}voidresort(intarray[],intwhere,intamount){/************/}標(biāo)準(zhǔn)答案:下面是函數(shù)reson的函數(shù)體實(shí)現(xiàn):voidresort(intarray[],intwhere,intamount){int*p1,*p2,temp;p1=&array[where-1];p2=&array[where-2+amount];for(;p1<&array[where-1+amount/2];p1++,p2--){temp=*p1;*p1=*p2;*p2=temp;}}知識點(diǎn)解析:函數(shù)reson的主要功能是將指定的幾個數(shù)據(jù)按原順序相反的順序重新排列??梢圆捎醚h(huán)加數(shù)組的方式實(shí)現(xiàn)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的工程MyProj2。此工程包含一個源程序文件MyMain2.cpp,此程序的運(yùn)行結(jié)果為:Derive1’sPrint()Called.Derive2’sPrint()called.其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。①定義函數(shù)Print()為無值型純虛函數(shù)。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。②建立類Derivel的構(gòu)造函數(shù),請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。③完成類Derive2成員函數(shù)Print()的定義。請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。④定義類Derivel的對象指針d1,類Derive2的對象指針d2。其初始化值分別為1和2。源程序文件MyMain2.cpp中的程序清單如下://MyMain2.cpp#include<iostream>usingnamespacestd;classBase{public:Base(inti){b=i;}//**1**protected:intb;};classDerivel:publicBase{public://**2**voidprint(){cout<<"Derivel’sPrint()called."<<end1;}};classDerive2:publicBase{public:Derive2(inti):Base(i){}//**3**};voidfun(Base*obj){obj->Print();}intmain(){//**4**fun(d1);fun(d2);return0;}標(biāo)準(zhǔn)答案:①virtualvoidPrint()=0;②Derivel(inti):Base(i){}③voidPrint(){cout<<"Derive2’sPrint()called."<<end1;}④Derivel*d=newDerive1(1);Derive2*d2=newDerive2(2)知識點(diǎn)解析:本題是一道綜合應(yīng)用題,考核繼承與派生,以及純虛函數(shù)。①在第1處定義函數(shù)Print()為無值型純虛函數(shù)。根據(jù)C++中無純虛函數(shù)的定義格式可知在第1處應(yīng)填入“virtualvoidPrint()=0;”。②在第2處建立類Derivel的構(gòu)造函數(shù),其中還要調(diào)用基類的構(gòu)造函數(shù)。所以應(yīng)填入“Derivel(inti):Base(i){}”。③在第3處完成類Derive2成員函數(shù)Print()的定義,根據(jù)程序的輸出可知,此處應(yīng)填入“voidPrint(){cout<<"Derive2’sPrint()called.”<<end1;}。④在第4處定義類Derive1的對象指針d1,類Derive2的對象指針d2,其初始化值分別為1和2。所以應(yīng)填入“Derive1*d=newDerive1(1);Derive2*d2=newDerive2(2)”。國家二級(C++)機(jī)試模擬試卷第4套一、程序改錯題(本題共1題,每題1.0分,共1分。)1、使用VC6打開老考生文件夾下的工程test5_1,此工程包含一個源程序文件test5_1.cpp,但該程序運(yùn)行有問題,請改正程序中的錯誤,使程序的輸出結(jié)果如下:x=3y=5z=08源程序文件test5_1.cpp清單如下:#include<iostream.h>staticintx=5;intz=0;int*add(intx,inty){cout<<"X="<<X<<"y="<<y<<"Z="<<z<<endl;z=z+x+y;/********found*********/returnz;/********found*********/};voidmain(){inty=5;intx=3;/*********found********/cout<<&(add(X,y))<<endl;}標(biāo)準(zhǔn)答案:(1)錯誤:returnz;正確:return&z;(2)錯誤:};正確:}(3)錯誤:cout<<&(add(x,y))<<endl;正確:cout<<*(add(x,y))<<endl;知識點(diǎn)解析:(1)主要考查考生對于函數(shù)返回類型的掌握,該函數(shù)的返回值應(yīng)該是指向int型的指針,所以應(yīng)該將地址作為返回值:(2)主要考查考生對于類定義格式與函數(shù)定義格式區(qū)別的掌握,類的定義最后應(yīng)該使用“;”而函數(shù)不需要用“;”;(3)主要考查考生對于有返回值的函數(shù)調(diào)用的掌握,函數(shù)定義是返回指針型的,調(diào)用的時候就應(yīng)該使用取地址符號。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、編寫函數(shù)fun(),它的功能是利用以下所示的簡單迭代方法求方程cos(x)-x=O的一個實(shí)根。Xn+1=COS(Xn)迭代步驟如下:(1)取x1初值為0.0。(2)xO=x1,把x1的值賦給x0。(3)x1=cos(x0),求出一個新的x1。(4)若x0-x1的絕對值小于0.000001,則執(zhí)行步驟(5),否則執(zhí)行步驟(2)。(5)所求x1就是方程cos(x)-x=O的一個實(shí)根,作為函數(shù)值返回。程序輸出結(jié)果Root=0.739085。注意:部分源程序已存在文件rest6_2.cpp中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。文件test6_2的內(nèi)容如下:#include<conio.h>#include<math.h>#include<iostream.h>floatfun(){}voidmain(){cout<<"Root="<<fun()<<endl;}標(biāo)準(zhǔn)答案:floatfun(){floatx1=0.0,x0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>=1e-6);returnx1;}知識點(diǎn)解析:解答本題的關(guān)鍵之處在于看清題中所給的“迭代步驟”,同時要理解xn+1=cosxn通式的含義,要考慮到x1的初值為0.0注意:fabs()函數(shù)的功能是用來求某數(shù)的絕對值,用時要進(jìn)行文件包含#include<math.h>。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的工程test4_3。此工程包含一個源程序文件test4_3.cpp,其對一個學(xué)校的教師和考生情況進(jìn)行了描述。由于教師和考生之間有相同的信息,如姓名、年齡等,所以可抽象出一個基類person,考生類student和教師類teacher作為person類的派生類。請按要求完成下列操作,將程序中的類定義補(bǔ)充完整。(1)定義基類person的私有數(shù)據(jù)成員name和age,分別用于表示姓名和年齡,name為字符指針,age為血型的數(shù)據(jù)。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。(2)完成基類person的重載構(gòu)造函數(shù)person(char*minta)的定義,把數(shù)據(jù)成員name,age分別初始化為參數(shù)n,a的值,請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。(3)根據(jù)主函數(shù)main中對s1的聲明,定義派生類student的構(gòu)造函數(shù)。在注釋“//**3**”之后添加適當(dāng)?shù)恼Z句。(4)完成派生類teacher成員函數(shù)voidsetinf(ehar*n,inta,char*d,char*1)的定義,其功能為記錄教師的姓名、年齡、院,系與職稱信息。請?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z句。輸出結(jié)果如下:劉雷(45)destructor蔣軍(23)destructor注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。源程序文件test4_3.cpp清單如下:#include<iostream.h>classperson{//**1**public:person(){}person(char*n,inta){//**2**}voidsetname(char*n){name=n;)voidsetage(inta){age=a;}~person(){cout<<name<<"("<<age<<")destructor"<<endl;)};classstudent:publicperson{char*department;intcode;public://**3**{department=d;code=c;}};classteacher:publicperson{char*department;char*level;public:teacher(){}voidsetinf(char*n,inta,char*d,char*1){//**4**department=d;level=1;}};voidmain(){students1("蔣軍",23,"計(jì)算機(jī)學(xué)院",2);teachert1;t1.setinf("劉雷",45,"計(jì)算機(jī)學(xué)院","教授");}標(biāo)準(zhǔn)答案:(1)char*name;intage;(2)name=n;age=a;(3)student(char*n,inta,char*d,intc):persomn(n,a)(4)setname(n);setage(a);知識點(diǎn)解析:本題考查考生對類的繼承與派生的掌握,包括派生類對基類成員的訪問和派生類構(gòu)造函數(shù)的定義等知識點(diǎn)。注意派生類構(gòu)造函數(shù)傳遞參數(shù)的功能。國家二級(C++)機(jī)試模擬試卷第5套一、程序改錯題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的工程test3_1,此工程包含一個源程序文件test3_1.cpp,但該程序運(yùn)行有問題,請改正程序中的錯誤,使程序的輸出結(jié)果如下:A:a=5display1:a=6display2:a=5源程序文件test3_1.cpp清單如下:#include<iostream.h>ClassA{public:/**********found**********/A(){}voidprinta(){cout<<"A:a="<<a<<endl;}private:inta;/***********found**********/classB;};classB{public:/*********found**********/voiddisplay1(At){(*t).a++;cout<<"display1:a="<<(*t).a<<endl;}voiddisplay2(At){t.a--;cout<<"display2:a="<<t.a<<end1;}};voidmain(){Aobj1;Bobj2;obj1.printa();obj2.display1(&obj1);obj2.display2(obi1);}標(biāo)準(zhǔn)答案:(1)錯誤:A(){}正確:A(){a=5;}(2)錯誤:classB;正確:friendclassB;(3)錯誤:voiddisplay1(At)正確:voiddisplay1(A*t)知識點(diǎn)解析:(1)主要考查考生對于缺省構(gòu)造函數(shù)的理解,由主函數(shù)的obj1.printa()可知原缺省構(gòu)造函數(shù)定義不完整;(2)主要考查考生對于友元的理解,如果類B不是類A的友元,則類B不能直接調(diào)用類A的私有成員,只有友元類和友元函數(shù)可以訪問類的所有成員;(3)主要考查考生對于指針的概念掌握,由函數(shù)體中的使用可以看出,這里的定義應(yīng)該是對象指針,指針的定義是使用*加上變量名。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、常用字符串函數(shù)strcat(s1,s2)可將字符串s2添加到字符串s1的末端,但其使用必須保證字符串s1足夠大,以便保存它自己的內(nèi)容和字符串s2中的內(nèi)容。請編寫一個函數(shù)char*append(char*s1,char*s2),其可將字符串s2添加到字符串s1的末端,而且不受s1空間大小的限制。請利用常用字符串函數(shù)實(shí)現(xiàn)。常用字符串函數(shù)說明:strcpy(to,form):將form字符串復(fù)制到to字符串;strcat(s1,s2):將字符串s2添加到字符串s1的末端,但必須保證字符串s1足夠大;strlen(s):返回字符串s的長度;注意:部分源程序已存在文件test4_2.cpp中。請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)append的花括號中填寫若干語句。輸出結(jié)果如下:thisisastring.文件test4_2.cpp的內(nèi)容如下:#include<iostream.h>#include<string.h>char*append(char*s1,char*s2){}voidmain(){char*s,*s1,*s2;s1="thisis";s2=",astring.";s=append(s1,s2);cout<<s<<endl;}標(biāo)準(zhǔn)答案:char*append(char*s1,char*s2){char*tmp;intlength;length=strlen(s1)+strlen(s2);tmp=newchar[1ength+1];strcpy(tmp,s1);strcat(tmp,s2);returntmp;}知識點(diǎn)解析:本題考查考生利用常用字符串函數(shù)編寫新函數(shù)的能力。strlen返回參數(shù)含有的字符個數(shù),strcpy是字符串復(fù)制函數(shù),作用是將第二個參數(shù)賦值給第一個參數(shù),strcat是字符串追加函數(shù),可將參數(shù)2添加到參數(shù)1的末端,new是動態(tài)申請空間,返回指向該空間的指針。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的工程test2_3。此工程包含一個test2_3.cpp,其中定義了類Stud,但類的定義并不完整。請按要求完成—下列操作,將程序補(bǔ)充完整。(1)定義類的公有數(shù)據(jù)成員no,name[10],其中no是int型的數(shù)據(jù),name[10]是字符型一維數(shù)組。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。(2)完成函數(shù)set的定義,分別將參數(shù)n,na的值賦給數(shù)據(jù)成員no,name。注意:請使用this指針完成對no的賦值,使用字符串函數(shù)實(shí)現(xiàn)對name和cname的賦值。請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。(3)完成類的成員函數(shù)disp的定義,使其按no,deg,name和cname的順序輸出類的數(shù)據(jù)成員的值,中間使用跳格符分隔,請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。輸出結(jié)果如下:1李華959907012王東83990702注意:除在指定的位置添加語句外,請不要改動程序中的其他語句。源程序文件test2_3.cpp清單如下:#include<iostream.h>#include<string.h>classStud{public://**1**intdeg;charcname[10];Stud(){}voidset(intn,charna[],intd,charcn[]){//**2**deg=d;strcpy(cname,cn);}voiddisp(){//**3**}};voidmain(){Studobj[2];obj[0].set(1,,"李華",95,"990701");obj[1].set(2,"王東",83,"990702");obj[0].disp();obj[1].disp();}標(biāo)準(zhǔn)答案:(1)intno;charname[10];(2)this->no=n;strcpy(name,na);(3)cout<<no<<"\t"<<name<<"\t"<<deg<<"\r"<<cname<<endl;知識點(diǎn)解析:主要考查考生對于對象定義、this指針和字符串函數(shù)的使用。this指針是指向正在被某個成員函數(shù)操作的對象的指針,需要使用->調(diào)用其他的函數(shù),strcpy是字符串復(fù)制函數(shù),作用是將第二個參數(shù)賦值給第一個參數(shù)。國家二級(C++)機(jī)試模擬試卷第6套一、程序改錯題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的工程test16_1,此工程包含一個源程序文件test16_1.cpp,但該程序運(yùn)行有問題,請改正程序中的錯誤,使程序的輸出結(jié)果為:Whichact(aorb)?bact1act2Bact3Bact4Bend源程序文件test16_1.cpp清單如下:#include<iostream.h>classA{public:virtualvoidact1(){cout<<"actl\n";act2();}voidact2(){cout<<"act2\n";act3();}/**********+******found*****************/voidact3(){cout<<"Aact3\n";act4();}/*****************found*****************/virtualvoidact4{cout<<"Aact4\n";act5();}voidact5(){cout<<"Aend\n";}};classB:publicA{voidact3(){cout<<"Bact3\n";act4();}voidact4(){cout<<"Bact4\n";act5();}voidact5(){cout<<"Bend\n";}};voidmain(void){charc;A*a;cout<<"Whichact(aorb)?";/*****************found*****************/cin<<c;if(c==’a’)a=newA;elsea=newB;a->act1();deletea;}標(biāo)準(zhǔn)答案:(1)錯誤:voidact3(){cout<<"Aact3\n";act4();}正確:virtualvoidact3(){cout<<"Aact3\n";act4();}(2)錯誤:virtualvoidact4{cout<<"Aact4\n";act5();}正確:virtualvoidact4(){cout<<"Aact4\n";act5();}(3)錯誤:cin<<c;正確:cin>>c;知識點(diǎn)解析:(1)主要考查考生對于虛函數(shù)使用規(guī)則的理解,要實(shí)現(xiàn)對函數(shù)act3的動態(tài)聯(lián)編應(yīng)該使用虛函數(shù),這樣在本題中對于函數(shù)的調(diào)用才能實(shí)現(xiàn)根據(jù)不同對象調(diào)用不同函數(shù);(2)主要考查考生對于函數(shù)定義的掌握,雖然參數(shù)表為空,但括號是不能省略的:(3)主要考查考生是否會使用流輸入操作,本題中使用的是流輸出符。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、編寫類AA的成員函數(shù)intCompare(AAb),該函數(shù)用于比較*this與b的大小,若兩者含有元素的個數(shù)n相同,并且數(shù)組中前n個元素值對應(yīng)相同,則認(rèn)為兩者相等返回1,否則返回0。注意:用數(shù)組方式及for循環(huán)來實(shí)現(xiàn)該函數(shù)。輸出結(jié)果如下:a=ba<>C注意:部分源程序已存在文件testl7_2.cpp中。請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)Compare的花括號中填寫若干語句。文件testl7_2.cpp的內(nèi)容如下:#include<iostream.h>#include<stdlib.h>classAA{int*a;intn;intMS;public:voidInitAA(intaa[],intnn,intms){if(nn>ms){cout<<"Error!"<<end1;exit(1);}MS=ms;n=nn;a=newint[MS];for(inti=0;i<n;i++)a[i]=aa[i];}intCompare(AAb);};intAA::Compare(AAb){}voidmain(){AAa,b,c;intx[]={1,2,3,4,5};inty[]={1,2,3,6,7};intz[]={1,2,5,7,9};a.InitAA(x,3,5);b.InitAA(y,3,5);c.InitAA(z,3,5);if(a.Compare(b))cout<<"a=b"<<end1;elsecout<<"a<>b"<<end1;if(a.Compare(c))cout<<"a=c"<<end1;elsecout<<"a<>c"<<end1;}標(biāo)準(zhǔn)答案:intAA::Compare(AAb){if(n!=b.n)return0;for(inti=0;i<n;i++)if(a[i]!=b.a[i])return0;return1;}知識點(diǎn)解析:本題考查的是考生應(yīng)用for循環(huán)、if條件控制語句等基本控制結(jié)構(gòu)解決實(shí)際問題的能力。注意有多種返回0的情況:個數(shù)不等或者前n個數(shù)不等都要返回0。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的工程test15_3。此工程包含一個test15_3.cpp,其中定義了類Time和Timex,Timex公有繼承Time,但定義并不完整。請按要求完成下列操作,將程序補(bǔ)充完整。(1)完成類Time構(gòu)造函數(shù)的定義,將數(shù)據(jù)成員hours和minutes分別初始化為參數(shù)new_hours和new_minutes的值。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。(2)完成類Timex的構(gòu)造函數(shù)的定義,注意參數(shù)的傳遞。請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。(3)請按時間格式“hour:minute”和“hour:minute:second”分別輸出對象time1和time2所表示的時間,注意必須使用已經(jīng)定義的成員函數(shù)。請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。輸出結(jié)果如下:20:3010:45:34注意:除在指定的位置添加語句外,請不要改動程序中的其他語句。源程序文件test15_3.cpp清單如下:#include<iostream.h>classTime{public:Time(intnewhours,intnew_minutes){//**1**}intget_hours();intget_minutes();protected:inthours,minutes;};intTime::get_hours(){returnhours;}intTime::get_minutes(){returnminutes;}classTimex:publicTime{public:Timex(intnewhours,intnew_minutes,intnew_seconds);intget_seconds();protected:intseconds;};//**2**{seconds=new_seconds;}intTimex::get_seconds(){returnseconds;}voidmain(){Timetime1(20,30);Timextime2(10,45,34);//**3**}標(biāo)準(zhǔn)答案:(1)hours=new_hours;minutes=new_minutes;(2)Timex::Timex(intnew_hours,intnew_minutes,intnew_seconds):Time(new_hours,new_minutes)(3)cout<<time1.get_hours()<<":"<<time1.get_minutes()<<end1;cout<<time2.get_hours()<<":"<<time2.get_minutes()<<":"<<time2.get_seconds()<endl;知識點(diǎn)解析:本題主要考查考生對于類和派生類構(gòu)造函數(shù)的定義以及成員函數(shù)的使用,注意(2)中派生類構(gòu)造函數(shù)中必須包括向基類傳遞參數(shù)的調(diào)用,應(yīng)該使用參數(shù)列表完成這一操作。國家二級(C++)機(jī)試模擬試卷第7套一、程序改錯題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的工程test2_1,此工程包含一個源程序文件test2_1.cpp,但該程序運(yùn)行有問題,請改正程序中的錯誤,使該程序的輸出結(jié)果如下:調(diào)用基類BASE的構(gòu)造函數(shù):1調(diào)用基類BASE的構(gòu)造函數(shù):2調(diào)用派生類A的構(gòu)造函數(shù):3調(diào)用派生類A的析構(gòu)函數(shù)調(diào)用基類BASE的析構(gòu)函數(shù)調(diào)用基類BASE的析構(gòu)函數(shù)源程序文什test2_1.cpp清單如下:#include<iostream.h>classBASE{public:BASE(inti){cout<<"調(diào)用基類BASE的構(gòu)造函數(shù):"<<i<<endl;}~BASE(){cout<<"調(diào)用基類BASE的析構(gòu)函數(shù)"<<endl;)/*****************found*****************/}classA:publicBASE{public:/*****************found*****************/A(inta,intb):i(a),b(b){cout<<"調(diào)用派生類A的構(gòu)造函數(shù):"<<a+b<<endl;}~A(){cout<<"調(diào)用派生類A的析構(gòu)函數(shù)"<<endl;)private:BASEb;};voidmain(){/****************found***************/BASEobj(1,2);}標(biāo)準(zhǔn)答案:(1)錯誤:類BASE的定義缺少“;”正確:};(2)錯誤:A(inta,intb):i(a),b(b)正確:A(inta,intb):BASE(a),b(b)(3)錯誤:BASEobj(1,2);正確:Aobj(1,2);知識點(diǎn)解析:(1)主要考查考生對于類的定義的掌握,類定義結(jié)束后大括號外面不能缺少分號;(2)主要考查考生對于派生類構(gòu)造函數(shù)的掌握,該函數(shù)應(yīng)該實(shí)現(xiàn)將參數(shù)傳遞給基類的功能,即派生類的構(gòu)造函數(shù)應(yīng)使用參數(shù)列表的形式將基類的數(shù)據(jù)成員初始化,初始化的時候直接使用基類的名稱(BASE)而不是基類中變量的名稱(i);(3)主要考查考生對于基類和派生類函數(shù)調(diào)用關(guān)系的掌握,要調(diào)用派生類的構(gòu)造函數(shù)必須使用派生類的對象,構(gòu)造函數(shù)只有在該類的對象被使用的時候才會被調(diào)用。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請編寫函數(shù)fun,其功能是將兩個兩位數(shù)的正整數(shù)a,b合并形成一個整數(shù)放在c中。合并的方式是將a數(shù)的個位和十位數(shù)依次在c數(shù)千位和十位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的個位和百位。注意:部分源程序以存在文件test3_2.cpp中。請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填寫若干語句。文件test3_2.cpp的內(nèi)容如下:#include<iostream.h>voidfun(inta,intb,long*C){}voidmain(){inta,b;longc;cout<<"Inputa,b;"<<endl;cin>>a>>b;fun(a,b,&c);cout<<"Theresultis:"<<c<<endl;}標(biāo)準(zhǔn)答案:voidfun(inta,intb,long*c){*c=(a%10)*1000+(b%10)*100+(a/10)*1O+b/10;}知識點(diǎn)解析:本題考核整除運(yùn)算符“/”和取余運(yùn)算符“%”的應(yīng)用。對于兩位數(shù)a,a/1O得到a數(shù)的十位。a%10得到a數(shù)的個位。4個數(shù)字組成4位數(shù)時,各位數(shù)字要依次乘以1000,100,10,1。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文什夾下的工程test1_3。此工程包含一個test1_3.cpp,其中定義了類circle和column,其中column類由circle類protected派生,但兩個類的定義并不完整。請按要求完成下列操作,將程序補(bǔ)充完整。(1)定義類circle的保護(hù)數(shù)據(jù)成員r和area,它們都是double型的數(shù)據(jù)。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。(2)添加類circle的無參數(shù)的構(gòu)造函數(shù),使circle對象的r默認(rèn)值為0,請?jiān)谥尅?/**2**”之后添加適當(dāng)?shù)恼Z句。(3)添加派生類column構(gòu)造函數(shù)的定義,傳入的參數(shù)為double型的height和radius,并將具分別賦值給數(shù)擗成員h和基類的r,請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。(4)完成派生類column的成員函數(shù)print的定義,使其以格式“r=_area=_”先輸出半徑r和底面積area,再以格式“h=_vol=_”輸出高h(yuǎn)和體積vol的值,請?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z句。輸山結(jié)果如下:r=1area=3.1416h=2vo1=6.2832注意:除在指定的位置添加語句外,請不要改動程序中的其他語句。源程序文件test1_3.cpp清單如下:#include<iostream.h>constdoublepi=3.1416;classcircle{protected://**1**public://**2**circle(doubleradius){r=radius;}voidprint(){area=r*r*pi;cout<<"r="<<r<<""<<"area="<<ared<<endl;}};classcolumn:protectedcircle{protected:doubleh;public://**3**voidprint(){//**4**}};voidmain(){columncol(1.0,2.0);Col.print();}標(biāo)準(zhǔn)答案:(1)doubler;doublearea;(2)circle(){r=0;}(3)column(doubleradius,doubleheight):circle(radius){h=height;}(4)circle::print();cout<<"h="<<h<<""<<"vol="<<area*h<<endl;知識點(diǎn)解析:主要考查考生對于類的數(shù)據(jù)成員定義與成員函數(shù)構(gòu)造的掌握,其中(3)使用了參數(shù)列表進(jìn)行變量賦值,(4)使用作用域符::調(diào)用基類print函數(shù)。國家二級(C++)機(jī)試模擬試卷第8套一、選擇題(本題共39題,每題1.0分,共39分。)1、在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是()。A、邏輯設(shè)計(jì)B、需求分析C、詳細(xì)設(shè)計(jì)D、物理設(shè)計(jì)標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:軟件開發(fā)階段包括需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和測試五個階段。其中需求分析階段常用的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典。2、對序線性表(23,29,34,55,60,70,78)用二分法查找值為60的元素時,需要比較次數(shù)為()。A、1B、2C、3D、4標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:根據(jù)二分法查找法需要兩次:①首先將60與表中間的元素55進(jìn)行比較,由于60大于55,所以在線性表的后半部分查找。②第二次比較的元素是后半部分的中間元素,將60與表中間的元素70進(jìn)行比較,由于60小于70,所以在線性表的前半部分查找。③第三次比較的元素是前半部分的中間元素,即60,這時兩者相等,即查找成功。3、開發(fā)大型軟件時,產(chǎn)生困難的根本原因是()。A、大型系統(tǒng)的復(fù)雜性B、人員知識不足C、客觀世界千變?nèi)f化D、時間緊、任務(wù)重標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:隨著計(jì)算機(jī)軟件規(guī)模的擴(kuò)大,軟件本身的復(fù)雜性不斷增加,研制周期顯著變長,正確性難以保證,軟件開發(fā)費(fèi)用上漲,生產(chǎn)效率急劇下降,從而出現(xiàn)了人們難以控制軟件發(fā)展的局面,即所謂的“軟件危機(jī)”。4、兩個或兩個以上的模塊之間關(guān)聯(lián)的緊密程度稱為()。A、耦合度B、內(nèi)聚度C、復(fù)雜度D、連接度標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:耦合度是模塊間互相連接的緊密程度的度量;內(nèi)聚度是一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量。5、下列關(guān)于線性表的敘述中,不正確的是()。A、線性表可以是空表B、線性表是一種線性結(jié)構(gòu)C、線性表的所有結(jié)點(diǎn)有且僅有一個前件和后件D、線性表是由n個元素組成的一個有限序列標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:線性表是一種線性結(jié)構(gòu),由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結(jié)點(diǎn)沒有前件,最后一個結(jié)點(diǎn)沒有后件,其他結(jié)點(diǎn)有且只有一個前件和后件,所以選項(xiàng)C)是錯誤的。6、設(shè)有如下關(guān)系表:則下列操作正確的是()。A、T=R/SB、T=R×SC、T=R∩SD、T=R∪S標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:r就是關(guān)系R中有的,同時S中也有的有序組(4、5、6),即交運(yùn)算(n)。7、以下描述中,不是線性表順序存儲結(jié)構(gòu)特征的是()。A、可隨機(jī)訪問B、需要連續(xù)的存儲空間C、不便于插入和刪除D、邏輯相鄰的數(shù)據(jù)物理位置上不相鄰標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:線性表的順序存儲是用一片連續(xù)的空間來存放數(shù)據(jù)元素,其特點(diǎn)是邏輯上相鄰的元素在物理位置上也相鄰。數(shù)據(jù)元素之間邏輯上的先后關(guān)系自動隱含在物理位置的相鄰元素之中,因此不需要另外開辟空間來保存元素之間的關(guān)系。8、在三級模式之間引入兩層映像,其主要功能之一是()。A、使數(shù)據(jù)與程序具有較高的獨(dú)立性B、使系統(tǒng)具有較高的通道能力C、保持?jǐn)?shù)據(jù)與程序的一致性D、提高存儲空間的利用率標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:數(shù)據(jù)庫管理系統(tǒng)在數(shù)據(jù)庫的三級模式之間提供了兩層映像,保證了數(shù)據(jù)庫中數(shù)據(jù)的較高的邏輯獨(dú)立性和物理獨(dú)立性。9、下列方法中,屬于白盒法設(shè)計(jì)測試用例的方法的是()。A、錯誤推測B、因果圖C、基本路徑測試D、邊界值分析標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:白盒測試方法也稱為結(jié)構(gòu)測試或邏輯測試,主要方法有邏輯覆蓋測試、基本路徑測試等。10、關(guān)于虛函數(shù),以下說法正確的是()。A、若在重定義虛函數(shù)時使用了virtual,則該重定義函數(shù)還是虛函數(shù)B、虛函數(shù)不能聲明為友元C、子類必須重定義父類的虛函數(shù)D、虛函數(shù)不能是static的標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:在C++中,虛函數(shù)可以是友元函數(shù),但不能是靜態(tài)成員。虛函數(shù)的重定義函數(shù),無論是否使用virtual關(guān)鍵字,仍然是虛函數(shù)。所以答案選擇D)。11、下列關(guān)于純虛函數(shù)與抽象類的描述中,錯誤的是()。A、純虛函數(shù)是一種特殊的虛函數(shù),它沒有具體的實(shí)現(xiàn)B、抽象類是指具有純虛函數(shù)的類C、一個基類中說明具有純虛函數(shù),該基類的派生類一定不再是抽象類D、抽象類只能作為基類來使用,其純虛函數(shù)的實(shí)現(xiàn)由派生類給出標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:純虛函數(shù)是在聲明虛函數(shù)時被“初始化”為0的虛函數(shù)。不定義對象而只作為一種基本類型用作繼承的類,稱為抽象類。凡是包含純虛函數(shù)的類都是抽象類。抽象類的作用是作為一個類族的共同基類。12、將x+y*z中的“+”用成員函數(shù)重載,“*”用友元函數(shù)重載應(yīng)寫為()。A、operator+(operator*(y,z))B、x.operator+(operator*(y,z))C、x.operator+(x*(y,z))D、x+(operator*(y,z))標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:在定義了重載運(yùn)算符后的函數(shù)后,函數(shù)operator十重載了運(yùn)算符“+”。如果在類以外的其他地方定義了一個函數(shù),在類體中用fiiend對該函數(shù)進(jìn)行聲明,此函數(shù)就稱為本類的友員函數(shù)?!?”用友元函數(shù)重載就是運(yùn)算符函數(shù)不作為成員函數(shù),而把它放在類外,“*”被改寫為“operator*”?!?”為成員函數(shù)重載,x.operator+。所以x+-y*z被改寫為“x.operator+(operator*(y,z))”。13、以下程序的執(zhí)行結(jié)果是()。#include#includevoidfun(intn){if(n!=0){fun(n—1);for(inti=1;i<=n;i++)cout<A、001012B、112123C、122333D、123標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:首先由程序中的主函數(shù)main入手,調(diào)用fun函數(shù),參數(shù)為3。fun(n)函數(shù)在其內(nèi)部,當(dāng)n不等于O時,遞歸調(diào)用fun(n-1)。當(dāng)參數(shù)為3時,fun(3)調(diào)用fun(2)…,然后利用for循環(huán)輸出i值,當(dāng)n=1時,只輸出1,輸出回車后,就跳入fun(2),輸出1,2,最后輸出是1,2,3。14、有以下程序,在橫線應(yīng)添加()。#includeusingnamespacestd;classTestC:lass{public:TestClass(intn){number=n;)//拷貝構(gòu)造函數(shù)-TestClass0{)private:intnumber;);TestClassfun(TestClassP){TestClasstemp(p);returntemp;}intmain(){TestClassobj10(10),obj2(0);TestClassobj3(objil);obj2=fun(obj3);return0;}A、TestClass(TestClass&other){number=other.number;)B、TestClass(TestClassother){number=other.number;)C、TestClass(TestClass&other){number;)D、TestClass(&other){number=other.number;}標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:拷貝構(gòu)造函數(shù)也是構(gòu)造函數(shù),但它只有一個參數(shù),這個參數(shù)是本類的對象,即other,所以賦值操作將本類的參數(shù)other.number賦值給number;而且采用對象的引用的形式,也就是&other。15、執(zhí)行完下列代碼段之后:bootx=true,V=false,Z=false;x=x&&yttz;y=xIIy&&z;z=!(x!=y)II(y=z);則x=false,y=false,z=()。A、真B、假C、不確定D、異常標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:其中“x=x&&yfIz;”語句計(jì)算后x=false,“y=xlIy&&z;”語句計(jì)算后y=false。那么“z=!(x!=y)ll(y==z);”語句計(jì)算后“z=!(。ture)lItrue”,所以答案為:true.16、如果表達(dá)式一x/y中的“一”和“/”是作為友元函數(shù)重載的運(yùn)算符,采用運(yùn)算符函數(shù)調(diào)用格式,該表達(dá)式還可表示為()。A、operator/(x.operato一0,y);B、operator/(operator一(x),y);C、x.operator一().operator/(y);D、y.operator/(operator一(x));標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:運(yùn)算符重載實(shí)際上時函數(shù)的重載。重載運(yùn)算符的一般格式:函數(shù)類型operator運(yùn)算符名稱(參數(shù)表)。重載運(yùn)算符之后:函數(shù)operator+重載運(yùn)算符“+”?!耙弧敝剌d為“operator一:”,“/”重載為“operator/”。另外重載不能改變運(yùn)算的優(yōu)先級,一x/y計(jì)算~x后,除以v,所以表達(dá)式改寫為:operator/(operator-一(x),y);。17、將以下程序?qū)懗扇窟\(yùn)算表達(dá)式是()。if(xA、min=(x>y)?x:yB、min=(xC、min=(xD、min=(x標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:題目中給出的程序是求x,y中的小值。即如果x小于v,那么min=x,否則min=y。條件運(yùn)算符為“?:”,(x18、定義如下枚舉類型:enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};,則下列語句正確的是()。A、表達(dá)式Wednesday=Friday的值是trueB、Dayday;day=3C、Dayday;day=Monday+3D、Dayday;day=Tuesday+10標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:enum<枚舉類型名>{<枚舉元素表>};其中:關(guān)鍵詞enum表示定義的是枚舉類型,枚舉類型名由標(biāo)識符組成,而枚舉元素表由枚舉元素或枚舉常量組成。其中enum{Monday,Tuesday,Wednesday,Tlarusday,Friday=2}的值由0開始,即0,1,2,3。D中的本題中的枚舉類型中的數(shù)據(jù)值Wednesday為2,而Friday的值賦值為2,所以判斷Wednesday等于Friday的表達(dá)式值為真,即true。即選擇A)。19、函數(shù)swap(a,n)可完成對a數(shù)組從第1個元素到第n個元素兩兩交換。其中b[0]=1;b[1]=2;swap(b,2)。在運(yùn)行調(diào)用函數(shù)中的語句后,b[0]和b[1]的值分別為()。A、1,1B、1,2C、2,2D、2,1標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:如果函數(shù)實(shí)參是數(shù)組名,形參也應(yīng)為數(shù)組名,函數(shù)swap中形參進(jìn)行了交換,實(shí)際上也是實(shí)參進(jìn)行了交換。而且數(shù)組名代表數(shù)組首元素的地址,并不代表數(shù)組的全部元素。所以,swap(b,2)是數(shù)組b第一個元素與第二個元素進(jìn)行交換,即b[0]與b[1],根據(jù)題干,知道答案為2,1。20、下列for循環(huán)的循環(huán)體執(zhí)行次數(shù)為()。for(inti(0)j(10);i=j=4;i++,j--)A、0B、1C、4D、無限標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:循環(huán)條件i=4;是個賦值語句,使得i,j的值非0,所以是死循環(huán)。21、下述關(guān)于開關(guān)語句的描述中,正確的是()。A、開關(guān)語句中default子句可以沒有,也可以有一個B、開關(guān)語句中每個語句序列中必須有break語句C、開關(guān)語句中default子句只能放在最后D、開關(guān)語句中case子句后面的表達(dá)式可以是整型表達(dá)式標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:在switch語句中default的位置不是固定在最后的位置,同時default也是可以省略。22、下列存儲類標(biāo)識符中,可見性與存在性不一致的是()。A、外部類B、自動類C、內(nèi)部靜態(tài)類D、寄存器類標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:可見性是函數(shù)內(nèi)部,存在整個程序中,第二次調(diào)用值不變。23、下述靜態(tài)數(shù)據(jù)成員的特征中,錯誤的是()。A、說明靜態(tài)數(shù)據(jù)成員時前面要加修飾符staticB、靜態(tài)數(shù)據(jù)成員要在類體外進(jìn)行初始化C、引用靜態(tài)數(shù)據(jù)成員時,要在靜態(tài)數(shù)據(jù)成員名前加<類名>和作用域運(yùn)算符D、靜態(tài)數(shù)據(jù)成員不是所有對象所共用的標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:靜態(tài)數(shù)據(jù)成員是在類裝載的時候就分配了內(nèi)存空間,而類的成員變量是在生成對象時分配內(nèi)存空間。所以只要類裝載了,就可以用類名訪問靜態(tài)數(shù)據(jù)成員。事實(shí)上,該類的所有對象都只保存類靜態(tài)數(shù)據(jù)成員的引用,它們都指向同一塊內(nèi)存區(qū)域。24、以下程序的執(zhí)行結(jié)果是()。#includeinta[8]={1,2,3,4,5,6,7):voidthn(int*pa,intn);voidmain(){intm=8:fun(a,m);cout<A、0B、1C、4D、28標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:voidfun(int*pa,intn)函數(shù)定義的功能就是把數(shù)組的每個元素的值加到元素pa[7]中,也就是數(shù)組的元素之和放在a[7]中存儲,所以結(jié)果28。25、以下程序段是函數(shù)返回a所指數(shù)組中最大的值所在的下標(biāo)值,橫線處的語句為()。fun(int*a,intn){{inti,j=0,k:k=j;for(i=j;ia[k])______:return(k);}A、k=iB、k=jC、i=qD、i=n標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:函數(shù)fun中首先定義整型變量k用來存放返回最大值的下標(biāo),并將其首先指向第一個元素,即k=j。然后在for循環(huán)中依次將當(dāng)前元素a[i]與標(biāo)識為最大值的元素進(jìn)行比較,如果當(dāng)前元素大于這個標(biāo)識元素,那么將最大值標(biāo)識為當(dāng)前元素,即k=i。26、純C++程序中,如果要求通過函數(shù)來實(shí)現(xiàn)一種簡單的功能,并且要求盡可能加快程序執(zhí)行速度,則應(yīng)該選用()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、遞歸調(diào)用D、嵌套調(diào)用標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:此題考查的是內(nèi)聯(lián)函數(shù)的相關(guān)知識點(diǎn)。C++引入內(nèi)聯(lián)函數(shù)是用它來代替C語言中的預(yù)處理宏函數(shù),內(nèi)聯(lián)函數(shù)在調(diào)用時,是將表達(dá)式用內(nèi)聯(lián)函數(shù)體來替換,這樣會加快程序的執(zhí)行速度。27、有如下類聲明:classMyBASE{intk:public:voidset(int11){k=n;}intgetOconst{returnk:};classMyDERlVED:protectedMyBASE}}protected:intj:public:voidset(intm,intn){MyBASE::set(m);j=nI}intgetoconst{returnMyBASE::get()+j;}}:則類MyDERIVED中保護(hù)的數(shù)據(jù)成員和成員函數(shù)的個數(shù)是()A、4B、3C、2D、1標(biāo)準(zhǔn)答案:B知識點(diǎn)解析:因?yàn)樵诒Wo(hù)繼承的情況下,基類中的公有成員voidset(intn)和inIget()const在派生類中是保護(hù)成員,再加上派生類自身的保護(hù)成員j,一共是三個保護(hù)成員。28、下列關(guān)于繼承的描述中,錯誤的是()。A、析構(gòu)函數(shù)不能被繼承B、派牛類是基類的組臺C、派牛類的成員除了它自己的成員外,還包含了它的基類的成員D、派牛類中繼承的基類成員的訪問權(quán)限到派牛類保持不變標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:派生類中繼承的基類成員的訪問權(quán)限到派生類會發(fā)生變化,例如:私有繼承時,派生類不能訪問基類的成員,所以選項(xiàng)D)錯誤,其他選項(xiàng)均正確。29、類的析構(gòu)函數(shù)的作用是()。A、一般成員函數(shù)B、類的初始化C、對象的初始化D、釋放由對象所占用的資源標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:類的在撤銷對象時,系統(tǒng)會自動調(diào)用類的析構(gòu)函數(shù),析構(gòu)函數(shù)用來釋放由對象所占用的資源。30、如果表達(dá)式y(tǒng)*z++中?!?”是作為成員函數(shù)重載的運(yùn)算符,“++”是作為友元函數(shù)重載的運(yùn)算符,采用運(yùn)算符函數(shù)調(diào)用格式,該表達(dá)式還可表示為()。A、x.operator++(0).operator*(y)B、operator*(x.operator++(0),y)C、y.0perator*(operator++(x,0))D、0perator*(opera*(or++(x,0),y)標(biāo)準(zhǔn)答案:C知識點(diǎn)解析:運(yùn)算符函數(shù)有兩種調(diào)用形式,第一種是像一般函數(shù)那樣用函數(shù)名調(diào)用,即y.operator*(z)或者operator*(y,z);另一種是通過運(yùn)算符構(gòu)成表達(dá)式,即y*z。因?yàn)椤?+”運(yùn)算符既可以作為前綴運(yùn)算符,又可以作為后綴運(yùn)算符,所以重載這個運(yùn)算符時,重載后綴“++”時必須多一個虛擬參數(shù):int。31、有如下程序:#includeusingnamespacestd;classXX{protected:intk:public:xx(intn=5):k(n){}:~XX(){Cout<<“XX”;}virtualvoidfoconst=0;};inlinevoidXX::foconst{cout<A、28XXB、28YYXXC、33XXD、33XXYY標(biāo)準(zhǔn)答案:A知識點(diǎn)解析:類YY公有派生于類XX,派生類對象可以替代基類對象向基類對象的引用進(jìn)行賦值初始化,XX&p=*newYY語句定義了XX對象p引用,并用YY對象初始化,p并不是YY對象的別名,是XX基類對象的別名,故先調(diào)用基類XX的構(gòu)造函數(shù)將k初始化為5,p.f()首先輸出k一3即2,然后調(diào)用XX::f()輸出k+3即8,delete&p刪除p,調(diào)用XX的析構(gòu)函數(shù)輸出“XX”。32、有如下函數(shù)模板:templateTcast(Uu){returnu;}功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對模板函數(shù)cast的調(diào)用中正確的是()。A、cast(i);B、cast<>(i);C、cast(i);D、cast(i);標(biāo)準(zhǔn)答案:D知識點(diǎn)解析:選項(xiàng)D)是將double類型的數(shù)據(jù)轉(zhuǎn)化成int類型的數(shù)據(jù),正確。33、閱讀下面的程序:#includevoidmain(){intx:cin>>x;if(x++>5)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論