![國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷23(共27題)_第1頁(yè)](http://file4.renrendoc.com/view7/M02/1D/1E/wKhkGWbCjj2ASLUnAALKoEKYaqs396.jpg)
![國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷23(共27題)_第2頁(yè)](http://file4.renrendoc.com/view7/M02/1D/1E/wKhkGWbCjj2ASLUnAALKoEKYaqs3962.jpg)
![國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷23(共27題)_第3頁(yè)](http://file4.renrendoc.com/view7/M02/1D/1E/wKhkGWbCjj2ASLUnAALKoEKYaqs3963.jpg)
![國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷23(共27題)_第4頁(yè)](http://file4.renrendoc.com/view7/M02/1D/1E/wKhkGWbCjj2ASLUnAALKoEKYaqs3964.jpg)
![國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷23(共27題)_第5頁(yè)](http://file4.renrendoc.com/view7/M02/1D/1E/wKhkGWbCjj2ASLUnAALKoEKYaqs3965.jpg)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷23(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj1下的工程proj1,此工程中含有一個(gè)源程序文件proj1.cpp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Thisobjectisno.1注意:只修改注釋“//ERROR****found****”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#include<iostream>usingnamespacest:d;classHyClass{public:NyClass():count(0){cout;<<"Thisobject;is";}//ERROR*******found*******voidlnc()const{cout<<"no."<<++count<<end1;}private://ERROR*******found*******intcount=0;};intmain()}MyClass*obj=newMyClass;//ERROR*******found********obj.Inc();return0;}標(biāo)準(zhǔn)答案:(1)voidInc()(2)intcount;(3)obj->Inc();知識(shí)點(diǎn)解析:(1)考查考生對(duì)const的掌握,在Inc函數(shù)的函數(shù)體{cout<<"no."<<++count<<end1;}中,有語(yǔ)句++count,將使私有成員count的值發(fā)生改變,因此該函數(shù)不能使用const修飾。(2)考查私有成員,在定義類(lèi)時(shí),私有成員只能聲明不能初始化。(3)主要考查考生對(duì)類(lèi)的指針的掌握,指針調(diào)用類(lèi)的成員函數(shù)時(shí)要使用標(biāo)識(shí)符“->”,而不能使用“.”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,此工程中含有一個(gè)源程序文件proj2.epp。函數(shù)char水GetNum(char*src,char*buf)從src開(kāi)始掃描下一個(gè)數(shù)字字符序列,并將其作為一個(gè)字符串取出放入字符串空間bur中。函數(shù)返回掃描的終止位置,如果返回NULL表示沒(méi)有掃描到數(shù)字字符序列。運(yùn)行程序時(shí),如果輸入的一行字符序列是ABC012XYZ378MN274WS則輸出為:Digitstring1is012Digitstring2is378Digitstring3is274注意:只在橫線(xiàn)處編寫(xiě)適當(dāng)代碼,不要?jiǎng)h除或移動(dòng)“//****found****”。//proj2.cpp#include<iostream>usingnamespacestd;char*GetNum(char,*src,char*buf){while(*src!=’\0’){if(isdigit(*Src))break;src++;}if(*src=’\0’)//********found********_______;while(*src!=’\0’&&isdigit(*src)){//********found********________;buf++;Src++:}*buf=’\0’;returnsrc;}intmain(){charstr[100],digits[20];cin.getline(str,100);char*p=str;inti=1;while((P=GetNum(P,digits))!=NULL){cout<<"Digitstring"<<i<<"is"<<digits<<end1://********found********________;}return0;}標(biāo)準(zhǔn)答案:(1)retumNULL(2)*bur=*src(3)i++知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)if語(yǔ)句的掌握,由判斷條件if(*src==’\0’),說(shuō)明字符串a(chǎn)re為空,則返回NULL即可。(2)主要考查考生對(duì)while循環(huán)語(yǔ)句的掌握,while語(yǔ)句的循環(huán)條件為*src!=’\0’&&isdigit(*src),該條件是指,若字符串src不為空并且*arc指向的字符為數(shù)字字符,則進(jìn)行循環(huán)。題目要求把數(shù)字字符放人字符串buf中,因此為水buf=*src。(3)主要考查考生對(duì)while循環(huán)語(yǔ)句的掌握,從上一行語(yǔ)句cout<<"Digitstring"<<"i<<"is"<<digits<<end1;中可以得出,題目要求輸出的i是遞增的,因此這里需添加語(yǔ)句i++。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生目錄proj3下的工程文件proj3,該文件中定義了用于表示日期的類(lèi)Date、表示人員的類(lèi)Person和表示職員的類(lèi)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ì)基類(lèi)Person進(jìn)行初始化。注意:只在指定位置編寫(xiě)適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“****found****”。填寫(xiě)的內(nèi)容必須在一行中完成,否則評(píng)分將產(chǎn)生錯(cuò)誤。//proj3.cpp#include<iostream>usingnamespacestd;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*new_name);boolisMale()const{returnismale;}};classStaff:publicPerson{char*department;doublesalary;public:Staff(constchar*id_card_no,constchar*P_name,boolis_male,constchar*dept,doublesal);~Staff(){delete[]depart-ment;}constchar*getDepartment()const{returndepartment;)voidsetDepartment(constchar*d);doublegetSalary()const{returnsalary;}voidsetSalary(doubleS){salary=s;)};Person∷Person(constchar*id_card_no,constchar*P_name,boolis_male):ismale(is_male){idcardno=newchar[strlen(id_card_no)+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,new_name);}Staff∷Staff(constchar*id_card_no,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(){ScaffZhangsan("123456789012345","張?zhí)m",false,"人事部",1234,56);Zhangsan.rename("張小麗");cout<<zhangaan.getName()<<Zhangsan.getIDCardNO()<<end1;return0;標(biāo)準(zhǔn)答案:(1)delete[]idcardno,naine(2)name=newchar[strlen(new_name)+1](3)Person(id_card_no,P_name,is_male)知識(shí)點(diǎn)解析:(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)隔開(kāi)。(2)考查動(dòng)態(tài)數(shù)組分配空間,題目要求指針name指向申請(qǐng)到的足夠容納字符串new_nalne的空間。使用strlen(new_name)得到字符串new_nalTle的長(zhǎng)度,但是這里要注意加l。(3)主要考查考生對(duì)派生類(lèi)構(gòu)造函數(shù)的掌握,題目要求利用參數(shù)表中前幾個(gè)參數(shù)對(duì)基類(lèi)Person進(jìn)行初始化。派生類(lèi)的構(gòu)造函數(shù)要使用成員列表初始化法對(duì)基類(lèi)初始化,因此為constchar*dept,doublesal):Person(id_card_no,p_name,is_male)。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj1下的工程proj1。程序中位于每個(gè)“//ERROR****found****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:value=63number=1注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#includeusingnamespacestd;classMyClass{int*p;constintN;public://ERROR********found********MyClass(intval):N=1{p=newint;*p=val;}//ERROR********found********~MyClass(){delete*p;)friendvoidprint(MyClass&obj);};//ERROR********found********voidMyClass::print(MyClass&obj){cout<<"value="<<*(obj.p)<標(biāo)準(zhǔn)答案:(1)MyClass(intval):N(1)(2)~MyClass(){delete[]p;}(3)voidprint(MyClass&obj)知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,在這里不能使用賦值語(yǔ)句。(2)主要考查考生對(duì)析構(gòu)函數(shù)的掌握,析構(gòu)函數(shù)的delete語(yǔ)句要使用標(biāo)識(shí)符“[]”,即delete[]p;。(3)主要考查考生對(duì)友元函數(shù)的掌握,友元函數(shù)并不屬于類(lèi),因此定義時(shí)前面不用加類(lèi)名和作用域符號(hào)。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾proj2下的工程proj2,其中有兩個(gè)類(lèi):一是銷(xiāo)售類(lèi)(sale),用于表示按照一件商品的基本價(jià)格進(jìn)行銷(xiāo)售;另一個(gè)是打折銷(xiāo)售類(lèi)(DiscountSale),用于表示在基本價(jià)格基礎(chǔ)上按一個(gè)折扣比例進(jìn)行銷(xiāo)售。DiscountSale類(lèi)繼承了sale類(lèi)。類(lèi)的主要數(shù)據(jù)成員的含義和成員函數(shù)的功能要求在程序注釋中有說(shuō)明。請(qǐng)?jiān)诔绦蛑械臋M線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a,然后刪除橫線(xiàn),完成程序的功能。此程序的正確輸出結(jié)果應(yīng)為:Discountitemischeaper.Savingis0.1注意:只能在橫線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容。#includeusingnamespacestd;classSale{public:Sale();//默認(rèn)構(gòu)造函數(shù),將price初始化為0Sale(doublethe_price);//構(gòu)造函數(shù),用the_price初始化pricevirtualdoublebill()const;//返回當(dāng)前商品的價(jià)格(基本價(jià))doublesavings(constSale&other)const;//返回參數(shù)other所引用的對(duì)象比當(dāng)前對(duì)象便宜的差價(jià)protected:doubleprice;//商品的基本價(jià)格(不打折的價(jià)格)};Sale::Sale():price(0){}Sale::Sale(doubletheprice):price(theprice){)doubleSale::bill()const{returnprice;}doubleSale::savings(constSale&other)const{//ERROR*****found*****_________;//返回當(dāng)前對(duì)象價(jià)格比other貴多少的差價(jià)}classDiscountSale:publicSale//打折銷(xiāo)售類(lèi)繼承銷(xiāo)售類(lèi){public:DiscountSale();//默認(rèn)構(gòu)造函數(shù),將discount初始化為0DiscountSale(doublethe_price,doublethediscount);//構(gòu)造函數(shù),the_price是基本價(jià)格;thediscount是折扣百分比virtualdoublebill()const;//返回本商品銷(xiāo)售價(jià)格(即打折以后的實(shí)際售價(jià),覆蓋了基類(lèi)的bill函數(shù))protected:doublediscount;//折扣百分比。例如降價(jià)至原價(jià)的70%,此成員值應(yīng)為70};DiscountSale::DiscountSale():discount(0){}DiscountSale::DiscountSale(doubletheprice,doublethediscount):Sale(theprice),discount(thediscount){}doubleDiscountSale::bill()const{doublefraction=discount/100;//*****found*****__________;//返回本對(duì)象打折以后的實(shí)際售價(jià)}booloperator標(biāo)準(zhǔn)答案:(1)returnthis->bill()-other.bill()(2)returnfraction*price(3)returnfirst.bill()知識(shí)點(diǎn)解析:Sale類(lèi)有一個(gè)數(shù)據(jù)成員:保護(hù)成員price,表示商品的價(jià)格;兩個(gè)構(gòu)造函數(shù):默認(rèn)構(gòu)造函數(shù)Sale()將類(lèi)成員price初始化為0,構(gòu)造函數(shù)Sale(doublethe_price)將成員price初始化為the_price;兩個(gè)成員函數(shù):bill()函數(shù)是一個(gè)虛函數(shù),返回price的值;savings()函數(shù)返回參數(shù)other所引用的對(duì)象比當(dāng)前對(duì)象便宜的差價(jià)。DiseountSale類(lèi)繼承Sale類(lèi),它有兩個(gè)數(shù)據(jù)成員:保護(hù)成員price繼承于Sale類(lèi),表示商品價(jià)格,保護(hù)成員discount表示商品折扣百分比;兩個(gè)成員函數(shù):say.ings()函數(shù)繼承于Sale類(lèi);bill()函數(shù)繼承Sale類(lèi)并被改寫(xiě)。main()函數(shù)中,首先構(gòu)造兩個(gè)類(lèi)對(duì)象:Sale類(lèi)對(duì)象simple和DiscountSale類(lèi)對(duì)象discount,其中simple對(duì)象的price被賦值為10.oo;discount對(duì)象的price被賦值為11.00,成員discount被賦值為90,即折扣為90%。(1)if語(yǔ)句的條件中,將discount與simple進(jìn)行比較,如果main()主數(shù)的discount小于simple,那么說(shuō)明discount的實(shí)際價(jià)格比simple價(jià)格便宜;所以需要重載“<”運(yùn)算符,題意中重載的“<”運(yùn)算符函數(shù)接收兩個(gè)Sale類(lèi)對(duì)象的引用,通過(guò)對(duì)象的引用,比較兩個(gè)對(duì)象的實(shí)際價(jià)格,所以重載“<”運(yùn)算符函數(shù)體中,若first對(duì)象引用的商品實(shí)際價(jià)格小于second對(duì)象引用的商品實(shí)際價(jià)格,那么函數(shù)值返回true,可知函數(shù)體中需要補(bǔ)充的語(yǔ)句如下:returnfirst.bill()bill()-other.bill()同樣,this指針引用當(dāng)前對(duì)象,other是引用對(duì)象,所以可以與bill()虛函數(shù)一起使用多態(tài)機(jī)制,獲得當(dāng)前對(duì)象和other對(duì)象的實(shí)際價(jià)格,再進(jìn)行差值計(jì)算(4)main()函數(shù)中,程序判斷discount小于sire-ple后,輸出提示信息,再調(diào)用savings()函數(shù)輸出discount和simple的差值,這里需要計(jì)算discount比simple節(jié)省多少錢(qián),所以需要將simple當(dāng)做當(dāng)前對(duì)象,discount當(dāng)做參數(shù)傳人savings()函數(shù),所以補(bǔ)充語(yǔ)句如下:simple.savings(discount)三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾prog3下的工程prog3,其中包含了類(lèi)TaxCalculator(“個(gè)稅計(jì)算器”)和主函數(shù)main的定義。創(chuàng)建“個(gè)稅計(jì)算器”需要接收稅率表信息和起征額信息。在main函數(shù)中,通過(guò)兩個(gè)數(shù)組創(chuàng)建了如下的稅率表:利用這個(gè)稅率表創(chuàng)建“個(gè)稅計(jì)算器”時(shí),假定起征額為2000元(即不超過(guò)2000元的所得不征收個(gè)人所得稅)。請(qǐng)補(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***********”之間填入若干語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//TaxCalculator.h#include#includeusingnamespacestd;ClassTaxCalculator{public:TaxCalculator(doublethe_limits[],doubletherates[],intthe_length,doublethe_threshold):lower_limits(newdouble[the_length]),rates(newdouble[the_length]),list_len(thelength),threshold(the_threshold){for(inti=0;i<1ist_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::getTax-Payable(doubleincome)const{doubletaxable=income-thresh-old;//應(yīng)納稅工資額doubletax_payable=0.0;//應(yīng)納個(gè)人所得稅額inti=1ist_len-1;//從稅率表的最高適用段開(kāi)始計(jì)算while(i>=0){//***********333***********//***********666***********--i;}returntax_payable;}voidTaxCalculator::showTax-Payable(doubleincome)const{cout<<"月收入為"<標(biāo)準(zhǔn)答案:1f(1ncome<=2000)//如果收入小于2000returntax_payable;//直接tex_payable(初始代為零)if(taxable>lower_limits[i]){//如果taxable(收入超出起征額的部分)大于lowerlimits[i]階段最低限額taxpayable+=(taxable-lower_limits[i])*rates[i];//把起過(guò)階段最低限額的部分乘以該階段的稅率后,加到tax_payable(個(gè)人所得稅)taxable=lower_limits[i];//把fowerlimits[i]賦值于taxable}知識(shí)點(diǎn)解析:主要考查考生對(duì)成員函數(shù)的掌握情況,根據(jù)題目要求可知,完成計(jì)算應(yīng)納個(gè)人所得稅額的成員函數(shù)getTaxPayable,其中參數(shù)income為月收入。同時(shí)題目還表明:不超過(guò)2000元的所得不征收個(gè)人所得稅。因此先用if語(yǔ)句判斷是否要征收個(gè)人所得稅。然后根據(jù)題目所給表格,來(lái)判斷收入多少及應(yīng)該收多少個(gè)人所得稅。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾projl下的工程pmjl,此工程包含有一個(gè)源程序文件projl.cpp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:(4,4)注意:只修改注釋“//ERROR****found****”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//projl.cpp#includeusingnamespacestd;classPoint{public://ERROR*********found*********Point(doublex,doubleY)一X(x),—y(Y){)doubleGetX()const{returnx;)doubleGetY()const{return_y;)//ERROR*********found*********voidMove(doublexOff,doubleyOff)const{x+=xOff;_y+=yOff;)protected:doublex;y;};intmain(){Pointpt(1.5,2.5);pt.Move(2.5,1.5);//ERROR*********found*********以下語(yǔ)句輸出pt成員x和y的值cout<<‘(’<標(biāo)準(zhǔn)答案:(1)Point(doublex,doubley):一x(x),一y(y){}或Point(doublex,doubley){—x:x;.y=y;{(2)voidMove(doublexOff,doubleyOff)(3)cout<<’(’<知識(shí)點(diǎn)解析:本題主要考查Point類(lèi),其中涉及構(gòu)造函數(shù)、成員函數(shù)及成員函數(shù)的調(diào)用。構(gòu)造函數(shù)的語(yǔ)法經(jīng)常考查到,一般會(huì)考查形參的類(lèi)型及名稱(chēng),本題考查的比較特別,是考查函數(shù)成員初始化列表的基本知識(shí)?!窘忸}思路】(1)主要考查的是構(gòu)造函數(shù)的成員初始化列表的語(yǔ)法,在成員列表之前必須加“:”。(2)主要考查成員函數(shù)中const的使用,先看Move函數(shù)的函數(shù)體:{_x+=xOff;—y+=yOff;}可以看到Point類(lèi)的兩個(gè)私有成員一x和一y的值都發(fā)生了變化,因此Move函數(shù)不能使用eonst,因?yàn)橹挥性诤瘮?shù)內(nèi)不改變類(lèi)的成員的值時(shí)才能使用const。(3)主要考查私有成員不能被類(lèi)外函數(shù)調(diào)用的知識(shí)。題目要求輸出pt成員.x和-y的值,從Point類(lèi)中的函數(shù)doubleGetX()const{return-x;}和doubleGetY()eonst{return—y;},可以分別得到一x和一y的值,因此這里使用語(yǔ)句cout<<‘(’<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,此工程包含有一個(gè)源程序文件pmj2.cpp。其中定義了Base1類(lèi)、Base2類(lèi)和Derived類(lèi)。Base1是一個(gè)抽象類(lèi),其類(lèi)體中聲明了純虛函數(shù)Show。Base2類(lèi)的構(gòu)造函數(shù)負(fù)責(zé)動(dòng)態(tài)分配一個(gè)字符數(shù)組,并將形參指向的字符串復(fù)制到該數(shù)組中,復(fù)制功能要求通過(guò)調(diào)用strcpy函數(shù)來(lái)實(shí)現(xiàn)。Derived類(lèi)以公有繼承方式繼承Basel類(lèi),以私有繼承方式繼承Base2類(lèi)。在Derived類(lèi)的構(gòu)造函數(shù)的成員初始化列表中調(diào)用Base類(lèi)的構(gòu)造函數(shù)。請(qǐng)?jiān)诔绦蛑械臋M線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a,然后刪除橫線(xiàn),以完成Base1、Base/和Derived類(lèi)的功能。此程序的正確輸出結(jié)果應(yīng)為:I’maderivedclass.注意:只在指定位置編寫(xiě)適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。//proj2.cpp#include#includeusingnamespacestd;classBasel{public://**********found**********下列語(yǔ)句需要聲明純虛函數(shù)Show——;;};classBase2{protected:char*;;Base2(constchar*s){_P=newchar[strlen(s)+1];//**********found**********下列語(yǔ)句將形參指向的字符串常量復(fù)制到該類(lèi)的字符數(shù)組中——;?}~Base2(){delete[]-j);)},//**********found**********Derived類(lèi)公有繼承Basel,私有繼承Base2類(lèi)classDerived:——{public://**********found**********以下構(gòu)造函數(shù)調(diào)用Base2類(lèi)構(gòu)造函數(shù)Derived(constchar*s):——{}voidShow(){cout<<_p<Show();deletepb;return0;}標(biāo)準(zhǔn)答案:(1)virtualvoidShow()=0(2)strcpy(_p,s)(3)publicBasel,privateBase2(4)Base2(s)知識(shí)點(diǎn)解析:本題主要考察抽象類(lèi)Base1、基類(lèi)Base2及其派生類(lèi)Derived,其中涉及純虛函數(shù)、構(gòu)造函數(shù)、析構(gòu)函數(shù)、派生類(lèi)構(gòu)造函數(shù)等知識(shí)點(diǎn)。編寫(xiě)抽象類(lèi)的純虛函數(shù)時(shí)要先看清在派生類(lèi)中該函數(shù)的定義,注意返回值、參數(shù)類(lèi)型、有無(wú)eonst關(guān)鍵字幾個(gè)要點(diǎn)。派生類(lèi)的構(gòu)造函數(shù)一定要使用成員列表法先對(duì)基類(lèi)初始化?!窘忸}思路】(1)主要考查的是純虛函數(shù)的定義。題目要求聲明純虛函數(shù)Show,因此首先看Basel類(lèi)的派生類(lèi)Deftred類(lèi)中Show函數(shù)的定義:voidShow(){cout<<-p<三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生目錄proj3下的工程文件proj3,此工程包含一個(gè)源程序文件proj3.epp,其功能是從文本文件in.dat中讀取全部整數(shù),將整數(shù)序列存放到intArray類(lèi)的對(duì)象myA~ay中,然后對(duì)整數(shù)序列按非遞減排序,最后由函數(shù)writeToFile選擇序列中的部分?jǐn)?shù)據(jù)輸出到文件out.dat中。文件in.dat中的整數(shù)個(gè)數(shù)不大于300個(gè)。要求:補(bǔ)充編制的內(nèi)容寫(xiě)在“//**********333**********”與“//**********666**********”兩行之間。實(shí)現(xiàn)對(duì)整數(shù)序列按非遞減排序,并將排序結(jié)果在屏幕上輸出。不得修改程序的其他部分。注意:程序最后已將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)給出并且調(diào)用。//proj3.cpp#include#include#includeusingnamespacestd;classintArray{private:int*array;//整數(shù)序列首地址intlength;//序列中的整數(shù)個(gè)數(shù)public://構(gòu)造函數(shù),從文件中讀取數(shù)據(jù)用于初始化新對(duì)象。參數(shù)是文件名intArray(char*filename);voidsort();//對(duì)整數(shù)序列按非遞減排序一intArray();voidwriteToFile(char*filename););intArray::intArray(char*filename){ifstreammyFile(filename);intlen=300;array=newint[1en];length=0;while(myFile>>array[1ength++]);length一一;myFile.close();}voidintArray::sort(){//**********333**********//**********666**********}intArray::intArray(){delete[]array;}voidintArray::writeToFile(char。filename){intstep=0;ofstreamoutFile(filename);for(inti=0;i標(biāo)準(zhǔn)答案:for(inti=0;iarray[j])//如果arrag[i]>array[j],把a(bǔ)rray[i]與ar—ray[i]進(jìn)行對(duì)換{inttemp;//定義一個(gè)臨時(shí)變量temptemp=array[i];//把a(bǔ)rray[i]值放到變量temparray[i]=array[j];//把a(bǔ)rray[j]值賦給array[i]array[j]=terap;//把變量temp存放在值array[j]中}for(inta:0;a知識(shí)點(diǎn)解析:本題主要考查intArray類(lèi),其中涉及構(gòu)造函數(shù)、排序函數(shù)和析構(gòu)函數(shù)。常用的排序算法有冒泡排序、選擇排序、插入排序、堆排序等?!窘忸}思路】題目要求對(duì)整數(shù)序列按非遞減排序,要排序就必須要有比較,因此定義兩個(gè)下標(biāo)i和j,按題目非遞減排序要求,當(dāng)array[i]比array[j]大時(shí)就交換其值,利用中間變量temp來(lái)實(shí)現(xiàn)?!窘忸}寶典】排序算法有多種,其基本思想是相同的,即先遍歷,后比較,再交換。不同之處在于它們遍歷數(shù)列的順序不同。考生可選擇一至兩種算法重點(diǎn)理解。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正錯(cuò)誤,使得程序正確執(zhí)行,并且輸出以下語(yǔ)句:TestClassl:0TestClass2注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。#includeStructTestClassl{TestClassl(inti=0){m—i=i;}voidprint(){cout<<“TestClassl:”<標(biāo)準(zhǔn)答案:(1)public:(2)TestClass1obj1(0);或TestClasslobj1;(3)TestClass2obj2;知識(shí)點(diǎn)解析:程序要求輸出TestClassl:0和TestClass2。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序首先定義TestClassl和TestClass2類(lèi)型的變量,然后通過(guò)調(diào)用其中的print成員函數(shù)實(shí)現(xiàn)輸出結(jié)果。解題思路(1)第1個(gè)標(biāo)識(shí)下的“private:~TestClass20”是析構(gòu)函數(shù),它不是私有的,所以這里應(yīng)該為“刪除private:或修改為public:”0(2)第2個(gè)標(biāo)識(shí)下的“TestClass1obj10;"語(yǔ)句是定義一個(gè)TestClassl類(lèi)型的對(duì)象obj10,根據(jù)類(lèi)TestClassl構(gòu)造函數(shù)的定義“TestClassl(inti=0)”,知道存在整型參數(shù),應(yīng)該補(bǔ)充參數(shù),或者只是先定義一個(gè)對(duì)象名,然后在使用時(shí)補(bǔ)充參數(shù),即修改為“TestClasslobjl(o);或TestClassl0bj1;”。(3)同理第3個(gè)標(biāo)識(shí)下的“TestClass2obj2();”語(yǔ)句修改為“TestClass2obj2;”0二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。函數(shù)fun(int*arr,intn)的功能是將指定的有序數(shù)組壓縮成各元素互不相同的有序數(shù)組,即相同數(shù)只保留一個(gè),多余的被刪除。并返回互不相同的元素的個(gè)數(shù)。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#lnclude<10Stream>intfun(int*a,intn){}voidmain(){intA[]={6,6,5,4,4,3,3,2,1);intj=fun(A,Sizeof(A)/Sizeof(int));for(inti=0;i標(biāo)準(zhǔn)答案:intj;intk=0;//指向數(shù)組第一個(gè)元素j=1;//指向數(shù)組第二個(gè)元素while(j知識(shí)點(diǎn)解析:(1)該程序功能是將指定的有序數(shù)組壓縮成各元素互不相同的有序數(shù)組,即相同數(shù)只保留一個(gè),多余的被刪除。它的解題思路,由第一個(gè)元素開(kāi)始,利用循環(huán)將所有元素,依次與它后面的元素比較,如果不同存入數(shù)組。(2)從已給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)intfun(int*a,intn)中的參數(shù)a為輸入的數(shù)組,n為數(shù)組大小。解題思路(1)首先指向數(shù)組第一個(gè)元素a[k],然后將第二元素a[j]與它比較,不同存入數(shù)組第二個(gè)元素(a[++k])。(2)同時(shí),將被比較的位置向后移動(dòng)一位({++)。循環(huán)直到數(shù)組的最后一個(gè)元素比較完畢。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。完成以下功能:(1)定義CMyTime的私有成員函數(shù)myear、mmonth類(lèi)型為int,請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)補(bǔ)充完成CMyTime的構(gòu)造函數(shù),完成對(duì)myear、mmonth的賦值,請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成print()的輸出,請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。輸出格式如下:CurrentTimeyear:xxmonth:XX注意:XX表示兩位0~9的數(shù)字,如CurrentTimeyear:08month:04。(4)完成對(duì)month的增加函數(shù)AddMonth(intm),請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#includeclassCMyTime{private:∥********1********9ublic:CMyTime(intyear,intmonth){∥********2********}voiddisplay(){charyearChar[3];charmonthChar[3];yearChar[0]=(m_year%100)/i0+。0’;yearChar[1]=(m_year%10)+‘0’;monthChar[0]=(mmonth%100)/10+‘0’;monthChar[1]=(mmonth%10)+‘0’,∥********3********cout<<“CurrentTime”<<”year:“<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:intm_year,mmonth;(2)添加語(yǔ)句:m_year=year;mmonth=month;(3)添加語(yǔ)句:yearChar[2]=0;monthChar[2]=0;(4)添加語(yǔ)句:m_year+=m—month112;或m_year=ml_year+m—month/12;知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下添加CMyTime的私有成員變量myear、mmonth的聲明,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“intm_year,re_month;”。(2)第2個(gè)標(biāo)識(shí)下完成類(lèi)成員構(gòu)造函數(shù)變量的初始化,即將參數(shù)分別賦值給myear和mmonth,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“m_year=year;m_month=month;”。(3)第3個(gè)標(biāo)識(shí)下準(zhǔn)備輸出yearChar數(shù)組和monthChar數(shù)組,字符數(shù)組的最后一個(gè)字符應(yīng)該為NULL(0),因此第3個(gè)標(biāo)識(shí)下應(yīng)添加“yearChar[2]=0;monthChar[2]=0;”。(4)mmonth和參數(shù)之和賦值給mmonth,其和可能超過(guò)12,如果超過(guò)12表示下一年了,因此myear應(yīng)該加1,故先判斷mmonth是否比12大,可取mmonth/12和myear相加,如果mmonth沒(méi)有超過(guò)12則mmonth/12=0,反之則為1,第4標(biāo)識(shí)下應(yīng)添加“myear+=mmonth/12;或m_year=m_year+m—month/12;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾projl下的工程projl,此工程包含—個(gè)源程序文件projl.cpp。其中位于每個(gè)注釋“//ERROR****found****:”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Youareright.注意:只修改注釋“//ERROR****found****”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//projl.cpp#includeusingnamespacestd;classMyClass{public:MyClass(intX):number(X){)//ERROR*********found**********一MyClass(intx){)//ERROR*********found*********voidJudge(MyClassaobj);private:intnumber;};voidJudge(MyClass&obj){if(obj.number==10)cout<<”Youareright.”<標(biāo)準(zhǔn)答案:(1)~MyClass(){}(2)friendvoidJudge(MyClass&obj);(3)MyClassobject(10);知識(shí)點(diǎn)解析:主要考查的是MyClass類(lèi),其中涉及構(gòu)造函數(shù)、析構(gòu)函數(shù)和友元函數(shù)?!窘忸}思路】(1)主要考查考生對(duì)析構(gòu)函數(shù)的掌握,析構(gòu)函數(shù)是沒(méi)有形參的,因此把形參去掉即可,因?yàn)樵擃?lèi)沒(méi)有動(dòng)態(tài)分配空間,所以不需要使用delete語(yǔ)句釋放空間。(2)主要考查考生對(duì)友元函數(shù)的掌握,在函數(shù)定義中有語(yǔ)句voidJudge(MyClass&obj),在main函數(shù)中有語(yǔ)句Judge(0bject);,即Judge函數(shù)是可以被類(lèi)外函數(shù)調(diào)用的,并且定義時(shí)沒(méi)有加上類(lèi)名和作用域,因此可以知道Judge函數(shù)是友元函數(shù),需要在類(lèi)型前加上friend。(3)主要考查考生對(duì)構(gòu)造函數(shù)調(diào)用的掌握,題目要求輸出結(jié)果為:。Youareright.,在Judge函數(shù)體內(nèi)有語(yǔ)句:if(obj.number==10)cout<<“Youareright.”<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,此工程中包含一個(gè)頭文件shape.h,其中包含了類(lèi)Shape、Point和Triangle的聲明;包含程序文件shape.cpp,其中包含了類(lèi)Tfiangle的成員函數(shù)和其他函數(shù)的定義;還包含程序文件proj2.clap,其中包含測(cè)試類(lèi)Shape、Point和Triangle的程序語(yǔ)句。請(qǐng)?jiān)诔绦蛑械臋M線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a并刪除橫線(xiàn),以實(shí)現(xiàn)上述功能。此程序的正確輸出結(jié)果應(yīng)為:此圖形是一個(gè)抽象圖形,周長(zhǎng)=0,面積=0此圖形是一個(gè)三角形,周長(zhǎng)=6.82843,面積=2注意:只能在橫線(xiàn)處填寫(xiě)適當(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”抽象圖形--;}//返回形狀的名稱(chēng)};classPoint{//表示平面坐標(biāo)系中的點(diǎn)的類(lèi)doublex;doubley;public://*********found*********Point(doublex0,doubley0):——{)//用x0、y0初始化數(shù)據(jù)成員x、YdoublegetX()const{returnX;)doublegetY()const{returny;});classTriangle:publicShape{//*********found*********_________;//定義3個(gè)私有數(shù)據(jù)成員public:Triangle(Pointpl,Pointp2,Pointp3):pointl(p1),point2(p2),point3(p3){)doubleperimeter()const;doublearea()const;constchar*name()const{return。’三角形”;}};//shape.cpp#include“shape.h”#includedoublelength(Pointpl,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(pointl,point2))*(s—length(point2,point3))*(s—length(point3,pointl)));}//proj2.cpp#include”shape.h”#includeusingnamespacestd;//**********found**********//show函數(shù)的函數(shù)頭(函數(shù)體以前的部分){cout《”此圖形是一個(gè)”<標(biāo)準(zhǔn)答案:(1)x(x0),y(y0)(2)Pointpointl,point2,point3(3)returnlength(pointl,point2)+length(pointl,point3)+length(point2,point3)(4)voidshow(Shape&shape)知識(shí)點(diǎn)解析:本題考查Shape類(lèi)、Point類(lèi)和Triangle類(lèi),其中涉及虛函數(shù)、構(gòu)造函數(shù)、成員函數(shù)和const函數(shù)。本題涉及3個(gè)文件,包括shape.h、shape.cpp和main.cpp。解題時(shí)應(yīng)先看shape.h文件,再看shape.cpp文件,最后看main.cpp文件。即先把類(lèi)的聲明看完,接著看類(lèi)的定義,最后看在主函數(shù)中類(lèi)的使用。【解題思路】(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,題目要求用x0、y0初始化數(shù)據(jù)成員x、y,因此在這里使用成員列表初始化,即Point(doublex0,double)ro):x(x0),y(y0){}。(2)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,題目要求定義3個(gè)私有數(shù)據(jù)成員。由構(gòu)造函數(shù)可知3個(gè)私有數(shù)據(jù)成員的類(lèi)型都是Point,名稱(chēng)分別為pointl、point2和point3,因此空格處填寫(xiě):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類(lèi),tri是rriangle類(lèi),因?yàn)門(mén)riangle是Shape類(lèi)的派生類(lèi),所以可知show函數(shù)的參數(shù)是Shape類(lèi)型,無(wú)返回值,得出語(yǔ)句voidshow(Shape&shape)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用【答題】菜單命令或直接用VC6打開(kāi)考生文件夾下的工程proj3,其中聲明的是一個(gè)人員信息類(lèi),補(bǔ)充編制程序,使其功能完整。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此種情況下程序的輸出應(yīng)該是:Zhang20Tsinghua。注意:只能在函數(shù)address—change的“//**********333**********”和“//**********666**********”之間填入若干語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為0bj文件,并且在本程序中調(diào)用。//proj3.h#include#includeusingnamespacestd;classPerson{charname[20];intage;char*address;public:Person(){age=0;address=0;)voidname_change(char*一name);//名字修改函數(shù)voidage_change(int_age);//年齡修改函數(shù)voidaddress_change(char*add);//地址修改函數(shù)voidinfodisplay();//人員信息顯示一Person();//柝柏函數(shù)};voidwriteToFile(constchar‘path);proj3.cpp#include#include#include”proj3.h”usingnamespacestd;voidPerson::namechange(char。一name){strcpy(name,一name);}voidPerson::age_change(intage){age=_age;}voidPerson::address_change(char*一add){if(address!=NULL)delete[]ad—dress;//*********333*********//*********666*********}voidPerson::info_display(){cout<標(biāo)準(zhǔn)答案:address=newchar[strleFl(add)+1];//給類(lèi)成員變量動(dòng)態(tài)分配空間strcpy(address,jdd);//把字符串a(chǎn)dd復(fù)制給add.Ress知識(shí)點(diǎn)解析:主要考查的是Person類(lèi),其中涉及動(dòng)態(tài)數(shù)組、析構(gòu)函數(shù)、構(gòu)造函數(shù)和成員函數(shù)?!窘忸}思路】函數(shù)address一change(char*一add)的功能是地址修改,也就是說(shuō)通過(guò)該函數(shù)把類(lèi)的地址修改為add字符串。類(lèi)的私有成員address是字符指針,因此首先要給address分配空間,通過(guò)new語(yǔ)句來(lái)實(shí)現(xiàn):address=newchar[strlen(一add)+1];。接下來(lái)就是要復(fù)制字符串,使用系統(tǒng)函數(shù)strcpy,其用法為strcpy(參數(shù)1,參數(shù)2),將參數(shù)2的內(nèi)容復(fù)制到參數(shù)1中。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:151注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#include<iostream.h>//******error******enum{Sun,Mon,Tue,Wed,Thu,F(xiàn)ri,Sat,//******error******}MyEnum;structStruct{//******error******intFri,intSun;};voidmain(){inti=Mon;MyEnumt=Fri;Structstr1;str1.Fri=Mon;cout<<i<<endl;cout<<t<<endl;cout<<str1.Fri<<endl;}標(biāo)準(zhǔn)答案:(1)enumMyEnum(2)};(3)intFri;知識(shí)點(diǎn)解析:(1)第一標(biāo)識(shí)下聲明枚舉類(lèi)型,聲明枚舉類(lèi)型的一般形式為:“enum<枚舉類(lèi)型名>{<枚舉常量列表>};”,程序當(dāng)中把枚舉類(lèi)型名MyEnum放到枚舉聲明后面,顯然不符合枚舉類(lèi)型聲明格式,因此第1個(gè)標(biāo)識(shí)下應(yīng)改成“enumMyEnum”。(2)由(1)的分析可知,第2個(gè)標(biāo)識(shí)下也不符合枚舉類(lèi)型聲明格式,應(yīng)以“;”結(jié)束,即第2個(gè)標(biāo)識(shí)下應(yīng)改為“};”。(3)第3標(biāo)識(shí)處聲明結(jié)構(gòu)體,結(jié)構(gòu)體定義的一般形式為:struct<結(jié)構(gòu)體名>{<成員列表>}<變量名列表>;結(jié)構(gòu)體中成員列表中各個(gè)元素是不同的變量,變量之間應(yīng)以分號(hào)隔開(kāi),而不是以逗號(hào)隔開(kāi),因此第3個(gè)標(biāo)識(shí)下應(yīng)改為為“intFri;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。函數(shù)factor(int*des,int&length,intn)實(shí)現(xiàn)的功能是:將n所有因數(shù)存放到des中,通過(guò)length引用返回因數(shù)的個(gè)數(shù),比如fator(a,length,20)執(zhí)行后,則a={1,2,4,5,10,20},length=6。注意:只能補(bǔ)充函數(shù)factor(),請(qǐng)勿改動(dòng)其他部分的內(nèi)容。#include<10Stream.h>#defineMAXNLEN100voidfactor(int*des,int&length,intn){}voidmain(){inta[MAXNLEN],length;intn=20;factor(a,length,n);for(inti=0;i<length;i++){cout<<a[i]<<"";}cout<<endl;return;}標(biāo)準(zhǔn)答案:length=0;for(inti=1;i<=n;i++){if(n%i==0)//判斷是否n的因數(shù){des[length]=i;length++;}}知識(shí)點(diǎn)解析:(1)找到n的每一個(gè)因數(shù)可采用循環(huán)方法,循環(huán)變量從1開(kāi)始到n,逐個(gè)取n和循環(huán)變量的余數(shù)。(2)如果余數(shù)為0說(shuō)明是n的因數(shù),添加到des中,參數(shù)length是采用的引用傳遞方式,形參的改變會(huì)影響實(shí)參,因此可直接將length的值加1表示des中元素個(gè)數(shù)加1。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。完成以下功能:(1)定義類(lèi)的私有變量a、b,請(qǐng)?jiān)谧⑨專(zhuān)?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類(lèi)的構(gòu)造函數(shù),對(duì)變量a、b賦值,缺省兩個(gè)變量值為1,在注釋?zhuān)?*******2********之后添加語(yǔ)句。(3)完成打印函數(shù)display(),打印出“a*b=c”格式的一個(gè)乘法算式,在注釋?zhuān)?*******3********之后添加語(yǔ)句。(4)補(bǔ)充主函數(shù),使得打印9×9的乘法口訣。在注釋?zhuān)?*******4********后添加語(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include<iostream.h>classCMyFormula{private://********1********public://********2********{this->a=a;this->b=b;}voidset(intx,inty){a=x;b=y;}voiddisplay(){//********3********}};intmain(){CMyFormulaformular(1,1);for(inti=1;i<=9;i++){//********4********for(intj=1;j++){formular.set(j,i);formular.dispiay();cout<<"";}cout<<endl;}return0;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:inta,b;(2)添加語(yǔ)句:CMyFormula(inta=1,intb=1)(3)添加語(yǔ)句:cout<<a<<’*’<<b<<’=’<<a*b;(4)將“for(intj=1;j++)”補(bǔ)充完整為:for(intj=1;j<=i;j++)知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下完成CMyFormula類(lèi)的私有變量a、b的定義,從函數(shù)set(intx,inty)的參數(shù)類(lèi)型可以看出a和b均為int型變量,故第1個(gè)標(biāo)識(shí)下應(yīng)添加“inta,b;”。(2)第2個(gè)標(biāo)識(shí)下添加構(gòu)造函數(shù)聲明,完成對(duì)變量a、b賦值,該構(gòu)造有兩個(gè)參數(shù)a和b,且a和b缺省值為1,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“CMyFormula(inta=1,intb=1)”。(3)。打印函數(shù)display()在屏幕上打印出“a*b=c”格式的一個(gè)乘法算式,因此第3個(gè)標(biāo)識(shí)下應(yīng)添加“cout<<a<<’*’<<b<<’=’<<a*b;”。(4)觀察可知第4個(gè)標(biāo)識(shí)下的for循環(huán)是死循環(huán),J沒(méi)有判斷退出條件,會(huì)一直循環(huán)下去得不到想到的9×9的口訣表,外層循環(huán)變量i從1開(kāi)始變化至9,循環(huán)9次,內(nèi)部循環(huán)變量j應(yīng)該從1變化到i,輸出一行,j<=i,這樣保證輸出的是倒9×9口訣,因此第4個(gè)標(biāo)識(shí)下應(yīng)改為“for(intj=1;j<=i.j++)”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,并使程序的執(zhí)行結(jié)果為:注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#include#includevoidmain(){inti,j,k;for(i=5;i>=1;i--){//******error******for(j=1;J<=i;j++)cout<<"";//******error******for(k=1;k>=i;k++)cout<0;k++)cout<標(biāo)準(zhǔn)答案:(1)for(j=1;j<=5-i;j++)(2)for(k=1;k<=i;k++)(3)for(k=i-1;k>0;k--)知識(shí)點(diǎn)解析:(1)分析可知,兩個(gè)循環(huán)負(fù)責(zé)輸出兩半數(shù)值,剛開(kāi)始還有空格,而且空格書(shū)逐行增加,因此也必須用循環(huán)來(lái)實(shí)現(xiàn)輸出空格,即內(nèi)層第一個(gè)小循環(huán)負(fù)責(zé)輸出空格,因此for(j=1;j<=i,j++)應(yīng)改為for(j=1,j<=5-i.j++)。(2)第二個(gè)小循環(huán)負(fù)責(zé)輸出左半部分?jǐn)?shù)值,外層大循環(huán)i從5變到1,而每行前半部分?jǐn)?shù)值的最大值在減小,因此第二個(gè)循環(huán)的循環(huán)變量J與i之和滿(mǎn)足一定關(guān)系,即j<=i,第2個(gè)標(biāo)識(shí)處for(k=1;k>=i;k++)應(yīng)改為for(k=1;k<=i;k++)。(3)第三個(gè)小循環(huán)負(fù)責(zé)輸出右半部分?jǐn)?shù)值,數(shù)值從大變到小,因此循環(huán)變量k的初值為i-1,k逐次變小,即第3標(biāo)識(shí)處for(k=i-1;k>0;k++)應(yīng)改為for(k=-i-1;k>0;k-)。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。函數(shù)convert(char*strOct)的功能是將八進(jìn)制轉(zhuǎn)換為十進(jìn)制。提示:要每一位轉(zhuǎn)換,然后把轉(zhuǎn)換后得到的數(shù)累加起來(lái)即可。注意:不能修改其他部分的代碼。#include#includeintconvert(char*strOct){}intmain(){cout<標(biāo)準(zhǔn)答案:intre=0;while(*stroct){re=re*8+(*stroct)-’0’;stroct++;}returnre;知識(shí)點(diǎn)解析:(1)定義整型變量re,re記錄求得的10進(jìn)制數(shù)。(2)convert(char*stroct)的輸入?yún)?shù)為字符指針,而不是整形數(shù)據(jù)指針,因此需要將ASCII碼轉(zhuǎn)換成相應(yīng)的數(shù)字量,即(*stroct)-’0’。(3)按權(quán)展開(kāi)可采用循環(huán)迭代的方法,如:(123)8=((1×8)+2)×8+3,即迭代過(guò)程為上一次運(yùn)算得到的結(jié)果再乘以8加現(xiàn)在的元素值,即re=re*8+(*stroct)-’0’。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。完成以下功能:(1)完成類(lèi)Rect的構(gòu)造函數(shù),實(shí)現(xiàn)對(duì)變量left、right、top、bottom的初始化,缺省值都為0,請(qǐng)?jiān)谧⑨專(zhuān)?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類(lèi)Rectangle的構(gòu)造函數(shù),請(qǐng)?jiān)谧⑨專(zhuān)?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成計(jì)算矩形對(duì)角線(xiàn)長(zhǎng)度函數(shù)Diagonal(),請(qǐng)?jiān)谧⑨專(zhuān)?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成計(jì)算周長(zhǎng)函數(shù)Girth(),請(qǐng)?jiān)谧⑨專(zhuān)?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。程序輸出:50140注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#include#includeclassRectangle{public:intleft,right,top,bottom;//********1********{left=1;right=r;top=t;bottom=b;}//********2********{left=rc.1eft;right=rc.right;top=rc.top;bottom=rc.bottom;)floatDiagonal(){//********3********return}intGirth(){//********4********return}};intmain(){Rectanglerect(20,50,40,80);Rectanglerect2(rect);cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:Rectangle(int1,intr,intt,intb)(2)添加語(yǔ)句:Rectangle(Rectangle&rc)(3)將“return”補(bǔ)充完整為:returnsqrt((right—left)*(right-left)+(bottom-top)*(bottom-top));(4)將“return”補(bǔ)充完整為:return2*((right-left)+(bottom-top));知識(shí)點(diǎn)解析:(1)構(gòu)造函數(shù)名和類(lèi)名一致,構(gòu)造函數(shù)可以重載,即多個(gè)構(gòu)造函數(shù)有相同的名字不同的參數(shù),顯然題目當(dāng)中兩個(gè)構(gòu)造函數(shù)均有參數(shù),由函數(shù)體體內(nèi)“l(fā)eft=1;right=r;top=t;bottom=b;”,說(shuō)明1,r,t,b為構(gòu)造函數(shù)的參數(shù),因此第1標(biāo)識(shí)處應(yīng)添加“Rectangle(int1,intr,intt,intb)”。(2)和題目1一樣,構(gòu)造函數(shù)名和類(lèi)名一致,函數(shù)體內(nèi):“l(fā)eft=rc.left;right=re.right;top=rc.top;bottom=rc.bottom;”,顯然rc是Rect對(duì)象,故該構(gòu)造函數(shù)的參數(shù)為rc對(duì)象,故第2標(biāo)識(shí)處應(yīng)添加“Rectangle(Rectangle&rc)”。(3)由對(duì)象的left、right、top、bottom值可以求得矩形的長(zhǎng)和寬,因此可采用勾股定理計(jì)算對(duì)角線(xiàn)長(zhǎng)度,即第3標(biāo)識(shí)處補(bǔ)充完整為:returnsqrt((right.le
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 別克車(chē)型融資租賃合同模板(二零二五版)12篇
- 2025年度建筑垃圾處理合同規(guī)范范本
- 2025年度建筑材料購(gòu)銷(xiāo)合同爭(zhēng)議起訴狀模板
- 2025年度客車(chē)租賃與司機(jī)培訓(xùn)服務(wù)合同
- 2025年度國(guó)際貿(mào)易理論與實(shí)務(wù)第12章國(guó)際貿(mào)易融資服務(wù)合同
- 2025年度電子產(chǎn)品防震包裝材料采購(gòu)及檢測(cè)合同
- 2025年度肉類(lèi)產(chǎn)品冷鏈倉(cāng)儲(chǔ)租賃服務(wù)合同
- 2025年度綠色建筑材料采購(gòu)合同協(xié)議書(shū)-@-1
- 2025年度經(jīng)典擔(dān)保借款合同范本深度解析
- 2025年度高清打印技術(shù)合作開(kāi)發(fā)合同
- 預(yù)應(yīng)力錨索張拉及封錨
- 烤煙生產(chǎn)沿革
- GB/T 6040-2019紅外光譜分析方法通則
- GB 1886.227-2016食品安全國(guó)家標(biāo)準(zhǔn)食品添加劑嗎啉脂肪酸鹽果蠟
- 無(wú)效宣告請(qǐng)求書(shū)與意見(jiàn)陳述書(shū)代理實(shí)務(wù)全天版-案例一
- 電子線(xiàn)檢驗(yàn)標(biāo)準(zhǔn)
- 建筑施工安全員理論考核試題與答案
- 人教版七年級(jí)歷史下冊(cè)教學(xué)計(jì)劃(及進(jìn)度表)
- 建筑工程節(jié)后復(fù)工自查表
- 華萊士標(biāo)準(zhǔn)化體系
- 快捷smt全自動(dòng)物料倉(cāng)儲(chǔ)方案
評(píng)論
0/150
提交評(píng)論