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

下載本文檔

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

文檔簡介

國家二級C++機(jī)試(操作題)模擬試卷3(共9套)(共27題)國家二級C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯,請改正程序中的錯誤,使程序輸出的結(jié)果為:1003732注意:錯誤的語句在//******error******的下面,修改該語句即可。#include//******error******voidmain({//******error******intm=0142;//******error******intn=0X27;intq=32;cout<標(biāo)準(zhǔn)答案:(1)Voidmain()(2)intm=0144;(3)intn=0x25;.或intn=0x25;知識點(diǎn)解析:(1)本題主要考察了主函數(shù)定義及不同進(jìn)制之間的轉(zhuǎn)換,包括十進(jìn)制到八進(jìn)制,十進(jìn)制到十六進(jìn)制。主函數(shù)定義的定義形式為“main()”,函數(shù)名之后必須是一對括號,因此第1個(gè)標(biāo)識下應(yīng)改為“voidmain()”。(2)cout輸出默認(rèn)是10進(jìn)制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)現(xiàn)變量的初值不正確,十進(jìn)制的100對應(yīng)八進(jìn)制的144,十進(jìn)制的37對應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分別改成“intm=0144;”,“intn=0X25;”或“intn=0x25;”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。完成fun()函數(shù),其功能是:將兩個(gè)從小到大有序數(shù)組a和b,復(fù)制合并出一個(gè)有序整數(shù)序列c,其中形參n和m分別是數(shù)組a和b的元素個(gè)數(shù)。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#includevoidfun(inta[],intn,intb[],intm,int*c){}voidmain(){intA[]={3,5,7,9,11,18,21};intB[]={6,15,19,21,39};intC[15],i;for(i=0;i<25;i++)c[i]=0;cout<<"A[]=";for(i=0;i<7;i++)tout<標(biāo)準(zhǔn)答案:inti,j;for(i=j=0;i知識點(diǎn)解析:(1)首先都指向數(shù)組的第一個(gè)元素。(2)然后利用for循環(huán)對要合并的兩個(gè)數(shù)組中的元素進(jìn)行比較,直到兩個(gè)數(shù)組結(jié)束。(3)取比較結(jié)果小的元素,并將指向這個(gè)數(shù)組的位置向后移動一位。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)定義復(fù)數(shù)類CComplex的私有成員變量real和imaginary,分別用來表示復(fù)數(shù)的實(shí)部和虛部,都是double類型的變量。請?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)添加復(fù)數(shù)類CComplex的帶一個(gè)參數(shù)的構(gòu)造函數(shù),分別將real和imaginary賦值為參數(shù)r和0。請?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z句。(3)完成對運(yùn)算符“+”的重載,分別對復(fù)數(shù)的實(shí)部和虛部相加。請?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z句。(4)完成復(fù)數(shù)的友元函數(shù)Equal(CComplex&c1,CComplex&c2)的定義,如果兩個(gè)數(shù)的實(shí)部和虛部都相等,則返回1,否則返回0,請?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。#includeclassCComplex{private://********1********public:CComplex(){real:imaginary=0;)CComplex(doubler){//********2********}CComplexoperator+(CComplex&c1){//********3********temp.real=real+c1.real;temp.imaginary:imaginary+c1.imaginary;returntemp;}voidSet(intre,intimag){real=re;imaginary=imag;}friendboolEqual(CComplex&c1,CComplex&c2);};boolEqual(CComplex&c1,CComplex&c2){//********4********}intmain(){CComplexcomplexl(5);CComplexcomplex2;cout<標(biāo)準(zhǔn)答案:(1)添加語句:doublereal,imaginary;(2)添加語句:real=r;imagimsry=0;(3)添加語句:CComplextemp;知識點(diǎn)解析:(1)第1個(gè)標(biāo)識下完成定義復(fù)數(shù)類CComplex的私有成員變量real和imaginary,均為double類型的變量,因此第1個(gè)標(biāo)識下應(yīng)添加“doublereal,imaginary;”。(2)構(gòu)造函數(shù)CComplex(doubler)完成類的初始化,該構(gòu)造函數(shù)有一個(gè)參數(shù),分別將real和imaginary賦值為參數(shù)r和0,因此第2個(gè)標(biāo)識下應(yīng)添加“real=r;imaginary=0=9;”。(3)編譯程序可知,變量temp沒有定義,由operator+(CComplex&c1)函數(shù)體的語句可知,temp為函數(shù)的返回值,而operator+(CComplex&c1)函數(shù)體函數(shù)返回CComplex類對象,故在第3個(gè)標(biāo)識下補(bǔ)充temp定義,即“CComplextemp;”。(4)即判斷兩個(gè)對象c1和c2的實(shí)部和虛部是否均相等,兩個(gè)邏輯結(jié)果相與即可,因此第4個(gè)標(biāo)識下應(yīng)添加“retum(c1.real==c2.real)&&(c1.imaginary==c2.imaginary);”。國家二級C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1。程序中位于每個(gè)“//ERROR****found****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)為:Name:SmithAge:21ID:99999CourseNum:12Record:970注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動程序中的其他內(nèi)容。1#include<20StEeam>2usingnamespacestct;3ClassStudentIinfo4{5protected:6//ERROR********found********7charName;8intAge;9intID;10intCourseNum;11f20aLRecord;12public:13StudentInfo(char*name,intAge,intID,intcourseNum,float:record);1415//ERROR********found********16void~StudentInfo(){)17floatAverageRecord(){18returnRecord/CourseNum;19}20VOidshow()corlst{21cout<<"Name:"<ID=ID;3lCourseNum=courseNum;32Record=Eecord;33}34intmain()35{36StudentInfost("Smith",21,99999,12,970);37st.show();38return0;39}標(biāo)準(zhǔn)答案:(1)char*Name;(2)~Studentlnfo(){}(3)Studentlnfo::Studentlnfo(char*name,intage,intID.intcourseNum,floatrecord)知識點(diǎn)解析:(1)主要考查考生對動態(tài)數(shù)組的掌握,由題目可知Name應(yīng)該指向一個(gè)動態(tài)數(shù)組,而不是一個(gè)有效char型字符,因此要定義成char型指針。(2)主要考查考生對析構(gòu)函數(shù)的掌握,析構(gòu)函數(shù)不需要函數(shù)返回類型,應(yīng)把void去掉。(3)主要考查考生對構(gòu)造函數(shù)定義的掌握,構(gòu)造函數(shù)也要使用作用域符號“::”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含一個(gè)程序文件main.cpp,其中有類AutoMobile(“汽車”)及其派生類Car(“小轎車”)、Truck(“卡車”)的定義,還有主函數(shù)main的定義。請?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:車牌號:冀ABCl234品牌:ForLand類別:卡車當(dāng)前檔位:0最大載重量:12車牌號:冀ABCl234品牌:ForLand類別:卡車當(dāng)前檔位:2最大載重量:12車牌號:滬XYZ5678品牌:QQ類別:小轎車當(dāng)前檔位:0座位數(shù):5車牌號:滬XYZ5678品牌:QQ類別:小轎車當(dāng)前檔位:-1座位數(shù):5注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。1#include2#include3#include4usingnamespacestd;5classAutoMobilef//“汽車”類6char*brand;//汽車品牌7char*number;//車牌號8intspeed;//檔位:1、2、3、4、5,空檔:0,倒檔:-19public:10AutoMobile(constchar*thebrand,constchar*the_number):speed(0){11brand=newchar[strlen(thebrand)+1];12//**********found**********13______;14//**********found**********15______;16strcpy(number,thenumber);17}18~AutoMobile(){delete[]brand;delete[]number;}19constchar*theBrand()const{re-turnbrand;}//返回品牌名稱20constchar*theNumber()const{re-turnnumber;}//返回車牌號21intcurrentSpeed()const{returnspeed;}//返回當(dāng)前檔位22voidchangeGearTo(intthespeed){//換到指定檔位23if(speed>=-1&&speed<=5)24speed=thespeed;25}26virtualconstchar*category()const=0;//類別:卡車、小轎車等27virtualvoidshow()const{28cout<<"車牌號:"<標(biāo)準(zhǔn)答案:(1)strcpy(brand,the_brand)(2)number=newchar[strlen(the_number)+1](3)theBrand()(4)const{return"卡車";}知識點(diǎn)解析:(1)主要考查考生對strcpy函數(shù)的掌握情況,在上一條語句程序給brand指針分配了空間,在這里要復(fù)制字符串the_brand,即strcpy(13rand,the_brand);。(2)主要考查考生對動態(tài)分配的掌握情況,參考brand指針的復(fù)制過程完成該語句,先給指針number分配空間,通過new來完成:number=Dewchar[strlen(the_number)+1];。(3)主要考查考生對成員函數(shù)的掌握,由程序可知這里要輸出的是品牌,因此調(diào)用成員函數(shù)theBrand()來輸出品牌。(4)主要考查考生對純虛函數(shù)的掌握,根據(jù)純虛函數(shù)的定義:virtualconstchar*category()const=0;,可知在這里要填寫:const{return"卡車";}。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中包含主程序文件main.cpp和用戶定義的頭文件Array.h,整個(gè)程序包含有類Array的定義和主函數(shù)main的定義。請把主程序文件中的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)容。1//Array.h2#include3usingnamespacestd;45template6classArray{//數(shù)組類7public:8Array(Typeb[],intmm){//構(gòu)造函數(shù)9for(inti=0;i=m)22{cout<<"下標(biāo)越界!"<5voidArray::Contrary(){//補(bǔ)充函數(shù)體6//********333********789//********666********10}11intmain(){12ints1[5]={1,2,3,4,5};13doubles2[6]={1.2,2.3,3.4,4.5,5.6,8.4};14Arraydl(s1,5);15Arrayd2(s2,6);16inti;17d1.Contrary();d2.Contrary();18cout<標(biāo)準(zhǔn)答案:1for(inti=0,j=m-1;i知識點(diǎn)解析:主要考查考生對交換算法的掌握情況,根據(jù)題目對要完成的函數(shù)Contrary的要求:交換數(shù)組a中前后位置對稱的元素的值。這里取下標(biāo)i:0,即為數(shù)組中的第一個(gè)元素,j=m-1,即為數(shù)組中的最后一個(gè)元素,利用中間值temp交換元素的值,然后i逐次遞增的同時(shí)j逐次遞減,再交換,循環(huán)到i>j時(shí)停止交換即可。國家二級C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請打開考生文件夾下的解決方案文件proj1,此工程中含有一個(gè)源程序文件proj1.cpp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語句存在錯誤。請改正這些錯誤,使程序的輸出結(jié)果為:Thevalueis:10注意:只修改注釋“//ERROR****found****”的下一行語句,不要改動程序中的其他內(nèi)容。//proj1.cpp#include<iostream>usingnamespacrestd;classMember{//ERROR*******found*******private:Nember(intval):value(val){}intvalue;};classMyClass{Member_m;public://ERROR*******found*******MyClass(intval){}intGetValue()const{return_m.value;}};intmain(){MyClasS*obj=newHyClass(10);//ERROR*******found*******下列語句輸出obj指向類中的value值cout<<"ThevalLleis:"<<o(jì)bj.GetValue()<<endl;deleteobj;return0;}標(biāo)準(zhǔn)答案:(1)puhlic:(2)MyClass(intval):_m(val);{}或MyClass(intval){_m=val}}(3)tout<<"Thevalueis:"<<o(jì)bj->GetValue()<<endl:知識點(diǎn)解析:(1)主要考查考生對私有成員和公有成員的掌握,先看改錯語句的下一條語句:Member(intval):value(val){},該語句是一個(gè)構(gòu)造函數(shù),因此我們可以得出此處為公有成員,因?yàn)闃?gòu)造函數(shù)不可能是私有成員。(2)主要考查構(gòu)造函數(shù),構(gòu)造函數(shù)要對類的成員進(jìn)行初始化,因此在這里使用成員列表初始化,即MyClass(intval):_m(val){}或MyClass(int]]val){_m=val}。(3)指針調(diào)用類的成員函數(shù)時(shí),應(yīng)使用標(biāo)識符“->”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請打開考生文件夾下的解決方案文件proj2,此工程包含有一個(gè)源程序文件proj2.cpp。其中定義了Base1類、Base2類和Derived類。Base1是一個(gè)抽象類,其類體中聲明了純虛函數(shù)Show。Base2類的構(gòu)造函數(shù)負(fù)責(zé)動態(tài)分配一個(gè)字符數(shù)組,并將形參指向的字符串復(fù)制到該數(shù)組中,復(fù)制功能要求通過調(diào)用strcpy函數(shù)來實(shí)現(xiàn)。Derived類以公有繼承方式繼承Base1類,以私有繼承方式繼承Base2類。在Derived類的構(gòu)造函數(shù)的成員初始化列表中調(diào)用Base類的構(gòu)造函數(shù)。請?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a,然后刪除橫線,以完成Base1、Base2和Derived類的功能。此程序的正確輸出結(jié)果應(yīng)為:I’maderivedclass.注意:只在指定位置編寫適當(dāng)代碼,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。//proj2.cpp#include<iOstream>#include<cstring>usingnamespacestd;classBasel{public://********found********下列語句需要聲明純虛函數(shù)Show_______;},classBase2{protected:char*_p;Base2(constchar*s){_p=newchar[strlen(s)+1];//********found********下列語句將形參指向的字符串常量復(fù)制到該類的字符數(shù)組中_______;}~Base2(){de2ete[]_p;)};//****found********Derived類公有繼承Base1,私有繼承Base2類classDerived:_______{public://********found********以下構(gòu)造函數(shù)調(diào)用Base2類構(gòu)造函數(shù)Derived(constchar*s):_______{}VOidShow(){cout<<_p<<endl;}};~ntmain(){Base1*pb=newDerived("I’maderivedclass.");pb->Show();deletepb;return0;}標(biāo)準(zhǔn)答案:(1)vinualvoidShow()=0(2)strcpy(_p,s)(3)publicBasel,privateBase2(4)Base2(s)知識點(diǎn)解析:(1)主要考查的是純虛函數(shù)的定義。題目要求聲明純虛函數(shù)Show,因此首先看Basel類的派生類Derived類中Show函數(shù)的定義:voldShow(){cout<<_p<<endl;}這時(shí)就可以得出答案了,只要在void前加上virtual,在()后加上=0;,再把函數(shù)體去掉就可以了,即virtualvoidShow()=0;。特別注意純虛函數(shù)和虛函數(shù)的區(qū)別,虛函數(shù)不能添加=0。(2)主要考查的是字符串賦值語句,題目要求將形參指向的字符串常量復(fù)制到該類的字符數(shù)組中。即把s復(fù)制給_p,直接使用語句strepy(_p,s);就可以了,strcpy為系統(tǒng)提供的字符串復(fù)制函數(shù)。(3)主要考查的是派生類的聲明。題目要求Derived類公有繼承Base1,私有繼承Base2類。公有繼承使用public,保護(hù)繼承使用protected,私有繼承使用prirate。如果一個(gè)類同時(shí)繼承多個(gè)基類時(shí),各個(gè)基類之間用“,”分開。(4)主要考查的是派生類的構(gòu)造函數(shù),定義派生類的構(gòu)造函數(shù)時(shí)要使用成員列表對基類初始化。基類一:Base1類,沒有構(gòu)造函數(shù),不需要使用參數(shù)?;惗築ase2類,有構(gòu)造函數(shù):Base2(eonstchar*s),因此需要成員列表:Derived(constchar*s):Base2(s).三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請打開考生文件夾下的解決方案文件proj3,其中包含了類TaxCalculator(“個(gè)稅計(jì)算器”)和主函數(shù)main的定義。創(chuàng)建“個(gè)稅計(jì)算器”需要接收稅率表信息和起征額信息。在main函數(shù)中,通過兩個(gè)數(shù)組創(chuàng)建了如下的稅率表:利用這個(gè)稅率表創(chuàng)建“個(gè)稅計(jì)算器”時(shí),假定起征額為2000元(即不超過2000元的所得不征收個(gè)人所得稅)。請補(bǔ)充完成計(jì)算應(yīng)納個(gè)人所得稅額的成員函數(shù)getTaxPayable,其中的參數(shù)income為月收入。此程序的正確輸出結(jié)果應(yīng)為:月收入為800元時(shí)應(yīng)繳納個(gè)人所得稅0元月收入為1800元時(shí)應(yīng)繳納個(gè)人所得稅0元月收入為2800元時(shí)應(yīng)繳納個(gè)人所得稅55元月收入為3800元時(shí)應(yīng)繳納個(gè)人所得稅155元月收入為4800元時(shí)應(yīng)繳納個(gè)人所得稅295元月收入為5800元時(shí)應(yīng)繳納個(gè)人所得稅455元注意:只能在函數(shù)getTaxPayable中的“//********333********”和“//********666********”之間填入若干語句,不要改動程序中的其他內(nèi)容。//TaxCalculator.h#include<iostream>#include<iomanip>usingnamespacestd;classTaxCalculator{public:TaxCalculator(doublethe_limits[],doublethe_rates[],intthe_length,doublethe_threshold):lower_limits(newdouble[the_length]),rates(newdouble[the_length]),list_len(the_length),threshold(the_threshold){for(inti=0;i<list_len;i++){lower_limits[i]=the_limits[i];rates[i]=the_rates[i];}}~TaxCalculator(){delete[]lower_limits;delete[]rates;}doublegetTaxPayable(doubleincome)const;//返回指定月收入的應(yīng)納個(gè)人所得稅額voidshowTaxPayable(doubleincome)const;//顯示指定月收入的應(yīng)納個(gè)人所得稅額private:double*lower_limits;//適用收入段下限double*rates;//適用稅率intlist_len;//稅率表項(xiàng)數(shù)doublethreshold;//起征額};voidwriteToFile(constchar*path);//TaxCalcnlator.cpp#include"TaxCalculator.h"doubleTaxCalculator::getTaxPayable(doubleincome)const{doubletaxable=income-threshold;//應(yīng)納稅工資額doubletaxpayable=0.0;//應(yīng)納個(gè)人所得稅額inti=listlen-1;//從稅率表的最高適用段開始計(jì)算while(i>=0){//********333********//********666********--i;}returntax_payable;}VOidTaxCalculator::showTaxPayable(doubleincome)const{cout<<"月收入為"<<setw(6)<<income<<"元時(shí)應(yīng)繳納個(gè)人所得稅"<<setw(4)<<getTaxPayable(income)<<"兀"<<endl;}//main.cpp#include"TaxCalculator.h"intmain(){doublelimits[]={0.0,500.0,2000.0,5000.0,20000.0,40000.0,60000.0,80000.0,100000.0};doublerates[]={0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45};TaxCalculatorcalc(limits,rates,9,2000.0);calc.showTaxPayable(800.0);calc.showTaxPayable(1800.0);calc.showTaxPayable(2800.0);calc.showTaxPayable(3800.0);calc.showTaxPayable(4800.0);calc.showTaxPayable(5800.0);writeToFile("");return0;}標(biāo)準(zhǔn)答案:it(income<=2000)//如果收入小于2000returntaxpayable;//直接texpayable(初始代為零)if(taxable>lower_limits[i]){//如果taxable(收入超出起征額的部分)大于lower_limits[i]階段最低限額tax_payable+=(taxable-lower_limits[i])*rates[i],//把起過階段最低限額的部分乘以該階段的稅率后,加到tax_payable(個(gè)人所得稅)taxable=lower_limits[i];//把fower_limits[i]賦值于taxable}知識點(diǎn)解析:主要考查考生對成員函數(shù)的掌握情況,根據(jù)題目要求可知,完成計(jì)算應(yīng)納個(gè)人所得稅額的成員函數(shù)getTaxPayable,其中參數(shù)income為月收入。同時(shí)題目還表明:不超過2000元的所得不征收個(gè)人所得稅。因此先用if語句判斷是否要征收個(gè)人所得稅。然后根據(jù)題目所給表格,來判斷收入多少及應(yīng)該收多少個(gè)人所得稅。國家二級C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯,請改正其中的錯誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:Hello注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。#include<iostream.h>voidmain(){//********error********typedefBOOLbool;//********error********BOOLa=FALSE;inti=0X80000000;//********error********a=!i;if(a){cout<<"Hello"<<endl;}return;}標(biāo)準(zhǔn)答案:(1)typedefboolBOOL;(2)BOOLa=false;(3)a=(i!=0);知識點(diǎn)解析:(1)第1個(gè)標(biāo)識下的“typedefBOOLbool;”。typedef為C語言的關(guān)鍵字,作用是為一種數(shù)據(jù)類型定義一個(gè)新名字。一般形式應(yīng)該是:typedef標(biāo)準(zhǔn)數(shù)據(jù)類型新的數(shù)據(jù)類型名,所以第1個(gè)標(biāo)識下應(yīng)該是“typedefboolBOOL;”。(2)C++中邏輯假的值應(yīng)該是false而不是FALSE,所以這里修改為“BOOLa=fatse;”。(3)題目要求輸出Hello,它要在“if(a)”為真的時(shí)候輸出“Hello”。i的值為0X80000000,第3個(gè)標(biāo)識下a=!i;語句中a的值為假。i!=0為真,所以修改為“a=(if=0);”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和C代碼,完成空出部分的程序,實(shí)現(xiàn)函數(shù)fun(char*s1,char*s2)將字符串s2連接在字符串s1之后,構(gòu)成一個(gè)首指針為s1的字符串。注意:不能修改函數(shù)的其他部分。#include<iostream.h>#defineMAXLINE1000voidfun(char*s1,char*s2){}voidmain(){chars1[NAXLINE];chars2[256];cout<"pleaseinputastring:"<<endl;cin.getline(s1,NAXLINE);Cout<<"pleaseinputotherstring:"<<endl;cin.getline(s2,256);fun(s1,s2);cout<<s1<<endl;return;}標(biāo)準(zhǔn)答案:inti=0;.for(i=0;s1[i]!=0;i++);//指向第一個(gè)串尾for(intj=0;s2[j]!=0;j++)//利用循環(huán)將第二個(gè)串拷貝到第一個(gè)串尾{s1[i++]=s2[j];}s1[i]=0,//加尾符知識點(diǎn)解析:(1)首先利用循環(huán)指向第一個(gè)串尾。(2)然后利用for循環(huán)將第二個(gè)串連接到第一個(gè)串尾。(3)最后在新生成的串尾加尾符號。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)完成構(gòu)造函數(shù)的定義,請?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)定義類的友元函數(shù)fun(),請?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z句。(3)定義類的友元函數(shù)main(),請?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z句。(4)補(bǔ)充語句,釋放內(nèi)存。請?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。#include<iostream.h>classTestClass{public://********1********{data=d;next=NULL;}voidSetNext(TestClass*p){next=p;}private:intdata;TestClass*next;//********2********//********3********};TestClass*fun(TestClass*h){TestClasS*t,*s,*u,*v;s=h->next;h->next=NULL;while(s!=NULL){for(t=s,v=h;v!=NULL&&v->data<t->data;u=v,v=v->next);s=s->next;if(v==h)h=t;elseu->next=v;t->next=v;}returnh;}voidmain(){TestClass*h=NULL;TestClass*q=NULL;do{intdata;cout<<"pleaseinputanumber,andendwith0"<<endl;cin>>data;if(data==0)break;TestClass*p=newTestClass(data);if(h==NULL){h=q=p;}else{q->SetNext(p);q=p;}}while(1);h=fun(h);for(;h!=NULL;){q=h->next;cout<<h->data<<""<<endl;deleteh;//********4********}return;}標(biāo)準(zhǔn)答案:(1)添加語句:TestClass(intd)(2)添加語句:friendTestClass*fun(TestClass*);(3)添加語句:friendvoidmain();(4)添加語句:h=q;知識點(diǎn)解析:(1)題目1要求“完成構(gòu)造函數(shù)的定義”。構(gòu)造函數(shù)是一種特殊的成員函數(shù),它的名字必須與類同名,所以這里的構(gòu)造函數(shù)名字是TestClass。根據(jù)構(gòu)造函數(shù)內(nèi)的“data=d;”語句,知道構(gòu)造函數(shù)TestClass中參數(shù)d為int型,即這里補(bǔ)全“TestClass(intd)”。(2)題目2要求“定義類的友元函數(shù)fun()”。在C++中,如果在本類以外的其它地方定義了一個(gè)函數(shù),在類體中是用friend對該函數(shù)進(jìn)行聲明的,此函數(shù)稱為本類的友元函數(shù),并且能夠調(diào)用本類中的成員變量。程序中fun()在類TestClass以外的地方定義的,為了其實(shí)現(xiàn)對類TestClass中程序變量的調(diào)用,在類TestClass中補(bǔ)全“friendTestClass*fun(TestClass*);”。(3)題目3要求“定義類的友元函數(shù)main()。”同(2),這里補(bǔ)全“friendvoidmain();”。(4)題目4要求“補(bǔ)充語句,釋放內(nèi)存。”為了防止內(nèi)存泄漏,在指針使用后要將其釋放。第四個(gè)標(biāo)識前面的“deleteh;”語句已經(jīng)將指針h釋放了,所以要釋放指針q,只要將其指向h就可以了,即“h=q;”。國家二級C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯,請改正其中的錯誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果為:Maxis7提示:max()函數(shù)實(shí)現(xiàn)找出兩個(gè)數(shù)中的最大值,并作為函數(shù)值返回。注意:錯誤的語句在//********error********的下面,修改該語句即可。#includeusingnamespacestd;//********error********intmax(inta,intb){if(a標(biāo)準(zhǔn)答案:(1)intmax(int&a,int&b)(2)max(m,n);知識點(diǎn)解析:(1)由審題分析可知max函數(shù)采用的是傳送引用方式傳遞參數(shù),因此第1個(gè)標(biāo)識下應(yīng)該為intmax(int&a,int&b)。(2)調(diào)用max時(shí),傳遞引用時(shí)直接使用變量名即可,第2個(gè)標(biāo)識下應(yīng)改為“max(m,n)”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼。函數(shù)sort(int&m,int&n,int&1)實(shí)現(xiàn)將三個(gè)整數(shù)m、n、l由大到小輸出。m最大,l最小。程序分析:程序?qū)崿F(xiàn)時(shí),可以把最大的數(shù)放到m上,先將m與n進(jìn)行比較,如果mvoidsort(int&m,int&n,int&1){}intmain(){intx=9;inty=13;intz=-3;sort(x,y,z);cout<標(biāo)準(zhǔn)答案:intt;if(m知識點(diǎn)解析:(1)由審題分析可知,三次比較便可將m、n、l排序。(2)在實(shí)現(xiàn)時(shí),先將m與n進(jìn)行比較,如果m三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)完成默認(rèn)構(gòu)造函數(shù)TestClass的定義,使得TestClass對象的類型為int,默認(rèn)值為a=0,b=0,c=0,請?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)定義類的私有成員變量,X、Y、Z類型為int,請?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z句。(3)定義類TestClass的數(shù)據(jù)成員count聲明為靜態(tài)整數(shù)型數(shù)據(jù)成員,請?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z句。(4)在構(gòu)造函數(shù)中實(shí)現(xiàn)用count表示類TestClass被實(shí)現(xiàn)對象的次數(shù)。請?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z句。本程序的輸出結(jié)果為:Thepointis(1,1,1)Thereare3pointobjectsThepointis(1,2,3)Thereare3pointobjectsThepointis(0,0,0)Thereare3pointobjects注意:除在指定的位置添加語句之外,請不要改動程序的其他部分。#includetlSingnamespaceStd;ClassTestClass{public://********1********{X=a;Y=b;Z=c;//********4********}voidDisplay(){cout<<"Thepointis("<標(biāo)準(zhǔn)答案:(1)添加語句:Testclass(inta=0,intb=0,intc=0)(2)添加語句:intx,y,z;(3)添加語句:staticintcount;(4)添加語句:count++;知識點(diǎn)解析:(1)題目1要求“完成默認(rèn)構(gòu)造函數(shù)TestClass的定義”。構(gòu)造函數(shù)是一種特殊的成員函數(shù),它的名字必須與類同名,所以這里的構(gòu)造函數(shù)名字是TestClass。根據(jù)題目中要求,實(shí)現(xiàn)構(gòu)造函數(shù)參數(shù)的賦值,即這里添加”TestClass(inta=0,intb=0,intc=0)”。(2)題目2要求“定義類的私有成員變量,X、Y、Z類型為int”。在類TestClass中的private區(qū)域,聲明變量X、Y、Z為整型就可以了,即在第2個(gè)標(biāo)識下添加“intX,Y,Z;”。(3)題目3要求“定義類TestClass的數(shù)據(jù)成員count聲明為靜態(tài)整數(shù)型數(shù)據(jù)成員”。同(2)在第3個(gè)標(biāo)識下聲明count為靜態(tài)整型,即添加“staticintcount;”。(4)題目4要求“在構(gòu)造函數(shù)中實(shí)現(xiàn)用count表示類TestClass被實(shí)現(xiàn)對象的次數(shù)”。在構(gòu)造函數(shù)TestClass中添加count自加運(yùn)算語句,即在第4個(gè)標(biāo)識下添加“count++;”。國家二級C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾projl下的工程projl,此工程中含有—個(gè)源程序文件projl.cpp。其中位于每個(gè)注釋“//ERROR**********found**********”之后的——行語句存在錯誤。請改正這些錯誤,使程序的輸出結(jié)果為:NUM=0Value=1注意:只修改注釋“//ERROR****found****”的下一行語句,不要改動程序中的其他內(nèi)容。//projl.cpp#includeusingnamespacestd;classMyClass{inti;friendvoidIncrement(MyClass&f);public:constintNUM;//ERROR**********found**********MyClass(inti=0){NUM=0;_i=i;}intGetValue()const{returni;)};//ERROR**********found**********voidIncrement(){f.i++;)intmain(){MyClassobj;//ERROR**********found**********MyClass::Increment(obj);cout<<“NUM=”<標(biāo)準(zhǔn)答案:(1)MyClass(inti.O):N‘UM(0){(2)voidIncrement(MyClass&f){f.j++;}(3)Increment(0bj);知識點(diǎn)解析:本題考查的是MyClass類,其中涉及友元函數(shù)、構(gòu)造函數(shù)、常量數(shù)據(jù)成員、成員函數(shù)和友元函數(shù)的調(diào)用。友元函數(shù)的定義要與函數(shù)聲明相呼應(yīng),即返回值、參數(shù)類型、參數(shù)個(gè)數(shù)要一致。友元函數(shù)的調(diào)用不需要使用類名和作用域?!窘忸}思路】(1)主要考查考生對常量數(shù)據(jù)成員初始化方法的掌握,常量數(shù)據(jù)成員的初始化只能通過構(gòu)造函數(shù)的成員初始化列表進(jìn)行,并且要使用關(guān)鍵字const修飾。該題的前一條語句constintNUM;,說明NUM是常量數(shù)據(jù)成員。(2)主要考查考生對友元函數(shù)的掌握,友元函數(shù)的定義與聲明要一致,先看該友元函數(shù)的聲明部分:friendvoidIn—crement(MyClass&f);,返回類型為void,函數(shù)參數(shù)為MyClass&f;再比較出錯的語句:voidIncrement(){f..i++;},錯誤在于該函數(shù)沒有參數(shù),應(yīng)把MyClass&f填在括號內(nèi)。(3)主要考查友元函數(shù)的調(diào)用,友元函數(shù)并不屬于類,因此調(diào)用友元函數(shù)時(shí)不需要添加類名及作用域,只需要像調(diào)用普通函數(shù)一樣即可?!窘忸}寶典】類的常量數(shù)據(jù)成員初始化必須使用成員初始化列表進(jìn)行,否則必然出錯。友元函數(shù)與普通函數(shù)的區(qū)別在于,友元函數(shù)可以通過對象名調(diào)用類的全部成員,包括私有成員。所有函數(shù)的聲明和定義必須一致,包括函數(shù)返回值、參數(shù)類型、參數(shù)個(gè)數(shù)及有無const關(guān)鍵字。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,此工程包含一個(gè)源程序文件proj2.cpp。其中定義了Score類。Score是一個(gè)用于管理考試成績的類。其中,數(shù)據(jù)成員_s指向存儲成績的數(shù)組,一n表示成績的個(gè)數(shù);成員函數(shù)Sort使用冒泡排序法將全部成績按升序進(jìn)行排列。請?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a,然后刪除橫線,以實(shí)現(xiàn)Score類的成員函數(shù)Sort。注意:只在指定位置編寫適當(dāng)代碼,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。//proj2.cpp#include#include#includeusingnamespacestd;classScore{public:Score(double*S,intn):s(S),n(n){)doubleGetScore(inti)const{returnS[i];)voidSort();private:double*S;intn;};voidScore::Sort(){//**********found**********for(inti=0;i<n一1;}**********found**********for(intJ=?J>i;J一一)___________________。if(一S[J]標(biāo)準(zhǔn)答案:(1)i++(2)一n—1(3)一s[j]=一s[j—1](4)一s[j一1]=t知識點(diǎn)解析:本題考查Score類,其中涉及構(gòu)造函數(shù)、成員函數(shù)和排序算法。【解題思路】(1)主要考查for循環(huán)語句,從題目要求可知循環(huán)變量i要從0到一n一2,因此i要遞增操作,即i++。(2)主要考查考生對冒泡排序的掌握,這里要求從后往前掃描,比較相鄰兩個(gè)元素,若后者小則交換,因此在這里下標(biāo)j要從最后開始,即intj=一n—1。(3)考查交換算法,在if語句中一s[j]<一s[j—1]滿足條件,則實(shí)現(xiàn)交換。因?yàn)橐呀?jīng)把一s[j]的值賦給了中間變量t,所以這里要把一s[j一1]的值賦給一s[j],即一s[j]=一s[j一1];。(4)考查交換算法,這里只需把中間變量t中的值賦給_s[j—1]即可。【解題寶典】本題考查的是考生對冒泡排序算法的掌握,要記住冒泡排序的思想是兩兩比較待排序序列中的元素,并交換不滿足順序要求的各對元素,直到全部滿足順序要求為止。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程prog3,其中聲明了ValArray類,該類在內(nèi)部維護(hù)一個(gè)動態(tài)分配的整型數(shù)組。ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對象的深層復(fù)制。請編寫ValArray類的復(fù)制構(gòu)造函數(shù)。在main函數(shù)中給出了一組測試數(shù)據(jù),此種情況下程序的輸出應(yīng)該是:ValArrayv1={1,2,3,4,5}ValArrayv2={2,2,2,2,2}要求:補(bǔ)充編制的內(nèi)容寫在“//*********333*********”與“//*********666*********”之間。不要修改程序的其他部分。注意:相關(guān)文件包括:main.cpp、ValArray.h。程序最后調(diào)用writeToFile函數(shù),使用另一組不同的測試數(shù)據(jù),將不同的運(yùn)行結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件。//ValArray.h#includeusingnamespacestd;classValArray{int*v;intSize;public:ValArray(constint*P,intn):Size(n){V=newint[Size];[]for(inti=0;i標(biāo)準(zhǔn)答案:S1ze=other.s1ze;//把對象數(shù)組的大小賦值給sizev=DeWint[other.size];//根據(jù)對象數(shù)組的大小動態(tài)分配數(shù)組vfor(inti=0;i知識點(diǎn)解析:本題主要考查的是ValArray類,其中涉及構(gòu)造函數(shù)、成員函數(shù)和析構(gòu)函數(shù)。題目要求編寫’ValArray類的復(fù)制構(gòu)造函數(shù),以實(shí)現(xiàn)對象的深層復(fù)制。即填寫ValArray::ValArray(constValArray&other)函數(shù)的函數(shù)體。【解題思路】主要考查考生對復(fù)制構(gòu)造函數(shù)的掌握。由函數(shù)名:Val-Array::ValArray(constValArray&other),知道要復(fù)制的對象是other,對由Val.Array類的成員:int木v;intsize;知道要復(fù)制的內(nèi)容是動態(tài)數(shù)組v及整型變量size。動態(tài)數(shù)組要使用new語句分配內(nèi)存,最后利用for循環(huán)語句來完成復(fù)制過程。國家二級C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾projl下的工程projl,此工程中含有一個(gè)源程序文件projl.cpp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語句存在錯誤。請改正這些錯誤,使程序的輸出結(jié)果為:Constructorcalled.Thevalueis10Maxnumberis20Destructorcalled.注意:只能修改注釋“//ERROR****found****”的下一行語句,不要改動程序中的其他內(nèi)容。//projl.cpp#includeusingnamespacestd;classMyClass{public://ERROR**********found**********voidMyClass(inti){value=i;cout<<”Constructorcalled.”<y?x:y;)//求兩個(gè)整數(shù)的最大值//ERROR**********found**********intMax(intx,inty,intz=0)//求三個(gè)整數(shù)的最大值{if(x>y)returnx>z?X:z;elsereturny>z?y:z;}intGetValue()const{returnvalue;)一MyClass(){cout<<”Destructorcalled.“<標(biāo)準(zhǔn)答案:(1)MyClass(inti)(2)intMax(intx,inty,intz)(3)cout<<”Thevalueis”<知識點(diǎn)解析:本題考查MyClass類、構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)和函數(shù)重載。函數(shù)重載必須要求形參類型不同,或者形參個(gè)數(shù)不同。【解題思路】(1)考查構(gòu)造函數(shù),構(gòu)造函數(shù)前不加void或其他任何類型名,直接使用MyClass(inti)即可。(2)主要考查函數(shù)重載,在intMax(intx,inty){returnx>y?x:y;}中兩個(gè)形參變量都是int型,而語句intMax(intx,inty,intz=0)的前兩個(gè)形參也都是int型,第三個(gè)形參定義默認(rèn)值,那么這兩個(gè)Max函數(shù)在調(diào)用時(shí)它們的參數(shù)個(gè)數(shù)和參數(shù)類型都一樣,因?yàn)楹瘮?shù)重載要求形參類型或形參個(gè)數(shù)不同,所以要把intz=0改為intz,才能構(gòu)成函數(shù)重載。(3)主要考查成員函數(shù)的調(diào)用,因?yàn)関alue是私有成員,所以不能被類外函數(shù)直接調(diào)用,而且value()的用法也是錯誤的,可以使用成員函數(shù)obj.GetValue()得到value的值。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中含有一個(gè)源程序文件proj2.cpp,請將堆棧類的定義補(bǔ)充完整。使程序的輸出結(jié)果為:Theelementofstackare:4321注意:請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,只在橫線處編寫適當(dāng)代碼,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。//proj2.cpp#includeusingnamespacestd;constintSize=5;classStack;classItemfpublic://**********found**********Item(constint&val):________{)//構(gòu)造函數(shù)對item進(jìn)行初始化private:intitem;Item*next;friendclasSStack;};classStack{public:Stack():top(NULL){}一Stack();intPop();voidPush(constint&);private:Item*top;};Stack::一Stack(){Item*P=top,*q;while(p!=NULL){q=p一>next;**********found**********_________;//釋放P所指向的節(jié)點(diǎn)P=q;}}intStack::Pop(){Item*temp;intret;**********found**********——;//使temp指向棧頂節(jié)點(diǎn)ret=top一>item;top=top一>next;deletetemp;returnret;)voidStack::Push(constint&val){Item*temp=newItem(val);**********found**********——;;//使新節(jié)點(diǎn)的next指針指向棧頂數(shù)據(jù)top=temp;}intmain(){Stacks;for(inti=1;i標(biāo)準(zhǔn)答案:(1)it:em(val)(2)delete[]p(3)temp=top(4)temp一>next=top知識點(diǎn)解析:本題考查堆棧類Stack類、Item類、構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)和函數(shù)調(diào)用。堆棧類的節(jié)點(diǎn)一般使用指針表示,也就會考查到指針的相關(guān)知識點(diǎn),要注意釋放指針應(yīng)使用delete[]語句?!窘忸}思路】(1)主要考查構(gòu)造函數(shù),對私有成員進(jìn)行初始化,即item(val)。(2)主要考查使用delete語句釋放指針,一般格式為:delete[]+指針。(3)指向棧頂節(jié)點(diǎn)的是top指針,要使temp指向棧頂節(jié)點(diǎn),故使用語句temp=top;。(4)指向棧頂節(jié)點(diǎn)的是top指針,要使新節(jié)點(diǎn)的next指針指向棧頂數(shù)據(jù),故使用語句temp一>next=top;?!窘忸}寶典】本題涉及堆棧類,棧是先進(jìn)后出,后進(jìn)先出的存儲結(jié)構(gòu)。對于此類問題指針的使用是個(gè)難點(diǎn),要記住棧中指向棧頂節(jié)點(diǎn)的是top指針,添加數(shù)據(jù)時(shí)要往棧頂添加。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程文件proj3,此工程中包含一個(gè)源程序文件proj3.cpp,其中定義了用于表示平面坐標(biāo)系中的點(diǎn)的類MyPoint和表示矩形的類MyRectan@e;程序應(yīng)當(dāng)顯示:(0,2)(2,2)(2,0)(0,0)4但程序中有缺失部分,請按照以下提示,把缺失部分補(bǔ)充完整:(1)在“//**********found**********”的下方是構(gòu)造函數(shù)的定義,它用參數(shù)提供的左上角和右下角的坐標(biāo)對up—left和down_right進(jìn)行初始化。(2)在“//**2************found**********”的下方是成員函數(shù)getDownLeft的定義中的一條語句。函數(shù)getDownLefi返回用MyPoint對象表示的矩形的左下角。(3)在“//**3************found**********”的下方是成員函數(shù)area的定義,它返回矩形的面積。注意:只在指定位置編寫適當(dāng)代碼,不要改動程序中的其他內(nèi)容,也不要刪除或移動“****found****”。//proj3.cpp#includeusingnamespacestd;classMyPoint{//表示平面坐標(biāo)系中的點(diǎn)的類doublex;doubley;public:MyPoint(doublex,doubley){this一>x=X;this一>Y=Y;)doublegetX()const{returnx;)doublegetY()const{returnY;)voidshow()const{cout<<’(’<標(biāo)準(zhǔn)答案:(1)MyPointp1,MyPointp2(2)up—left.getX(),down_right.getY()(3)doubleMyRectangle::知識點(diǎn)解析:本題考查表示平面坐標(biāo)系中的點(diǎn)的類MyPoint、表示矩形的類MyRectangle、構(gòu)造函數(shù)和成員函數(shù)?!窘忸}思路】(1)考查構(gòu)造函數(shù),構(gòu)造函數(shù)中的參數(shù)要給私有成員賦值,在下旬中up—left(p1),down—right(p2){}指出私有成員賦值要使用形參p1和p2,因此這里參數(shù)要定義為MyPointp1,MyPointp2。(2)主要考查威員函數(shù)的返回語句,MyPointMyRectangle::getDownleft()coD_st函數(shù)要求返回一個(gè)左下角的點(diǎn)坐標(biāo),因此使用語句MyPoint(up_left.getX(),down_right.getY());。(3)主要考查成員函數(shù)的定義,在MyRectangle類中已經(jīng)聲明doublearea()const,因此此處只要添加doubleMyRect—angle::即可。【解題寶典】構(gòu)造函數(shù)的參數(shù)定義時(shí)要注意在賦值語句中使用的參數(shù)。考查構(gòu)造函數(shù)一般都會考查到形參,應(yīng)注意聯(lián)系上下文。類的成員函數(shù)在類外定義時(shí)要在函數(shù)名前面加上:返回值類型+類名+作用域(::)。國家二級C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程pmj1,該工程中包含程序文件main.cpp,其中有關(guān)TVSet(“電視機(jī)”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR********found********”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)該是:規(guī)格:29英寸,電源:開,頻道:5,音量:18規(guī)格:29英寸,電源:關(guān),頻道:-1,音量:-1注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動程序中的其他內(nèi)容。1#include2usingnamespacestd;3classTVSet{//"電視機(jī)"類4constintsize;5intchannel;//頻道6intvolume;//音量7boolon;//電源開關(guān):true表示開,false表示關(guān)8public:9//ERROR********found********10TVSet(intslze){11this->size(size);12channel=0;13volume=15;14on=false;15}16intgetsize()const{returnsize;)//返回電視機(jī)規(guī)格17boolisOn()const{returnon;}//返回電源開關(guān)狀態(tài)18//返回當(dāng)前音量,關(guān)機(jī)情況下返回-119intgetVolume()const{returnisOn()?volume:-1;}20//返回當(dāng)前頻道,關(guān)機(jī)情況下返回一121intgetChannel()const{returnisOn()?channel:-1;}22//ERROR********found********23voidturnOnOff()const//將電源在“開”和“關(guān)”之間轉(zhuǎn)換24{on=!on;}25voidsetChannelTo(intchan){//設(shè)置頻道(關(guān)機(jī)情況下無效)26if(isOn()&&chan>=0&&chan<=99)27channel=chan;28}29voidsetVolumeTo(intvol){//設(shè)置音量(關(guān)機(jī)情況下無效)30if(isOn()&&vol>=0&&vol<=30)31volume=vol;32}33voidshowstate(){34//ERROR********found********35cout<<"規(guī)格:"<標(biāo)準(zhǔn)答案:(1)TVSet(intsize):size(size){(2)voidtumOnOff()(3)eout<<"規(guī)格:"<知識點(diǎn)解析:(1)主要考查考生對構(gòu)造函數(shù)的掌握,因?yàn)閟ize是常變量,所以只能用成員初始化列表來初始size,即TVSet(intsize):size(size){。(2)主要考查考生對eonst函數(shù)的掌握,在tumOnOff函數(shù)中,有語句:on=!on;,使得on的值發(fā)生改變,因此該函數(shù)不能使用eonst。(3)主要考查考生對輸出語句的掌握,下一條語句:<<”,電源:”<<(isOn()?"開":"關(guān)"),說明輸出語句還沒結(jié)束,因此不能用“;”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用”答題”菜單或使用VC6打開考生文件夾proj2下的工程proj2,本程序中有兩個(gè)類:一是日期類(Date),用于表示一天的日期(年、月、日);另一個(gè)是截止日期類(Dead-line),用于表示一個(gè)任務(wù)的截止日期,超過該日期即為超時(shí)。Deadline類中有Date類的數(shù)據(jù)成員。這里對Deadline類的數(shù)據(jù)成員和成員函數(shù)做一下說明:intid;//截止日期的idDateend_date;//截止日期,表示允許完成該任務(wù)的最后一天voidfinish(Datedate);//date未超過截止日期時(shí),輸出"Finished!t",否則輸出"Timeout."boolcheck(Datedate);//date未超過截止日期時(shí)返回true,否則返回false。程序正確情況下輸出:Finished!Timeout.注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動程序中的其他內(nèi)容,也不能刪除或移動“//**********found**********”。1#include2usingnamespacestd;3classDate{4private:5intyear;6intmonth;7intdayofmonth;8public:9Date(inty,intm,intd){10this->year=y;11this->month=m;12this->day_of_month=d;13}14booloperator<=(Date&dt)const{15if(this->yearyear==dt.year&&this->monthyear==dr.year&&this->month==dt.month&&this->day_of_month<=dt.day_of_month))16//**********found**********17_____;18returnfalse;19}20};21classDeadline{22private:23intid;24Dateend_date;25public:26Deadline(intid,intyear,intmonth,intday_ofmonth)27//**********found**********28_____29{30this->id=id;31}32voidfinish(Datedate){33if(check(date))34//**********found**********35cout<<______<finish(currenttime);49d2->finish(currenttime);50deleted1;51deleted2;52return0;53}標(biāo)準(zhǔn)答案:(1)retumtrue(2):end_date(year,month,day_of_month)(3)"Finshed"(4)(end_date<=date)?false:true知識點(diǎn)解析:(1)根據(jù)題設(shè)可知比較兩個(gè)日期的大小,由if語言的判斷,可知this的日期大于date,返回真。(2)構(gòu)造函數(shù)的初始化列表,使用基類的構(gòu)造函數(shù)完成子類成員的初始化。(3)根據(jù)題意可知,沒有超過deadline,故輸出"Finshed"。(4)檢查當(dāng)前日期是否超過截止時(shí)間。超過deadline,返回false,否則返回true。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾prog3下的工程prog3,其中包含了類Polynomial(“多項(xiàng)式”)的定義。形如5x4+3.4x2-7x+2的代數(shù)式稱為多項(xiàng)式

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論