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

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)C++機(jī)試(基本操作題)模擬試卷1(共9套)(共45題)國(guó)家二級(jí)C++機(jī)試(基本操作題)模擬試卷第1套一、基本操作題(本題共5題,每題1.0分,共5分。)1、使用VC6打開(kāi)考生文件夾proj1下的工程proj1,其中有“沙發(fā)”類Sofa和主函數(shù)main的定義。程序中位于每個(gè)//ERROR**********found**********下的語(yǔ)句行有錯(cuò)誤,請(qǐng)加以更正。更正后程序的輸出應(yīng)該是:座位數(shù):3顏色:紅色注意:只能修改每個(gè)//ERROR,**********found**********下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<iost:ream>usingnamespacest:d;classSofa{//“沙發(fā)”類intseats;//座位數(shù)charcolor[10];//顏色public://ERROR******found******Sofa(ints,constchar*co){//ERROR******found******if(CO=NULL)color[0]=’\0’;elsestrcpy(color,co);}//ERROR******found******constchar*getSeats()const{returnseats;)constchar*gel:Color()const{returncolor;)};int:main(){Sofasara(3);cout:<<“座位數(shù):”<<sara.getSeats()<<end1;cout:<<“顏色:”<<sara.getColor()<<end1;return0;}標(biāo)準(zhǔn)答案:(1)Sofa(ints,constchar*co=“紅色”):seats(s){(2)if(co==NULL)(3)intgetSeats()const{returnseats;}知識(shí)點(diǎn)解析:暫無(wú)解析2、使用VC6打開(kāi)考生文件夾下的源程序文件modi.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使得程序正常運(yùn)行,并且要求最后一個(gè)catch()必須拋出執(zhí)行的任何異常。程序通過(guò)拋出異常輸出:error0ERROR注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。#include<10Stream.h>intmain(){try{throw("error");}//********error********catch(chars){cout<<s<<endl;}try{throw((int)0);}//********error********catch(){cout<<i<<endl;}try{throw(0);throw("error");}//********error********catch(){cout<<"ERROR"<<endl;}return0;}標(biāo)準(zhǔn)答案:(1)catch(char*s>(2)catch(inti)(3)catch(…)知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)前的異常拋出語(yǔ)句為“throw("error");”,其中的類型為字符串。所以對(duì)應(yīng)的異常捕捉語(yǔ)句catch中應(yīng)該符合這個(gè)類型,而程序中給出的語(yǔ)句“catch(chars)”是字符型的,所以第2個(gè)標(biāo)識(shí)下的語(yǔ)句修改為“catch(char*s)”。(2)第2個(gè)標(biāo)識(shí)前的異常拋出語(yǔ)句為“throw((int)0);”。其中的類型為int。所以對(duì)應(yīng)的異常捕捉語(yǔ)句catch中應(yīng)該符合這個(gè)類型,所以補(bǔ)充catch子句中的類型,否則找不到匹配的catch塊,那么系統(tǒng)就會(huì)調(diào)用一個(gè)系統(tǒng)函數(shù),使程序終止運(yùn)行。即第1個(gè)標(biāo)識(shí)下的語(yǔ)句修改為“catch(inti)”。(3)如果在catch子句中沒(méi)有指定異常信息的類型,那么就用刪節(jié)號(hào)“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。3、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:Hello注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******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);知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下的“typedefBOOLbool;”。typedef為C語(yǔ)言的關(guān)鍵字,作用是為一種數(shù)據(jù)類型定義一個(gè)新名字。一般形式應(yīng)該是:typedef標(biāo)準(zhǔn)數(shù)據(jù)類型新的數(shù)據(jù)類型名,所以第1個(gè)標(biāo)識(shí)下應(yīng)該是“typedefboolBOOL;”。(2)C++中邏輯假的值應(yīng)該是false而不是FALSE,所以這里修改為“BOOLa=fatse;”。(3)題目要求輸出Hello,它要在“if(a)”為真的時(shí)候輸出“Hello”。i的值為0X80000000,第3個(gè)標(biāo)識(shí)下a=!i;語(yǔ)句中a的值為假。i!=0為真,所以修改為“a=(if=0);”。4、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序輸出:number1=4.8number2=93.6number3=0.9PRODUCT=404.352注意:錯(cuò)誤的語(yǔ)句在//******error******的下面。修改該語(yǔ)句即可。其他的語(yǔ)句不能修改。#include<iostream>usingnamespacestd;intmain(){doublenumber1=4.8,number2=93.6,number3=0.9;//********error********product=number1*number2*number3;//********error********cout<<"number1="<<number1<’\t’<<"number2="<<number2<<’\t。’;//********error********cout<<"number3="<<number3<<’\t’;cout<<"PRODUCT="<<product(<endl;return0;}標(biāo)準(zhǔn)答案:(1)doubleproduct=number1*number2*number3;(2)cout<<"number1="<<number1<<’\t’<<"number2="<<number2<<’\t’;(3)cout<<"number3="<<number3<<’\t’<<endl;知識(shí)點(diǎn)解析:(1)C++要求變量在定義后才能使用,顯然product變量沒(méi)有定義,number1、number2和number3均為double型變量,product是這三個(gè)變量的乘積,因此product的數(shù)據(jù)類型是double型,因此第1個(gè)標(biāo)識(shí)下應(yīng)改為doubleproduct=number1*number2*number3。(2)cout流中的數(shù)據(jù)是用流插入運(yùn)算符“<<”順序加入的,第2個(gè)標(biāo)識(shí)下是輸出number1、number2和number3的值,各個(gè)數(shù)據(jù)之間用“<<”順序加入,不能用“<”,第2個(gè)標(biāo)識(shí)下應(yīng)改為cout<<"number1="<<number1<<’\t’<<"number2="<<number2<<’\t’。(3)由于輸出“PRODUCT=404.352”在“number1=4.8number2=93.6number3=0.9”下一行,因此輸出“number3=0.9”后應(yīng)換行,故第3個(gè)標(biāo)識(shí)下應(yīng)改為“cout<<"number3="<<number3<<’\t’<<endl;”。5、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,輸出的結(jié)果為:Constructor,i=0,Destructor注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#include<iostream.h>classcobj{inti;public:CObj();voiddisplay();~CObj();};//********error********CObj:CObj(){cout<<"Constructor"<<",";i=0;}//********error********CObj:display(){cout<<"i="<<i<<¨,"<<endl;}//********error********CObj:CObj(){cout<<"Destructor"<<endl;}voidmain(){CObja;a.display();}標(biāo)準(zhǔn)答案:(1)CObj::CObj()(2)voidCObj::display()(3)CObj::~CObj()知識(shí)點(diǎn)解析:(1)在類的外部定義成員函數(shù)時(shí),必須在成員函數(shù)前面加上類名和作用域運(yùn)算符(::),作用域運(yùn)算符用來(lái)表示某個(gè)成員屬于哪個(gè)類,使用格式為:<類名>::<成員函數(shù)>(<參數(shù)函數(shù)>),因此第1個(gè)標(biāo)識(shí)下應(yīng)改為CObj::CObj(),默認(rèn)構(gòu)造函數(shù)沒(méi)有參數(shù)。(2)第2個(gè)標(biāo)識(shí)下“CObj:display()”,從其后的語(yǔ)句看,這是在類外實(shí)現(xiàn)CObi函數(shù),因此也有作用域運(yùn)算符使用錯(cuò)誤問(wèn)題,display()函數(shù)返回值為void,因此第2個(gè)標(biāo)識(shí)下應(yīng)改為voidCObj::display()。(3)第3個(gè)標(biāo)識(shí)下“CObj:CObj()”,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個(gè)特殊的函數(shù),它的名字和類名相同,并在前面加“~”字符,用來(lái)與構(gòu)造函數(shù)加以區(qū)別,因此第3個(gè)標(biāo)識(shí)下應(yīng)改為CObj::~CObj()。國(guó)家二級(jí)C++機(jī)試(基本操作題)模擬試卷第2套一、基本操作題(本題共5題,每題1.0分,共5分。)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類,其中涉及構(gòu)造函數(shù)、成員函數(shù)及成員函數(shù)的調(diào)用。構(gòu)造函數(shù)的語(yǔ)法經(jīng)??疾榈剑话銜?huì)考查形參的類型及名稱,本題考查的比較特別,是考查函數(shù)成員初始化列表的基本知識(shí)。【解題思路】(1)主要考查的是構(gòu)造函數(shù)的成員初始化列表的語(yǔ)法,在成員列表之前必須加“:”。(2)主要考查成員函數(shù)中const的使用,先看Move函數(shù)的函數(shù)體:{_x+=xOff;—y+=yOff;}可以看到Point類的兩個(gè)私有成員一x和一y的值都發(fā)生了變化,因此Move函數(shù)不能使用eonst,因?yàn)橹挥性诤瘮?shù)內(nèi)不改變類的成員的值時(shí)才能使用const。(3)主要考查私有成員不能被類外函數(shù)調(diào)用的知識(shí)。題目要求輸出pt成員.x和-y的值,從Point類中的函數(shù)doubleGetX()const{return-x;}和doubleGetY()eonst{return—y;},可以分別得到一x和一y的值,因此這里使用語(yǔ)句cout<<‘(’<2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj1下的工程proj1,此工程中含有一個(gè)源程序文件proj1.cpp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Constructorcalled.Thevalueis10Copyconstructorcalled.Thevalueis10Destructorcalled.Destructorcalled.注意:只修改注釋“//ERROR****found****”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#include<iostream>usingnamespacestd;classMyClass{public://ERROR*******found*******MyClass(inti){value=i;cout<<"Constructorcalled."<<end1;}//ERROR*******found*******MyClass(constMyClassP){value=P.value;cout<<"Copyconstructorcalled."<<end1;}voidPrint(){cout<<"Thevalueis"<<value<<end1;)//ERROR*******found*******void~MyClass(){cout<<"Destructorcalled."<<end1;}private:intvalue;},intmain(){MyClassobj1;obj1.Print();MyClasSobj2(obj1);obj2.Print();return0;}標(biāo)準(zhǔn)答案:(1)MyClass(inti=10)(2)MyClass(constMyClass&p)(3)~MyClass()知識(shí)點(diǎn)解析:(1)考查構(gòu)造函數(shù)參數(shù)默認(rèn)值,題目要求輸出語(yǔ)句:Thevalueis10,從主函數(shù)中可以看出,obj1并沒(méi)有初始化,但是obj1調(diào)用Print()函數(shù)時(shí)它的值為10,由此可知構(gòu)造函數(shù)的形參有默認(rèn)值,且值為10,因此得出語(yǔ)句MyClass(inti=10)。(2)主要考查考生對(duì)復(fù)制構(gòu)造函數(shù)的掌握,復(fù)制構(gòu)造函數(shù)的形參都為引用,同時(shí)為了不改變形參的值要加上const,因此得出語(yǔ)句MyClass(constMyClass&p)。(3)主要考查考生對(duì)析構(gòu)函數(shù)的掌握,析構(gòu)函數(shù)和構(gòu)造函數(shù)一樣,前面不能添加任何類型,要把void去掉。3、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本程序要求實(shí)現(xiàn)的功能為:從鍵盤(pán)輸入一個(gè)字符串,并將結(jié)果保存到文件modi1.txt中。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。1#include<iostream>2#include<fstream>3//********error********4usingstd;5voidWriteFile(char*s)6{7ofstreamout1;8//********error********9out1.open(’’modi1.txt’’,binary|app);10for(inti=0;s[i]!=0;i++)11{12//********error********13out1.puts(s[i]);14}15out1.close();16}17voidClearFile()18{19ofstreamout1;20out1.open(’’modi1.txt’’);21out1.close();22}23intmain()24{25chars[1024];26ClearFile();27cout<<’’pleaseinputastring:’’<<end1;28cin.getline(s,1024);29WriteFile(s);30return0;31}標(biāo)準(zhǔn)答案:(1)usingnamespacestd;(2)out1.open(’’modi1.txt’’,ios::binary|ios::app);(3)out1.put(s[i]);知識(shí)點(diǎn)解析:程序要求從鍵盤(pán)輸入一個(gè)字符串,并將結(jié)果保存到文件modi1.txt中。從已給定源程序的main主函數(shù)開(kāi)始入手,main主函數(shù)首先調(diào)用ClearFile函數(shù)打開(kāi)文件,然后調(diào)用WriteFile函數(shù)將字符串寫(xiě)入文件。(1)第1個(gè)標(biāo)識(shí)下的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,對(duì)于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1個(gè)標(biāo)識(shí)下的語(yǔ)句修改為“usingnamespacestd;”。(2)第2個(gè)標(biāo)識(shí)下,調(diào)用成員函數(shù)open中,輸入輸出方式是在ios類中定義的,所以“out1.open(’’modi1.txt’’,binarylapp);”語(yǔ)句缺少類ios,即第2個(gè)標(biāo)識(shí)下的語(yǔ)句修改為“out1.open(’’modi1.txt”,ios::binarylios::app);”。(3)第3個(gè)標(biāo)識(shí)應(yīng)該用流成員函數(shù)put輸出字符,所以第3個(gè)標(biāo)識(shí)下的語(yǔ)句修改為“out1.put(s[i]);”。4、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正其中的錯(cuò)誤,使程序正確運(yùn)行。并且使程序輸出的結(jié)果為:OK注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。1#include<iostream.h>2classCBase3{4public:5CBase()6{7a=b=0;8}9private:10inta,b;11};12classCDerive1:publicCBase13{14public:15CDerivel()16{17}18//******error******19virtualvoidfunc();20};21classCDerive2:publicCDerive122{23public:24CDerive2()25{26a=0;27b=0;28}29voidfunc()30{31//******error******32cout<<’’OK’’<end1;33}34private:35inta;36intb;37};38voidmain()39{40CDerive2obj;41//******error******42CDerive1*p=(CDerivel*)obj;43p->func();44}標(biāo)準(zhǔn)答案:(1)virtualvoidfunc()=0;(2)cout<<’’OK’’<<end1;(3)CDerivel*p=(CDerive1*)&obj;知識(shí)點(diǎn)解析:程序中定義了類CBase、CDerive1和CDerive2,類CDerive1公有派生于類CBase,CDerive2公有派生于類CDerive1,在類CDerive1中定義了虛函數(shù)func(),但是沒(méi)有給出具體實(shí)現(xiàn),派生類CDerive2中給出了func()函數(shù)的具體實(shí)現(xiàn),因此CDerive1類中的func()函數(shù)是純虛函數(shù)。(1)由審題分析可知,CDerive1類中的func()函數(shù)是純虛函數(shù),純虛函數(shù)的定義格式為:virtual<函數(shù)類型><函數(shù)名>(<參數(shù)表>)=0,因此第1個(gè)標(biāo)識(shí)下應(yīng)為“virtualvoidfunc()=0;”。func()函數(shù)沒(méi)有參數(shù)表。(2)編譯程序后發(fā)現(xiàn)第2個(gè)標(biāo)識(shí)下有錯(cuò)誤,cout流中的數(shù)據(jù)是用流插入運(yùn)算符“<<”順序加入的,因此“<”不正確,應(yīng)改成“cout<<"OK’’<<end1;”。(3)函數(shù)的調(diào)用方式有2種:非多態(tài)調(diào)用和多態(tài)調(diào)用,非多態(tài)調(diào)用是指不使用指針或引用的直接調(diào)用,多態(tài)調(diào)用是指通過(guò)對(duì)象的指針或引用的調(diào)用,在主函數(shù)中定義了CDerive1*p,p是指向基類CDerive1的指針,因此是多態(tài)調(diào)用方式,即通過(guò)對(duì)象的指針來(lái)調(diào)用,應(yīng)該把派生類對(duì)象的地址賦給p,而不是對(duì)象名,因此第3個(gè)標(biāo)識(shí)下應(yīng)改為“CDerive1*p=(CDerive1*)&obj;”。5、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使該程序的輸出結(jié)果為:100注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#include<iostream.h>staticintx=50;intt=0;int*func(intx,inty,intz){t=t+x+y+z;//******error******returnt;};voidmain(){inty=30;intx=10;intz=20;//******error******x=x;//******error******cout<<func(x,y,z)<<endl;}標(biāo)準(zhǔn)答案:(1)return&t:(2)x=::x;(3)cout<<*func(x,y,z)<<endl;知識(shí)點(diǎn)解析:(1)由審題分析可知,函數(shù)func(intx,inty,intz)返回的是整型數(shù)據(jù)指針,而第1個(gè)標(biāo)識(shí)下的returnt表示返回一個(gè)整型數(shù)據(jù),和要求的返回?cái)?shù)據(jù)類型不匹配,應(yīng)改為“return&t:”。(2)第2個(gè)標(biāo)識(shí)下x=x表示局部變量x自己給自己賦值,調(diào)用func(x,y,z)函數(shù)后,返回的運(yùn)算結(jié)果是30+10+20=60,與輸出100不同,而全局靜態(tài)變量x值為50,30+50+20=100,剛好滿足條件,因此第2個(gè)標(biāo)識(shí)下是將全局靜態(tài)變量x的值賦給局部變量x,即第2個(gè)標(biāo)識(shí)下應(yīng)該為“x=::x:”,“::”表示的是引用全局變量。(3)func(x,y’z)返回一個(gè)整型數(shù)據(jù)指針,通過(guò)該指針可以得到運(yùn)算結(jié)果,而cout<<func(x,y,z)輸出的fun(x,y,z)返回的地址值(變量t的地址值),而不是該地址內(nèi)存儲(chǔ)的變量的值(t的值),運(yùn)行程序后會(huì)發(fā)現(xiàn)輸出的是奇怪的一串?dāng)?shù)字,而不是我們所想要的100,應(yīng)加上取指針運(yùn)算符“*”,*func(x,y,z)為變量t,故第3個(gè)標(biāo)識(shí)下應(yīng)改為“cout<<*func(x.y,z)<<endl;”。國(guó)家二級(jí)C++機(jī)試(基本操作題)模擬試卷第3套一、基本操作題(本題共5題,每題1.0分,共5分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp。本程序要求輸入一字符串,然后將其中的小寫(xiě)字母改變成大寫(xiě)字母,字符可能輸入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到界面。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。1#include<iostream.h>2voidmain()3{4inti=0;5charstr[120];6cout<<’’Enterastringendwith’?’.’’<<end1;7//********error********8cin.getline(str,120);9//********error********10while(str)11{12//********error********13if(str[i]>=’a’)14str[i]=str[i]-’a’+’A’;15i++;16}17cout<<str<<end1;18return;19}標(biāo)準(zhǔn)答案:(1)cin.getline(str,120,’?’);(2)while(str[i])(3)if(str[i]>=’a’&&str[i]<=’z’)知識(shí)點(diǎn)解析:同一英文字母的大寫(xiě)和小寫(xiě)形式的ASCII碼值相差32,因此,要將小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母,只要將其對(duì)應(yīng)的ASCII碼值減去32即可,程序中給出的語(yǔ)句中,減去字符’a’的ASCII碼再加上字符’A’的ASCII碼正好是減去32。(1)題目中要求以輸入字符“?”為結(jié)束,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式cin.getline(字符數(shù)組,字符個(gè)數(shù),終止標(biāo)志字符),所以第1個(gè)標(biāo)識(shí)下為“cin.getline(str,120,’?’):”。(2)第2個(gè)標(biāo)識(shí)下的“while(str)”語(yǔ)句應(yīng)該是判斷字符串str中的每一個(gè)字符是否為尾符,若不是尾符在循環(huán)中判斷每一個(gè)字符是否為小寫(xiě),若為小寫(xiě),轉(zhuǎn)換。所以應(yīng)該修改為“whilefstr[i])”。(3)第3個(gè)標(biāo)識(shí)下的“if(str[i]>=’a’)”語(yǔ)句是判斷字符str[i]是否為小寫(xiě)字符,而現(xiàn)有的語(yǔ)句只是判斷字符是否大于’a’,但是小寫(xiě)字符應(yīng)該是’a’到’z’,所以修改為“if(str[i]>=’a’&&str[i]<=’z’)”。2、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序輸出:10TestClass1注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。1#include<iostream>2ClassTestClass13{4public:5TestClass1(){6};7//********error+********8private:9virtual~TestClass1()10{11usingnamespacestd;12cout<<’’TestClass1’’<<end1;13};14};15classTestClass2:publicTestClass116{17public:18//********error********19explicitTestClass2(inti)20{21m_i=i;22};23TestClass2&operator()(inti)24{25this一>m_i=i;26}27voidprint()28{29//********error********30cout<<m_i<<end1;31}32private:33intm_i;34};35voidfun(TestClass2C1)36{37C1.print();38}39intmain()40{41fun(10);42return0;43}標(biāo)準(zhǔn)答案:(1)刪除“private:”語(yǔ)句(2)TestClass2(inti)(3)std::cout<<m_i<<std::end1;知識(shí)點(diǎn)解析:程序要求輸出值為10,TestClass1。從己給定源程序的main主函數(shù)開(kāi)始入手,main主函數(shù)首先調(diào)用fun函數(shù),fun調(diào)用TestClass2中的print()函數(shù),其中TestClass2繼承了TestClass1。(1)第1個(gè)標(biāo)識(shí)下的“virtual~TestClass1()”語(yǔ)句是TestClass1()析構(gòu)函數(shù),不是私有函數(shù),所以刪除“private:”。(2)“explicitTestClass2(inti)”構(gòu)造函數(shù)語(yǔ)句中的“explicit”是禁止隱式轉(zhuǎn)換。程序中無(wú)法實(shí)現(xiàn)對(duì)類TestClass2的直接使用,所以這里應(yīng)該將其刪除。即“TestClass2(inti)”。(3)第3個(gè)標(biāo)識(shí)下實(shí)現(xiàn),fun函數(shù)中m_i的標(biāo)準(zhǔn)輸出,即在屏幕上輸出10。在程序中用到C++標(biāo)準(zhǔn)庫(kù)時(shí),要使用std標(biāo)準(zhǔn)命名空間進(jìn)行限定。cout為標(biāo)準(zhǔn)庫(kù)函數(shù),所以要聲明cout是在命名空間std中定義的流對(duì)象,即“std::cout<<m_i<<std::end1;”或者添加“usingnamespacestd;”。3、使用VC6打開(kāi)考生文件夾下的源程序文件modi.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正其中的錯(cuò)誤,使得程序正確運(yùn)行。程序輸出:s1:n=20s2:n=10執(zhí)行s3.a(chǎn)dd(s1,s2)s3:n=30s4:n=30注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。#include<iostream.h>ClassTeStClass{intn;public:TestClass(){}TestClasS(intm){n=m;}//********error********TestClassadd(TestClass=s1,s2){this->n=s1.n+s2.n;//********error********return(this);}voiddisp(){tout<<"nn"=<<n<<endl;}//********error********}voidmain(){TestClasss1(20),s2(10),s3,s4;cout<<"s1:";s1.disp();cout<<"s2:";s2.disp();s4=s3.a(chǎn)dd(s1,s2);cout<<"執(zhí)行s3.a(chǎn)dd(s1,s2)\ns3:";s3.disp();cout<<"s4:";s4.disp();}標(biāo)準(zhǔn)答案:(1)TestClassadd(TestClasss1,TestClasss2)(2)return(*this);(3)};知識(shí)點(diǎn)解析:(1)打開(kāi)modi1.cpp,調(diào)試程序,根據(jù)顯示的錯(cuò)誤提示,知道語(yǔ)句“TestClassadd(TestClasss1,s2)”中的變量“s2”沒(méi)有聲明類型,所以補(bǔ)充“s2”的類型,即“TestClassadd(TestClasss1,TestClasss2)”。(2)“this->n=s1.n+s2.n:”語(yǔ)句中的this變量為指針變量,所以第2個(gè)標(biāo)識(shí)下的“return(this);”返回語(yǔ)句中的this變量,應(yīng)該返回指針型,所以修改為“return(*this);”。(3)C++中類的定義格式應(yīng)為“class類名{};”,以分號(hào)為結(jié)尾,所以第3個(gè)標(biāo)識(shí)下,類結(jié)尾處補(bǔ)充分號(hào)“;”,即修改為“};”。4、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,并且輸出以下結(jié)果:(4,5)7,8(4,8)注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#include<iostream.h>classCObj0{public:CObj0(inti,intj){x=i;y=j;}//********error********virtualvoidmove(inta;intb){x+=a;y+=b;}voidprint(){cout<<"("<<x<<","<<y<<")"<<endl;}public:intx,y;};classCObj1:publicCObj0{public://********error********CObj1(inti,intj,intk):(i,j){m=k;n=1;}voidprint(){cout<<m<<","<<n<<endl;}voidfunc(){move(3,5);}voiddisplay(){//********error********print();}private:intm,n;};voidmain(){CObj0obj(4,5);obj.print();CObj1obj1(1,3,7,8);obj1.func();obj1.print();obj1.display();}標(biāo)準(zhǔn)答案:(1)Virtualvoidmove(inta,intb)(2)CObj1(inti,intj,intk,int1):CObj0(i,j)(3)CObj0::print();知識(shí)點(diǎn)解析:(1)編譯程序可知第l標(biāo)識(shí)下有錯(cuò)誤,此處是聲明虛函數(shù),虛函數(shù)的聲明方式為:virtual<類型說(shuō)明符><函數(shù)名>(<參數(shù)表>),參數(shù)表中各參數(shù)之間應(yīng)該用“,”隔開(kāi),因此第1個(gè)標(biāo)識(shí)下應(yīng)改為“virtualvoidmove(inta,intb)”。(2)在主函數(shù)里“CObj1obj1(1,3,7,8);”,可知構(gòu)造函數(shù)CObj1()有四個(gè)參數(shù),完成變量m、n、x和y的初始化,k和1賦值給m和n,i和j賦值給x和y,x和y的初始化可通過(guò)基類構(gòu)造函數(shù)來(lái)完成對(duì)x和y的初始化,第2個(gè)標(biāo)識(shí)下應(yīng)改為CObj1(inti,intj,intk,int1):CObj0(i,j)。(3)由程序運(yùn)行結(jié)果可知標(biāo)識(shí)3下調(diào)用的是基類的print()函數(shù),而“print();”是調(diào)用的派生類的print()函數(shù),因此此時(shí)只能通過(guò)類名來(lái)直接調(diào)用print()函數(shù),即第3個(gè)標(biāo)識(shí)下應(yīng)改為“CObj0::print();”。5、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:150200注意:錯(cuò)誤的語(yǔ)句在//*****error******的下面,修改該語(yǔ)句即可。提示:定義Number1為一個(gè)整型數(shù)據(jù)位長(zhǎng)的變量。#include//*****error******struct{//*****error******intNumber1:1;intNumber2;}MyStruct;voidmain(){MyStructmstr;mstr.Number1=150;mstr.Number2=15;//*****error******int*ptr=&mstr.Number1;cout<<*ptr<標(biāo)準(zhǔn)答案:(1)typedefstruct(2)intNumber1:32;或intNumber1;(3)int*ptr=(int*)&mstr;知識(shí)點(diǎn)解析:(1)第1標(biāo)識(shí)下是定義結(jié)構(gòu)體,結(jié)構(gòu)體定義的一般形式為:struct<結(jié)構(gòu)體名>{<成員列表>}<變量名列表>;程序當(dāng)中定義結(jié)構(gòu)體名放在后面,MyStruct為結(jié)構(gòu)體變量類型,相當(dāng)于typedef為已有的類型定義一個(gè)新的類型,第1個(gè)標(biāo)識(shí)下應(yīng)改為“typedefstruct”。(2)第2標(biāo)識(shí)下是定義Number1為一個(gè)整型數(shù)據(jù)變量,整型數(shù)據(jù)位數(shù)為32(4字節(jié)),因此第2個(gè)標(biāo)識(shí)下應(yīng)改成“intNumber1:32;”或“intNumber1;”。(3)ptr為整型數(shù)據(jù)指針,mstr為MyStruct類型結(jié)構(gòu)變量,兩者類型不一致應(yīng)該做強(qiáng)制類型轉(zhuǎn)換,第3個(gè)標(biāo)識(shí)下應(yīng)改成“int*ptr=(int*)&mstr;”,表示將mstr的地址給ptr,ptr指向MyStruct的第一個(gè)域Number1,Number1也是整形,類型一致,故可通過(guò)ptr指針來(lái)改變Number1的值。國(guó)家二級(jí)C++機(jī)試(基本操作題)模擬試卷第4套一、基本操作題(本題共5題,每題1.0分,共5分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾pmjl下的工程projl,其中在編輯窗口內(nèi)顯示的主程序文件中定義有類ABC和主函數(shù)main。程序文本中位于每行“//ERROR****found****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:2123注意:只修改每個(gè)“//ERROR****found*****”下面的一行,不要改動(dòng)程序中的其他任何內(nèi)容。#includeusingnamespacestd;clasSABC{public://ERROR**********found**********ABC(){a=0;b=0;C=0;}ABC(intaa,intbb,intCC);voidSetab(){++a,++b;)intSum(){returna+b+C;)private:inta,b;constintC;};ABC::ABC(intaa,intbb,intCC):C(CC){a=aa;b=bb;)intmain(){ABCx(1,2,3),Y(4,5,6);ABCZ,*W=&Z;W一>Setab();//ERROR**********found***********intsl=X.Sum()+Y一>Sum();cout<標(biāo)準(zhǔn)答案:(1)ABC():a(0),b(0),c(0){}(2)ints1=x.Sum()+y.Sum();(3)ints2=sl+w一>Sum();知識(shí)點(diǎn)解析:本題考查的是ABC類,其中涉及構(gòu)造函數(shù)、成員函數(shù)和常變量私有成員。構(gòu)造函數(shù)中因?yàn)橐o常變量私有成員初始化,所以必須使用成員列表初始化來(lái)賦初值。只有類的指針在調(diào)用成員函數(shù)時(shí)才使用標(biāo)識(shí)符“一>”。【解題思路】(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,根據(jù)私有成員的定義:conatintc;可知,c為常變量,因此構(gòu)造函數(shù)必須使用成員列表初始化來(lái)給c賦初始值。(2)主要考查考生對(duì)類的指針的掌握情況,根據(jù)主函數(shù)的第一條語(yǔ)句:ABCx(1,2,3),y(4,5,6);可知,x和y都是ABC類,但不是指針,因此它們調(diào)用ABC類的成員函數(shù)要使用標(biāo)識(shí)符“.”,而不是“一>”。(3)主要考查考生對(duì)類的指針的掌握情況,根據(jù)主函數(shù)的第二條語(yǔ)句:ABCz,*w=&z;可知,w是ABC類的指針,指向z,因此w調(diào)用A:BC類的成員函數(shù)時(shí)要使用標(biāo)識(shí)符“一>”,而不是“.”。2、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本題的功能是:從鍵盤(pán)輸入字符串s,然后輸出字符串s中的字符個(gè)數(shù)。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。1#include<iostream>2intmain()3{4//********error********5cout<<’’pleaseinputastring:’’<<end1;6//********error********7namespacestd;8chars[256];9cin.getline(s,256);10cout<<strlen(s)<<end1;11return0;12}標(biāo)準(zhǔn)答案:(1)std::cout<<’’pleaseinputastring:’’<<std::end1;(2)usingnamespacestd;知識(shí)點(diǎn)解析:程序要求從鍵盤(pán)輸入字符串s,然后輸出字符串s中字符的個(gè)數(shù)。從已給定源程序的main主函數(shù)開(kāi)始入手,程序通過(guò)cin輸入標(biāo)準(zhǔn)類型的成員函數(shù)getline讀入一行字符,然后通過(guò)strlen()函數(shù)求得字符串長(zhǎng)度。(1)第1個(gè)標(biāo)識(shí)下實(shí)現(xiàn)在屏幕上輸出“pleaseinputastring:”提示語(yǔ)句。在程序中用到C++標(biāo)準(zhǔn)庫(kù)時(shí),要使用std標(biāo)準(zhǔn)命名空間進(jìn)行限定。cout為標(biāo)準(zhǔn)庫(kù)函數(shù),所以要聲明cout是在命名空間std中定義的流對(duì)象,即第1個(gè)標(biāo)識(shí)下的“std::cout<<’’pleaseinputastring:’’<<std::end1;”。(2)第2個(gè)標(biāo)識(shí)下的“namespacestd;”語(yǔ)句是使用了標(biāo)準(zhǔn)命名空間std,正確語(yǔ)句應(yīng)該是“usingnamespacestd;”。3、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本題的功能是:從鍵盤(pán)輸入字符串s,然后輸出字符串s中的字符個(gè)數(shù)。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。#includeintmain(){//********error********cout<<"pleaseinputastring:”<標(biāo)準(zhǔn)答案:(1)std::cout<<"pleaseinputastring:"<知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下實(shí)現(xiàn)在屏幕上輸出“pleaseinputastring:”提示語(yǔ)句。在程序中用到C++標(biāo)準(zhǔn)庫(kù)時(shí),要使用std標(biāo)準(zhǔn)命名空間進(jìn)行限定。cout為標(biāo)準(zhǔn)庫(kù)函數(shù),所以要聲明tout是在命名空間std中定義的流對(duì)象,即第1個(gè)標(biāo)識(shí)下的“std::cout<<"pleaseinputastring:”<4、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:m=-10n=-10p=0q=-10z=A注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。1#include<iostream.h>2voidmain()3{4doublem=10;5floatn=10;6boolp=1;7intq=10,8charz=’a’;9m=-m;10//******error******11n=-n;12//******error******13p=-P;14//******error******15q=-q,16z=z-32;17cout<<’’m=’’<<m<<end1;18cout<<’’n=’’<<n<<end1;19cout<<’’p=’’<<p<<end1;20cout<<’’=q’’<<q<<end1;21cout<<’’z="<<z<<end1;22return;23}標(biāo)準(zhǔn)答案:(1)n=-n;(2)p=!P;(3)q=-q;知識(shí)點(diǎn)解析:本題主要考察了考生對(duì)算數(shù)運(yùn)算符和邏輯運(yùn)算符的掌握程度,考察的運(yùn)算符包括負(fù)號(hào)運(yùn)算符“-”和取反運(yùn)算符“!”等基本運(yùn)算符。(1)程序中定義了多個(gè)變量,并做了一些基本的運(yùn)算處理。(2)由題目要求的運(yùn)行結(jié)果可知,第1個(gè)標(biāo)識(shí)下和第3個(gè)標(biāo)識(shí)下是對(duì)變量n和q取反,求一個(gè)正數(shù)的相反數(shù)可以通過(guò)算數(shù)運(yùn)算符“-”得到,第1個(gè)標(biāo)識(shí)下和第3個(gè)標(biāo)識(shí)下應(yīng)分別改為“n=-n;”和“q=-q;”,即只需要通過(guò)負(fù)號(hào)運(yùn)算就可以實(shí)現(xiàn)。(3)從題目要求輸出的結(jié)果來(lái)分析,第2標(biāo)識(shí)下是對(duì)邏輯變量p取反,對(duì)一個(gè)邏輯變量求反應(yīng)該用取反運(yùn)算符“!”第2個(gè)標(biāo)識(shí)下應(yīng)改為“p=!p;”。5、使用VC6打開(kāi)考生文件夾下的源程序文件modil.epp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:1063022注意:錯(cuò)誤的語(yǔ)句在//*****error******的下面,修改該語(yǔ)句即可。#includeclassCMyClass{private:intnumber;intAdd(inti){returnnumber+=i;}intSub(inti){returnnumber-=i;}intMul(inti){returnnumber*=i;)intDiv(inti){if(i!=0){returnnumber/=i;}elsereturnnumber;}//*****error******typedefint(FUNC)(int);//*****error******FUNCfunc[];public:CMyClass(){func[0]=CMyClass::Add;func[1]=CMyClass::Sub;func[2}=CMyClass::Mul;func[3]=CMyClass::Div;number=0;}intCallFunction(inti,intj){//*****error******return(func[i])(j);}};voidmain(){CMyClassmyobj;cout<標(biāo)準(zhǔn)答案:(1)typedefint(CMyClass::*FUNC)(int);(2)FUNCfunc[4];(3)return(this->*func[i])(j);知識(shí)點(diǎn)解析:(1)在類中定義函數(shù)指針須指定類名及指針定義運(yùn)算符水,因此第1個(gè)標(biāo)識(shí)下函數(shù)指針正確的定義為“typedefint(CMyClass::*FUNC)(int);”。(2)函數(shù)指針數(shù)組本身是數(shù)組類型,因此在定義時(shí)如果沒(méi)有初始化,就必須指定數(shù)組大小,在本題中因?yàn)橹羔様?shù)組包含的指針變量需要指向四種算數(shù)運(yùn)算,因此定義指針數(shù)組大小為4,即第2個(gè)標(biāo)識(shí)下應(yīng)改為“FUNCfunc[4];”。(3)func是指針數(shù)組,因此訪問(wèn)的時(shí)候需要有指針運(yùn)算符“*”,第3個(gè)標(biāo)識(shí)下應(yīng)改成“return(this->*func[i])(j);”。國(guó)家二級(jí)C++機(jī)試(基本操作題)模擬試卷第5套一、基本操作題(本題共5題,每題1.0分,共5分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾pmjl下的工程projl,此工程中含有一個(gè)源程序文件projl.cpp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Thevalueis:10注意:只修改注釋“//ERROR****found****”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//projl.cpp#includeusingnamespacestd;classMember{//ERROR**********found**********private:Member(intval):value(val){)intvalue;);classMyClass{Memberm;public://ERROR**********found**********MyClass(intval){}intGetValue()const{returnm.value;}};intmain(){MyClass*obj=newMyClass(i0);//ERROR**********found**********下列語(yǔ)句輸出obj指向類中的value值cout<<“Thevalueis:”<標(biāo)準(zhǔn)答案:(1)public:(2)MyClass(intval):一m(val){}或MyClass(intval){一m=val}(3)cout<<“Thevalueis:”<GetValue()<知識(shí)點(diǎn)解析:本題主要考查的是Member類和MyClass類,其中涉及構(gòu)造函數(shù)、成員函數(shù)和類的指針。類的指針調(diào)用類的成員函數(shù)時(shí)要使用標(biāo)識(shí)符“一>”,而不是“.”,這是最容易出錯(cuò)的地方。私有成員使用private,公有成員使用public,保護(hù)成員使用protected,類的構(gòu)造函數(shù)一定是公有成員函數(shù)?!窘忸}思路】(1)主要考查考生對(duì)私有成員和公有成員的掌握,先看改錯(cuò)語(yǔ)句的下一條語(yǔ)句:Member(intval):value(val){},該語(yǔ)句是一個(gè)構(gòu)造函數(shù),因此我們可以得出此處為公有成員,因?yàn)闃?gòu)造函數(shù)不可能是私有成員。(2)主要考查構(gòu)造函數(shù),構(gòu)造函數(shù)要對(duì)類的成員進(jìn)行初始化,因此在這里使用成員列表初始化,即MyClass(intval):一m(val){}或MyClass(intval){一m=val}。(3)指針調(diào)用類的成員函數(shù)時(shí),應(yīng)使用標(biāo)識(shí)符“一>”?!窘忸}寶典】判斷該成員是公有成員還是私有成員的方法很多,不必一一死記,只要記住公有成員可以被類外函數(shù)調(diào)用,私有成員則不可以,類的構(gòu)造函數(shù)一定是公有成員函數(shù)就可以了。2、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本題的功能是:從鍵盤(pán)輸入字符串s,然后輸出字符串s中的字符個(gè)數(shù)。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。1#include<iostream>2intmain()3{4//********error********5cout<<’’pleaseinputastring:’’<<end1;6//********error********7namespacestd;8chars[256];9cin.getline(s,256);10cout<<strlen(s)<<end1;11return0;12}標(biāo)準(zhǔn)答案:(1)std::cout<<’’pleaseinputastring:’’<<std::end1;(2)usingnamespacestd;知識(shí)點(diǎn)解析:程序要求從鍵盤(pán)輸入字符串s,然后輸出字符串s中字符的個(gè)數(shù)。從已給定源程序的main主函數(shù)開(kāi)始入手,程序通過(guò)cin輸入標(biāo)準(zhǔn)類型的成員函數(shù)getline讀入一行字符,然后通過(guò)strlen()函數(shù)求得字符串長(zhǎng)度。(1)第1個(gè)標(biāo)識(shí)下實(shí)現(xiàn)在屏幕上輸出“pleaseinputastring:”提示語(yǔ)句。在程序中用到C++標(biāo)準(zhǔn)庫(kù)時(shí),要使用std標(biāo)準(zhǔn)命名空間進(jìn)行限定。cout為標(biāo)準(zhǔn)庫(kù)函數(shù),所以要聲明cout是在命名空間std中定義的流對(duì)象,即第1個(gè)標(biāo)識(shí)下的“std::cout<<’’pleaseinputastring:’’<<std::end1;”。(2)第2個(gè)標(biāo)識(shí)下的“namespacestd;”語(yǔ)句是使用了標(biāo)準(zhǔn)命名空間std,正確語(yǔ)句應(yīng)該是“usingnamespacestd;”。3、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:1121注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。1#include<iostream.h>2classTestClass3{4//********error********56//********error********7constintj;8public:9TestClass()10{11//********error********12staticinti=0;13cout<<++i<<end1;14cout<<j<<end1;15}16};17voidmain()18{19TestClassobj1;20TestClassobj2;21obj2.j+=obj1.j;22return;23}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:public:(2)intj;(3)添加語(yǔ)句:j=1;知識(shí)點(diǎn)解析:本題程序的功能是輸出1121。解題思路從己定源程序的main主函數(shù)開(kāi)始入手,程序通過(guò)類TestClass中成員函數(shù)實(shí)現(xiàn)題目中要求的輸出。(1)打開(kāi)modi1.cpp,調(diào)試程序,顯示錯(cuò)誤提示為“modi1.cpp(22):errorC224.8:’j’:cannotaccessprivatememberdeclaredinclass’TestClass’”,第1個(gè)標(biāo)識(shí)下的i變量由于被定義為私有的,其他函數(shù)不可獲得,這里應(yīng)該是public型,所以在第1個(gè)標(biāo)識(shí)下添加“public:”。(2)程序中對(duì)于j的調(diào)用,說(shuō)明j并不是常量,所以修改i的定義,將其定義為變量,而不是常變量,即修改第2個(gè)標(biāo)識(shí)下語(yǔ)句為“intj;”。(3)題目中要求調(diào)用對(duì)象,輸出i的值為1。原程序中i變量的使用并沒(méi)有賦初始化值,輸出值為亂碼,所以第三個(gè)標(biāo)識(shí)下添加“j=1;”。4、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序輸出:number1=4.8number2=93.6number3=0.9PRODUCT=404.352注意:錯(cuò)誤的語(yǔ)句在//******error******的下面。修改該語(yǔ)句即可。其他的語(yǔ)句不能修改。#include<iostream>usingnamespacestd;intmain(){doublenumber1=4.8,number2=93.6,number3=0.9;//********error********product=number1*number2*number3;//********error********cout<<"number1="<<number1<’\t’<<"number2="<<number2<<’\t?!唬?*******error********cout<<"number3="<<number3<<’\t’;cout<<"PRODUCT="<<product(<endl;return0;}標(biāo)準(zhǔn)答案:(1)doubleproduct=number1*number2*number3;(2)cout<<"number1="<<number1<<’\t’<<"number2="<<number2<<’\t’;(3)cout<<"number3="<<number3<<’\t’<<endl;知識(shí)點(diǎn)解析:(1)C++要求變量在定義后才能使用,顯然product變量沒(méi)有定義,number1、number2和number3均為double型變量,product是這三個(gè)變量的乘積,因此product的數(shù)據(jù)類型是double型,因此第1個(gè)標(biāo)識(shí)下應(yīng)改為doubleproduct=number1*number2*number3。(2)cout流中的數(shù)據(jù)是用流插入運(yùn)算符“<<”順序加入的,第2個(gè)標(biāo)識(shí)下是輸出number1、number2和number3的值,各個(gè)數(shù)據(jù)之間用“<<”順序加入,不能用“<”,第2個(gè)標(biāo)識(shí)下應(yīng)改為cout<<"number1="<<number1<<’\t’<<"number2="<<number2<<’\t’。(3)由于輸出“PRODUCT=404.352”在“number1=4.8number2=93.6number3=0.9”下一行,因此輸出“number3=0.9”后應(yīng)換行,故第3個(gè)標(biāo)識(shí)下應(yīng)改為“cout<<"number3="<<number3<<’\t’<<endl;”。5、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果是:nember=1nember=10nember=100注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。#includeClassTestClass{public:TestClass(inti){nember=i;}voidSetNember(intm){nember=m;}intGetNember()const{returnnember;}voidPrint()const{cout<<"nember="<標(biāo)準(zhǔn)答案:(1)TestClassobj1(1);(2)obj1.SetNember(10);(3)obj2.SetNember(100);知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下,“TestClassobj1;”語(yǔ)句是聲明TestClass類的對(duì)象obj1,根據(jù)TestClass類構(gòu)造函數(shù)的定義TestClass(inti),存在整型參數(shù),并且題目要求第一個(gè)輸出結(jié)果為1,所以補(bǔ)全參數(shù)1,即第1個(gè)標(biāo)識(shí)下的“TestClassobj1(1);”。(2)第2個(gè)標(biāo)識(shí)下的“obj1.nember=10;”應(yīng)該是調(diào)用成員函數(shù)SetNember賦值。在C++中成員函數(shù)的使用形式應(yīng)該是:對(duì)象名.成員函數(shù),所以修改為“obj1.SetNember(10);”。(3)類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。第3個(gè)標(biāo)識(shí)下“TestClass.SetNember(100);”語(yǔ)句中的TestClass為類,并不是對(duì)象,這里應(yīng)該是使用定義的對(duì)象,即obj2,修改為“obj2.SetNember(100);”。國(guó)家二級(jí)C++機(jī)試(基本操作題)模擬試卷第6套一、基本操作題(本題共5題,每題1.0分,共5分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj1下的工程proj1,其中有枚舉DOGCOLOR、狗類Dog和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found****”下的語(yǔ)句行有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:ThereisawhitedognamedHobo.ThereisablackdognamedHaha.ThereisamotleydognamedHihi.注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;//狗的顏色:黑、白、黃、褐、花、其他enumDOGCOLOR{BLACK,WHITE,YELLOW,BROWM,PIEBALD,OTHER);classDog{//狗類DOGCOLORcolor;charname[20];static:intcount;public:Dog(charname[],DOGCOLORcolor){strcpy(this->name,name);//ERROR*******found*******strcpy(this->color,color);}DOGCOLORgetColor()const{returncolor;}//ERROR*******found*******constchar*getName()const{return*name;}constchar*getColorString()const{switch(color){caseBLACK:return"black";caseWHTTE:Eeturn"white";caseYELLOW:return"yellow";caseBROWN:return"brown";casePIEBALD:return"piebald";}return"motley";}voidshow()const{cout<<"Thereisa"<<getColorString()<<"dognamed"<<name<<’.’<<end1;}},intmain(){//ERROR*******found*******Dogdog1("Hoho",WHITE),dog2("Haha",BLACK);dog3("Hihi",OTHER);dog1.show();dog2.show();dog3.show();return0;}標(biāo)準(zhǔn)答案:(1)this->color=color;(2)constchargetName()const{retum*name;}(3)Dogdog1("Hoho",WHITE),dog2("Haha",BLACK),dog3("Hihi",OTHER.);知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)strcpy函數(shù)的掌握,如果看到上一條語(yǔ)句strcpy(this->name,name);,就以為本條語(yǔ)句也要用strcpy函數(shù)來(lái)賦值,這是錯(cuò)誤的。Strcpy函數(shù)只能復(fù)制字符串,根據(jù)類的私有成員聲明可知,color是DOGCOLOR型的,這里直接使用賦值語(yǔ)句“=”即可。(2)主要考查考生對(duì)函數(shù)返回值的掌握,先解讀語(yǔ)句constchar*getName()const{return*name;},要返回的是一個(gè)const的字符指針,同時(shí)函數(shù)內(nèi)的值不能改變,name在類的私有成員聲明中是個(gè)字符數(shù)組,*name代表字符數(shù)組而不是字符指針,問(wèn)題就出來(lái)了,需要修改返回類型:constchargetName()const{return,lc*name;}。(3)語(yǔ)法錯(cuò)誤,定義變量時(shí),變量之間應(yīng)使用“,”分開(kāi)。2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾projl下的工程pmj1。程序中位于每個(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)<<endl;cout<<”number=”<標(biāo)準(zhǔn)答案:(1)MyClass(intval):N(1)(2)~MyClass(){delete[]p;}(3)voidprint(MyClass&obj)知識(shí)點(diǎn)解析:本題考查MyClass類,其中涉及動(dòng)態(tài)數(shù)組、構(gòu)造函數(shù)、析構(gòu)函數(shù)和友元函數(shù)。構(gòu)造函數(shù)的

溫馨提示

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

評(píng)論

0/150

提交評(píng)論