國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷32(共27題)_第1頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷32(共27題)_第2頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷32(共27題)_第3頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷32(共27題)_第4頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷32(共27題)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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ī)試(操作題)模擬試卷32(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,請(qǐng)修改程序中的錯(cuò)誤,使程序能得出正確的結(jié)果:num:0num:1num:10注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******eror******的下面。#include<iostream.h>inti=10;classTestClasS{public:TestClasS(inti){cout<<"num:"<<i<<endl;//********error********i=i+1;}voidPrint()const(cout<<"num:"<<i<<endl;}private:inti;};voidmain(){//********error*******TestClassprint;inti(0);print.Print();//********error********cout<<"num:"<<i<<endl;return;}標(biāo)準(zhǔn)答案:(1)this->i=i+1;或TestClass::i=i+1:或(*this).i=i+1;(2)TestClassprint(0);(3)cout<<"num:"<<::i<<endl;知識(shí)點(diǎn)解析:(1)打開(kāi)modi1,cpp,調(diào)試程序,顯示錯(cuò)誤提示為第二標(biāo)識(shí)下“modi1.cpp(22):errorC2512:’TestClass’:noappropriatedefaultconstiuctoravailable”,主函數(shù)中首先調(diào)用的就是第2個(gè)標(biāo)識(shí)下的TestClassprint函數(shù),構(gòu)造函數(shù)的名字和類的名字是一樣的,而程序中給出的“TestClassprint;”沒(méi)有給出參數(shù),所以程序調(diào)試時(shí)無(wú)法確定調(diào)用的函數(shù)。根據(jù)TestClass構(gòu)造函數(shù)“TestClass(inti)”的定義,應(yīng)該存在int型參數(shù),并且題目要求第一次輸出的值為“0”,所以第2個(gè)標(biāo)識(shí)正確的調(diào)用函數(shù)為“TestClassprint(0);”。(2)運(yùn)行,發(fā)現(xiàn)第一次的輸出正確,但是第二次的輸出值為“-858993460”,并不是題目中要求的“1”。在主函數(shù)中,可知第二次輸出調(diào)用的是“print.Print();”,即類TestClass的成員函數(shù)“Print()”。成員函數(shù)Print的定義“voidPrint()const”中的輸出語(yǔ)句為“cout<<"num:"<<i<<endl;”,而第二次的輸出值為“-858993460”說(shuō)明“i”的賦值錯(cuò)誤。第1個(gè)標(biāo)識(shí)下的“i=i+1;”語(yǔ)句是獲得num的值為“1”,因?yàn)椤癷”還存在著“inti=10;”的定義,這里應(yīng)該是調(diào)用成員函數(shù)自身的值,而不是上面的“inti=10;”,所以修改為“this->i=i+1;”或“TestClass::i=i+1;”或“(*this).i=i+1;”。(3)主函數(shù)中通過(guò)“cout<<"num:"<<i<<endl:”語(yǔ)句實(shí)現(xiàn)第三次輸出,第三次的輸出值為“0”,并不是題目中要求的“10”。程序中存在“inti=10;”定義,這里應(yīng)該是調(diào)用“inti=10;”中的“i”值。通過(guò)域定義符引用這個(gè)“i”,所以修改為“cout<<"num:"<<::i<<endl:”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成函數(shù)fun(char*s1,char*s2),此函數(shù)的功能是計(jì)算s1中出現(xiàn)s2的個(gè)數(shù),當(dāng)不出現(xiàn)時(shí),則返回0。如:s1為"1112223333aaaaeeffd"s2為"11"則返回1s2為"aa"則返回2注意:請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。#include<iostream.h>//注意只能使用int類型,不能類型轉(zhuǎn)換intfun(char*s1,char*s2){}voidmain(){chars1[1024];chars2[256];cout<<"pleaseinputastring:"<<endl;cin.getline(s1,1024);cout<<"pleaseinputotherstring:"<<endl;cin.getline(s2,256);cout<<fun(s1,s2);cout<<endl;return;}標(biāo)準(zhǔn)答案:intsize=0;//初始化字符串統(tǒng)計(jì)變量個(gè)數(shù)ints1len;ints2len;for(s1len=0;s1[s1len]!=0;s1len++);//第一個(gè)字符串循環(huán)for(s2len=0;s2[s2len]!=0;s2len++);//第二個(gè)字符串循環(huán)for(inti=0;i<s1len;i++){intj=0;for(;j<s2len;j++)if(s1[i+j]!=s2[j])//將第二個(gè)串中的字符與第一個(gè)串中的字符比較break;if(j==s2len){++size;i+=j;--i;}}returnsize;知識(shí)點(diǎn)解析:(1)size變量用來(lái)存放s1中出現(xiàn)s2的個(gè)數(shù),初始值賦為0。(2)然后利用for循環(huán)對(duì)s2中的每一個(gè)字符與s1中的字符進(jìn)行比較。(3)如果循環(huán)中有符合條件的字符串,就將變量size個(gè)數(shù)加1。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,這個(gè)程序完成輸出到屏幕一些特定的信息,但工程有錯(cuò)誤或者不完整,請(qǐng)完成以下功能:(1)初始化mNum2的值為j,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)補(bǔ)充全局函數(shù)fun()使之能夠調(diào)用類TestClass的成員變量,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)初始化靜態(tài)變量,請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)修改注釋//********4********后的語(yǔ)句。使得程序輸出以下內(nèi)容:m_Num1=1m_Num2=2m_Num3=1m_Num1=4m_Num2=2m_Num3=7注意:僅在函數(shù)指定位置添加語(yǔ)句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include<iostream.h>ClasSTestClasS{public://********1********TestClass(inti,intj){m_Num1=i;m_Num3+=i;}voidPrint(){cout<<"m_Num1="<<m_Num1<<endl;cout<<"m_Num2="<<m-Num2<<endl;cout<<"mNum3="<<mNum3<<endl;)voidAdd(inti){mNum3+=i;}private:intmNum1;constintmNum2;staticintmNum3;//********2********};//********3********voidfun(){TestClassNum(1,2);Num.mNum1=4;//********4********Num.Add();Num.Print();}voidmain(){TestClassNum(1,2);Num.Print()jfun();return;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:TestClass(inti,intj):mNum2(j)(2)添加語(yǔ)句:friendvoidfun();(3)添加語(yǔ)句:intTestClass::mNum3=0;(4)將“Num.Add();”補(bǔ)充完整為:Num.Add(5);知識(shí)點(diǎn)解析:(1)根據(jù)“constintm_Num2;”語(yǔ)句知道m(xù)_Num2為類TestClass中的私有數(shù)據(jù),另外,C++定義構(gòu)造函數(shù)的初始化數(shù)據(jù)成員的方法中可以在原有函數(shù)末尾加一個(gè)冒號(hào),然后列出參數(shù)的初始化表實(shí)現(xiàn),即“TestClass(inti,intj):m_Num2(j)”。(2)在C++中,如果在本類以外的其他地方定義了一個(gè)函數(shù),在類體中是用friend對(duì)該函數(shù)進(jìn)行聲明的,此函數(shù)稱為本類的友元函數(shù),并且能夠調(diào)用本類中的成員變量。程序中fun()在類TestClass以外的地方定義的,為了實(shí)現(xiàn)其對(duì)類TestClass中成員變量的調(diào)用,在類TestClass中補(bǔ)全“friendvoidfun();”,即聲明fun()為類TestClass的友元函數(shù)。(3)在C++中,初始化類中數(shù)據(jù)成員的格式可以是“<類型>類名class::參數(shù)=”,其中<類型>為要初始化參數(shù)的類型,“::”為作用域符號(hào),說(shuō)明參數(shù)是class中的參數(shù),所以這里補(bǔ)全“intTestClass::m_Num3=0;”。(4)函數(shù)fun()中“Num.Add();”語(yǔ)句應(yīng)該是調(diào)用類“TestClass”中的成員函數(shù)“voidAdd(inti)”。其定義中存在參數(shù)inti,所以注釋下修改的語(yǔ)句缺少參數(shù)。主函數(shù)首先調(diào)用“Num.Print();”,即實(shí)現(xiàn)題目中輸出的前三條語(yǔ)句,而“fun();”語(yǔ)句實(shí)現(xiàn)后面三條語(yǔ)句的輸出,即“m_Num3=7”才是調(diào)用Num.Add的輸出結(jié)果,即“m_Num3+=i;”的計(jì)算結(jié)果?!癟estClass]Num(1,2):”中將i的值初始化為1,“m_Num3”的值在上一次“Num.Print();”調(diào)用中為1,如果計(jì)算結(jié)果為7,那么Add(inti)中i的初始化值為5,即“Num.Add(5);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用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的值。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。函數(shù)IsPalindromes(cha*string)實(shí)現(xiàn)的功能是判定給定的字符串是否構(gòu)成回文字符串,如果是則返回1,否則返回0。如:1234554321或者1234321都認(rèn)為是回文字符串。如果串為空或一個(gè)字母時(shí),均認(rèn)為是回文字符串。注意:不能修改程序的其他部分,只能補(bǔ)充IsPalindromes()函數(shù)。#include#defineMAXLEN1024boolIsPalindromes(char*string){}voidmain(){charStr[MAXLEN];cout<<"請(qǐng)輸入一行文字"<標(biāo)準(zhǔn)答案:intlen=0;for(;string[len]!=NULL;len++)//獲取字符串的長(zhǎng)度;len--;//下標(biāo)從0開(kāi)始到len-1for(inti=0;i知識(shí)點(diǎn)解析:(1)由于字符串的長(zhǎng)度是未知的,先利用循環(huán)求出字符串的長(zhǎng)度,循環(huán)變量從0開(kāi)始,直到數(shù)組的結(jié)束,string[len]=NUL為循環(huán)結(jié)束條件,如此便得到了數(shù)組的長(zhǎng)度len。(2)知道長(zhǎng)度后就可以判斷對(duì)稱位置的元素是否相同,比如第一個(gè)元素和最后一個(gè)元素,第二個(gè)元素和倒數(shù)第二個(gè)元素,如此比較下去直到到了最中間的元素為止。(3)可以利用循環(huán)來(lái)比較是否對(duì)稱,設(shè)置另一個(gè)循環(huán)變量i,i從0開(kāi)始表示從數(shù)組的頭開(kāi)始讀數(shù),len從數(shù)組的尾部開(kāi)始讀數(shù),如果string[i]!=string[len],則跳出循環(huán)返回0,如果循環(huán)結(jié)束還沒(méi)發(fā)現(xiàn)不同則返回1。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示人基本信息的類CHumanlnfo,但類CHumanlnfo的定義并不完整。請(qǐng)按要求完成下列操作,將類CHumanlnfo的定義補(bǔ)充完成:(1)定義私有數(shù)據(jù)成員bloodType用于表示血型,血型為char型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅埃?*******1********”之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成構(gòu)造函數(shù)的定義,要求具有缺省值,缺省值為身高175,體重70,血型A。請(qǐng)?jiān)谧⑨尅埃?*******2********”之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類外CHumanInfo成員函數(shù)Setlnfo的定義。請(qǐng)?jiān)谧⑨尅埃?*******3********”之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)在主函數(shù)中調(diào)用成員函數(shù)SetInfo,把對(duì)象d2的三個(gè)私有數(shù)據(jù)成員分別設(shè)定為身高170,體重64,血型為B。請(qǐng)?jiān)谧⑨尅埃?*******4********”之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#includeclassCHumanInfo{private:intheight;intweight;//********1********public://********2********:height(ht),weight(wt),bloodType(bt){};CHumanInfo(CHumanInfo&h1):height(h1.height),weight(h1.weight),bloodType(h1.bloodType){};intGetHeight(){returnheight;}intGetWeight(){returnweight;}intGetBloodType(){returnbloodType;}voidSetInfo(intht,intwt,charbt);voidDisplay();};//********3********{height=ht;weight=wt;bloodType=bt;}voidCHumanInfo::Display(){cout<<"HumanInfo:";cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:charbloodType;(2)添加語(yǔ)句:CHumanInfo(intht=175,intwt=70,charbt=’A’)(3)添加語(yǔ)句:voidCHumanInfo::SetInfo(intht,intwt,charbt)(4)添加語(yǔ)句:h2.SetInfo(170,64,’B’);知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下定義私有數(shù)據(jù)成員char型的bloodType,故第1個(gè)標(biāo)識(shí)下應(yīng)添加“charbloodType;”。(2)構(gòu)造CHumanInfo()完成三個(gè)成員的初始化,并且?guī)в腥笔≈祬?shù),缺省值為身高175,體重70,血型A,由函數(shù)體語(yǔ)句可知參數(shù)名分別為ht、wt和bt,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“CHumanInfo(intht=175,intwt=70,charbt=’A’)”。(3)第3個(gè)標(biāo)識(shí)下在類外完成成員函數(shù)SetInfo的定義,在類外定義成員函數(shù)的格式為:<返回值類型><類名>::<成員函數(shù)>(<參數(shù)表>),故第3個(gè)標(biāo)識(shí)下應(yīng)添加“voidCHumanInfo::SetInfo(intht,intwt,charbt)”。(4)調(diào)用函數(shù)SetInfo()需要3個(gè)參數(shù),程序要求把對(duì)象d2的三個(gè)私有數(shù)據(jù)成員分別設(shè)定為身高170,體重64,血型為B,即把這三個(gè)值傳入函數(shù)SetInfo(),因此第4個(gè)標(biāo)識(shí)下應(yīng)添加“h2.SetInfo(170,64,’B’);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正確運(yùn)行,并且使程序輸出的結(jié)果為:CMyObject,intheconstrutor~CMyObject,inthedestrutor注意:錯(cuò)誤的語(yǔ)句在//********error********的下面,修改該語(yǔ)句即可。#includeclassCMyObject{//********error********//********error********CMyObject{cout<<"CMyObject,intheconstrUtor"<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:public:(2)CMyObject(){cout<<"CMyObject,intheconstrutor"<知識(shí)點(diǎn)解析:(1)構(gòu)造函數(shù)和析構(gòu)函數(shù)均為公有函數(shù),而在C++中默認(rèn)的訪問(wèn)屬性為私有(private),因此構(gòu)造函數(shù)和析構(gòu)函數(shù)必須說(shuō)明為public,即第1個(gè)標(biāo)識(shí)下應(yīng)添加“public:”。(2)函數(shù)定義中在函數(shù)名后均有一對(duì)括號(hào)表示函數(shù)聲明,因此第2個(gè)標(biāo)識(shí)下應(yīng)改為“CMyObjectO{cout<<"CMyObject,intheconstrutor"<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成函數(shù)fun(intn),求出n×n矩陣的對(duì)角線數(shù)字的平方和。如果n為奇數(shù),則對(duì)角線交叉部位數(shù)字只參與一次計(jì)算。注意:請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。#include#defineMAX_N10intXX[MAX_N][MAX_N];intfun(intn){}voidmain(){intnjdo{cout<<”pleaseinputNf1<:N<10):”<>n;if(n<10&&n>=1){break;}}while(1);for(inti=0;i>XX[i][j];}}cout<標(biāo)準(zhǔn)答案:intdata=0;//初始化求平方和變量for(inti=0;i知識(shí)點(diǎn)解析:(1)首先初始化求平方和變量,設(shè)置求平方和的變量為0。(2)然后利用for循環(huán)求得矩陣正對(duì)角線平方和。(3)最后求得逆對(duì)角線平方和,返回平方和變量。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)源程序文件modi3.cpp。其中類TestClass用于把文件輸出到屏幕,然后進(jìn)行文件的分割。分割的方法如下:第一個(gè)文件的大小是文件的前一半,另外一個(gè)文件的大小是剩余部分。此程序?qū)nt.txt文件中的內(nèi)容輸出到屏幕,并且將文件按照以上方式分割,存于文件out1.txt和out2.txt中。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)從輸入文件中獲得一個(gè)字符,并判斷是否到文件結(jié)尾,如果到文件結(jié)尾,則退出循環(huán)。請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)把獲得的輸入文件的內(nèi)容存儲(chǔ)到buf中,并且用len記錄下文件的長(zhǎng)度。請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)將輸入文件的后一半內(nèi)容存儲(chǔ)在第二個(gè)文件中,請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)使用文件流對(duì)象打開(kāi)輸入文件in.txt,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:僅在函數(shù)指定位置添加語(yǔ)句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include#include#includeClassTestClass{public:TestClass(char*fileName){len=0;fstreaminfile;infile.open(fileName,ios::in);charch;//********1********while(){cout<標(biāo)準(zhǔn)答案:(1)將“while()”完整為:while(infile.get(ch))(2)添加語(yǔ)句:buf[len++]=ch;(3)添加語(yǔ)句:outfile2<知識(shí)點(diǎn)解析:(1)題目1要求“從輸入文件中獲得一個(gè)字符,并判斷是否到文件結(jié)尾”。程序中的“while()”循環(huán)判斷語(yǔ)句中缺少?gòu)奈募蝎@得的字符,所以這里補(bǔ)全while循環(huán)判斷條件,即“while(infile.get(ch))”。(2)題目2要求“把獲得的輸入文件的內(nèi)容存儲(chǔ)到buf中,并且用len記錄下文件的長(zhǎng)度?!彼詾閎uf分配空間,即“buf[len++]=ch;”。(3)題目3要求“將輸入文件的后一半內(nèi)容存儲(chǔ)在第二個(gè)文件中?!痹贑++中,用流插入運(yùn)算符為“<<”,所將buf中存放的數(shù)據(jù)存入文件outfile2,以根據(jù)題干中的要求,即這里補(bǔ)全“outfile2<國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj1下的工程proj1,其中有點(diǎn)類Point和線段類Line和主函數(shù)main的定義,程序中位于每個(gè)“//ERROR****found****”之的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出應(yīng)為:p1=(8,4)p2=(3,5)注意:只修改兩個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include#includeusingnamespacestd;classPoint{doublex,y;public:Point(doublex=0.0,doubley=0.0)//ERROR**********found**********{x=x;y=y;}doublegetX()const{returnx;}doublegetY()const{returny;}//ERROR**********found**********voidshow()const{cout<<’(’<標(biāo)準(zhǔn)答案:(1):x(x),y(y){}或{this->x=x,this->y=y;}(2)voidshow()const{cout<<’(’<知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,因?yàn)樾螀⒚退接谐蓡T名稱一樣,因此不能直接賦值,在這里使用成員列表初始化,也可以使用this指針賦值。(2)主要考查考生對(duì)語(yǔ)句基本語(yǔ)法的掌握,根據(jù)語(yǔ)句:voidshow()const{cout<<’(’<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,此工程中包含一個(gè)頭文件shape.h,其中包含了類Shape、Point和Triangle的聲明;包含程序文件shape.cpp,其中包含了類Triangle的成員函數(shù)和其他函數(shù)的定義;還包含程序文件proj2.cpp,其中包含測(cè)試類Shape、Point和Triangle的程序語(yǔ)句。請(qǐng)?jiān)诔绦蛑械臋M線處填寫(xiě)適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述功能。此程序的正確輸出結(jié)果應(yīng)為:此圖形是一個(gè)抽象圖形,周長(zhǎng)=0,面積=0此圖形是一個(gè)三角形,周長(zhǎng)=6.82843,面積=2注意:只能在橫線處填寫(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"抽象圖形";}//返回形狀的名稱};classPoint{//表示平面坐標(biāo)系中的點(diǎn)的類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(Pointp1,Pointp2,Pointp3):point1(p1),point2(p2),point3(p3){)doubleperimeter()const;doublearea()const;constchar*name()const{return"三角形";}};//shape.cpp#include"shape.h"#includedoublelength(Pointp1,Pointp2){returnsqrt((p1.getX()一p2.getX())*(p1.getX()一p2.getX())+(p1.getY()一p2.getY())*(p1.getY()一p2.getY()));}doubleTriangle::perimeter()const{//一個(gè)return語(yǔ)句,它利用length函數(shù)計(jì)算并返回三角形的周長(zhǎng)//***********found***********__________;}doubleTriangle::area()const{doubles=perimeter()/2.0;returnsqrt(s*(s—length(point1,point2))*(s—length(point2,point3))球(s—length(point3,point1)));}//proj2.cpp#include"shape.h"#includeusingnamespacestd;//***********found***********//show函數(shù)的函數(shù)頭(函數(shù)體以前的部分){cout<<"此圖形是一個(gè)"<標(biāo)準(zhǔn)答案:(1)x(x0),y(y0)(2)Pointpoint1,point2,point3(3)returnlength(point1,point2)+length(point1,point3)+length(point2,point3)(4)voidshow(Shape&shape)知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,題目要求用x0、y0初始化數(shù)據(jù)成員x、y,因此在這里使用成員列表初始化,即Point(doublex0,doubley0):x(x0),y(y0){}。(2)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,題目要求定義3個(gè)私有數(shù)據(jù)成員。由構(gòu)造函數(shù)可知3個(gè)私有數(shù)據(jù)成員的類型都是Point,名稱分別為point1、point2和point3,因此空格處填寫(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類,tri是Triangle類,因?yàn)門(mén)riangle是Shape類的派生類,所以可知show函數(shù)的參數(shù)是Shape類型,無(wú)返回值,得出語(yǔ)句voidshow(Shape&shape)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用【答題】菜單命令或直接用VC6打開(kāi)考生文件夾下的工程prog3,其中聲明了ValArray類,該類在內(nèi)部維護(hù)—個(gè)動(dòng)態(tài)分配的整型數(shù)組。ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對(duì)象的深層復(fù)制。請(qǐng)編寫(xiě)ValArray類的復(fù)制構(gòu)造函數(shù)。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此種隋況下程序的輸出應(yīng)該是:ValArrayv1={1,2,3,4,5}ValArrayv2={1,2,3,4,5}要求:補(bǔ)充編制的內(nèi)容寫(xiě)在“//*********333*********”與“//*********666*********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為boj文件,并且在本程序中調(diào)用。//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)答案:Size=other.Size;v=newint[size];for(inti=0;i知識(shí)點(diǎn)解析:主要考查考生對(duì)復(fù)制構(gòu)造函數(shù)的掌握,ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對(duì)象的深層復(fù)制。由ValArray類的構(gòu)造函數(shù):ValArray(constint*p,intn):size(n){v=newint[size];//給v分配大小為size的空間for(inti=0;i國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果為:Maxis7提示:max()數(shù)實(shí)現(xiàn)找出兩個(gè)數(shù)中的最大值,并作為函數(shù)值返回。注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#includeusingnamespacestd;//******error******intmax(inta,intb){if(a標(biāo)準(zhǔn)答案:(1)intmax(int&a,int&b)(2)max(m,n);知識(shí)點(diǎn)解析:(1)max函數(shù)采用的是傳送引用方式傳遞參數(shù),因此第1個(gè)標(biāo)識(shí)下應(yīng)該為intmax(int&a,intab)。(2)調(diào)用max時(shí),傳遞引用時(shí)直接使用變量名即可,第2個(gè)標(biāo)識(shí)下應(yīng)改為“max(m,n)”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分的程序。實(shí)現(xiàn)函數(shù)sort(intA[],intn),用冒泡法將數(shù)組排序。提示:所謂冒泡法,就是每次把相鄰的兩個(gè)數(shù)交換,較大的數(shù)交換到后面。這樣下標(biāo)從0到n-1的數(shù)與其后面相鄰的數(shù)交換,可以把最大的數(shù)交換到數(shù)組的末端。進(jìn)行n次下標(biāo)從0到n-1的交換,則數(shù)組則會(huì)變成有序的,而且是由大到小的順序。注意:不能修改程序的其他部分,并且不能刪除其他的部分,也不能修改程序的結(jié)構(gòu)。#include#defineN10voidsort(intA[N],intn){}intmain(){intA[N]={5,7,4,6,10,13,78,-4,9,20};sort(A,10);for(inti=0;i標(biāo)準(zhǔn)答案:inti,j,k,t;for(i=0;i知識(shí)點(diǎn)解析:(1)以數(shù)組“A[]={3,8,7,6,5,0,1,2,9,4}”為例來(lái)說(shuō)明具體的排序過(guò)程,第一次選擇:第一步從A[0]-A[9]中找最大值max及下標(biāo)k,max=9,k=8;第二步交換a[0]與最大值a[8]的值;第一次結(jié)束后a[0]已存放了最大值,下一次比較就不必再經(jīng)過(guò)它了,而從a[1]開(kāi)始,如此循環(huán)。從例中可以看出10個(gè)元素要進(jìn)行九次比較,n個(gè)元素要進(jìn)行n-1次比較。設(shè)置兩層循環(huán),外層循環(huán)變量i從0到n.1,內(nèi)層循環(huán)變量從i開(kāi)始到n-1,在內(nèi)層循環(huán)中找最大值,如果最大值的下標(biāo)k和i不同,則交換,實(shí)現(xiàn)選擇法排序。(2)在內(nèi)層循環(huán)體內(nèi),如果最大值的下標(biāo)k和i不同,則用一個(gè)臨時(shí)變量記錄第i個(gè)元素,然后將第k個(gè)元素賦值給第i個(gè)元素,臨時(shí)變量值賦給第k個(gè)元素,如此完成兩個(gè)元素的交換。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)利用define定義常量TRUE為1,定義常量FALSE為0,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)在類A2前增加A1的聲明,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)在類C1中聲明友元函數(shù)boolfune(A2&a,A1&b),請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)實(shí)現(xiàn)函數(shù)boolfunc(A2&obj1,Al&obj2)功能,檢查兩個(gè)類的值都為T(mén)RUE,則返回TRUE,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include//********1********#defineFALSE0//********2********ClassA2{private:boolm_A2;friendboolfunc(A2&obj1,A1&obj2);public:A2(){m_A2=FALSE;}public:voidsetA2(booln){m_A2=n;}};classA1{private:boolmA1;//********3********public:A1(){m_A1=TRUE;}public:voidsetA1(booln){m_A1=n;}};boolfunc(A2&obj1,A1&obj2){//********4********return}intmain(){A2obj0;A1obj1;cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:#defineTRUE1(2)添加語(yǔ)句:classA1;(3)添加語(yǔ)句:friendboolfunc(A2&obj1,A1&obj2);(4)將“return”補(bǔ)充完整為:returnobj1.m_A2==TRUE&&obj2.m_A1==TRUE;知識(shí)點(diǎn)解析:(1)#define命令一般將一個(gè)指定的標(biāo)識(shí)符(即宏名)來(lái)代表一個(gè)字符串,其定義形式一般為:#define宏名(參數(shù)表)字符串,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加#defineTRUE1。(2)類聲明格式為:“class<類名>:”,故第2個(gè)標(biāo)識(shí)下應(yīng)添加“classA1;”。(3)友元不是本類的成員函數(shù),在它的函數(shù)體內(nèi)部可以通過(guò)對(duì)象名來(lái)訪問(wèn)類的私有成員和保護(hù)成員。友元函數(shù)是在類聲明中由關(guān)鍵字。friend修飾的非成員函數(shù),3出添加語(yǔ)句:“friendboolfunc(A2&obj1,A1&obj2);”。函數(shù)func返回變量m_A2和m_A1的邏輯與運(yùn)算結(jié)果,因此第4標(biāo)識(shí)下應(yīng)改為“returnobj1.m_A2=TRUE&&obj2.m_A1==TRUE;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:initTestClassdelTestClass注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。#includeclassTestClass{//********error********//********error********intTestClass(){cout<<"initTestClass"<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:public:(2)TestClass(){cout<<"initTestClass"<知識(shí)點(diǎn)解析:(1)打開(kāi)modi1.cpp,調(diào)試程序,顯示錯(cuò)誤提示為第一標(biāo)識(shí)下“modi1.cpp(13):errorC2248:’TestClass::TestClass’:cannotaccessprivatememberdeclaredinclass’TestClass’”,構(gòu)造函數(shù)由于是私有的,無(wú)法獲得,所以應(yīng)該定義為public型,即第1個(gè)標(biāo)識(shí)下添加“public:”。(2)構(gòu)造函數(shù)首部的一般形式為:構(gòu)造函數(shù)名(形參列表),構(gòu)造函數(shù)沒(méi)有返回值,所以定義構(gòu)造函數(shù)時(shí)不需要聲明類型,所以“intTestClass(){cout<<"initTestClass"<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。完成fun()數(shù),其功能是:求出M行N列二維數(shù)組每行元素中的最小值,并計(jì)算它們的和值。和值通過(guò)形參傳回主函數(shù)輸出。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#inClude#defineM2#defineN4voidfun(inta[M][N],int*sum){}voidmain(){intX[M][N]={7,6,5,2,4,2,8,3};ints;fun(x,&s);cout<標(biāo)準(zhǔn)答案:inti,j,k,s=0;for(i=0;ia[i][j])k=j;//求得每一行的最小值s+=a[i][k];//最小值求和}*sum=s;//返回求和值知識(shí)點(diǎn)解析:(1)依次訪問(wèn)每一行的元素。(2)在對(duì)每一行的訪問(wèn)過(guò)程中選出最小數(shù)。(3)將選出的最小數(shù)求和。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。此程序的運(yùn)行結(jié)果為:InCDerive’sdisplay().b=1InCDerive2’sdisplay().b=2其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義函數(shù)display()為無(wú)值型純虛函數(shù)。請(qǐng)?jiān)谧⑨專?*******1********之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)建立類CDerive的構(gòu)造函數(shù),請(qǐng)?jiān)谧⑨專?*******2********之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類CDerive2成員函數(shù)diaplay0的定義。請(qǐng)?jiān)谧⑨專?*******3********之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)定義類Derivel的對(duì)象指針d1,類CDerive2的對(duì)象指針d2。其初始化值分別為1和2。請(qǐng)?jiān)谧⑨專?*******4********之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeusingnamespaceStd;ClassCBase{public:CBaSe(inti){b=i;}//********1********protected:intb;};classCDerive:publicCBase{public://********2********voiddisplay(){cout<<"InCDerive’sdisplay()."<<"b="<display();}Voidmain(){//********4********func(d1);func(d2);}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:virtualVoiddisplay()=0;(2)添加語(yǔ)句:CDerive(inti):CBaSe(i){)(3)添加語(yǔ)句:VoiddisPlay(){cout<<"InCDerive2’sdisplay()."<<"b="<知識(shí)點(diǎn)解析:(1)CBase類中的display()函數(shù)足純虛函數(shù),純虛函數(shù)的定義格式為:virtual<函數(shù)類型><函數(shù)名>(<參數(shù)表>)=0,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“virtualvoiddisplay()=0;”。(2)類CDerive的構(gòu)造函數(shù)用來(lái)完成類成員變量的初始化,派生類沒(méi)有自己的成員變量,可直接采用基類的構(gòu)造函數(shù)完成初始化,因此第2個(gè)標(biāo)識(shí)下文添加“CDerive(inti):CBase(i){}”。(3)第3個(gè)標(biāo)識(shí)下是完成類CDerivc2成員函數(shù)diaplay()的定義和實(shí)現(xiàn),根據(jù)要求的輸出結(jié)果“InCDerive2’sdisplay().b=2”可知display()函數(shù)除輸出字符串“InCDerive2’sdisplay().”還輸出變量b的值,故第3個(gè)標(biāo)識(shí)下應(yīng)添加“voiddisplay(){cout<<"InCDerive2’sdisplay()."<<"b="<國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使得程序輸出:Hellotest注意:不要改動(dòng)mam函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。#include∥********error********templatevoidfun(Tt){std::cout<<“test”<voidfun(boolt){std::cout<<(t?“Hello”:“Hi”)<標(biāo)準(zhǔn)答案:(1)template(2)刪除“template”(3)boolflag=true;知識(shí)點(diǎn)解析:程序要求輸出字符串Hellotest。從己定源程序的main主函數(shù)開(kāi)始入手,調(diào)用函數(shù)fun實(shí)現(xiàn)字符的輸出。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和C代碼,完成空出部分的程序,實(shí)現(xiàn)函數(shù)fun(char*s1,char*s2)將字符串s2連接在字符串s1之后,構(gòu)成一個(gè)首指針為s1的字符串。注意:不能修改函數(shù)的其他部分。#include#defitieMAXLINE1000voidfun(char*s1,char*s2){}voidmain(){chars1[MAXLINE];chars2[256];cout<<“pleaseinputastring:”<標(biāo)準(zhǔn)答案:inti=0;for(i=0;s1[i]!=0;i++);//指向第一個(gè)串尾for(intj=0;s2[j]!=0;k++)//利用循環(huán)將第二個(gè)串拷貝到第一個(gè)串尾s1[i++]=s2[j];1[i]=0;//加尾符知識(shí)點(diǎn)解析:(1)該程序功能是將字符串s2連接在字符串s1之后。它的解題思路,首先指向字符串s1的尾,然后將第二個(gè)字符串s2的內(nèi)容依次拷貝到第一個(gè)串的尾。(2)從已給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)voidfun(char*s1,char*s2)中的s1和s2為要連接的字符串。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)在類TestClass中定義name為字符串類型,age為整型,請(qǐng)?jiān)谧⑨尅?*******1********之后添加語(yǔ)句。(2)設(shè)置類TestClass0的基類為T(mén)estClass類的定義,請(qǐng)?jiān)谧⑨尅?*******2********后添加語(yǔ)句。(3)在類TestClass的派生類TestClass0的公有成員中定義析構(gòu)函數(shù)TestClass0,請(qǐng)?jiān)凇?*******4********后添加。(4)設(shè)置類TestClassl的基類為T(mén)estClass類的定義,請(qǐng)?jiān)凇?*******4********后實(shí)現(xiàn)。本程序輸出如下結(jié)果:TestClassclassconstructorTestClass0classconstructorTestClassonclassconstructorTestClass1classconstructorTestClass1classconstructorTestClassclassconstructorTestClass0classconstructorTestClassclassconstructor注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#includeClassTestClass{∥********1********public:TestClass(){cout<<“TestClassclassconstructor”<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:char*name;intage;(2)添加語(yǔ)句:classTestClasS0:publicTestClass(3)添加語(yǔ)句:一TestClass0()(4)添加語(yǔ)句:classTestClass1:publicTestClass知識(shí)點(diǎn)解析:本題的功能是利用構(gòu)造函數(shù)和析構(gòu)函數(shù)中的輸出語(yǔ)句,輸出字符串。在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已定源程序的main主函數(shù)開(kāi)始入手,完成類的定義以及其成員函數(shù)。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用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ǔ)句不能修改。#includeusingnamespaceStd;intmsin(){doublenumber1=4.8,number2=93.6,number3=0.9;∥********error********Droduct=number1*number2*number3;∥********error********cout<<“number1=”<標(biāo)準(zhǔn)答案:(1)doubleprduct=numbe_r1*number2*number3;(2)cout<<“number1=”<知識(shí)點(diǎn)解析:程序內(nèi)容比較簡(jiǎn)單,要求在屏幕上輸出三個(gè)變量值和這三個(gè)變量的乘積值,可編譯程序按照提示來(lái)找到錯(cuò)誤處修改調(diào)試,按照要求來(lái)修改程序。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成函數(shù)fun(intx),該函數(shù)功能是將x的值轉(zhuǎn)換成二進(jìn)制數(shù)輸出到屏幕,并且在函數(shù)中調(diào)用寫(xiě)函數(shù)WriteFile()將結(jié)果輸出到modi2.txt文件中。例如:x=13,13的二進(jìn)制數(shù)字為1101,則輸出到屏幕的為1101。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#include#includeusingnamespacestd;voidWriteFile(char*str){ofstreamoutl;outl.open(“modi2.txt”,ios—base::binary|ios—base::app);for(inti=0;str[i]!=0;i++)out1.put(str[i]);out1.close();}voidfun(intx){}voidClearFile(){Ofstreamout1;out1.open(“modi2.txt”);out1.close();}intmain(){ClearFile();fun(13);return0;}標(biāo)準(zhǔn)答案:charstr[32];inti;for(i=30;i>=0;i一一)//計(jì)算二進(jìn)制{if(x%2)str[i]=’1’;//求余,如果余不為零字符串str第i位為1elsestr[i]=‘0’;//否則為0x>>=1;if(!x)break;}str[31]=‘\0’;//串加尾符cout<<&Str[i]<知識(shí)點(diǎn)解析:(1)該程序功能是實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換成二進(jìn)制數(shù)。十進(jìn)制到二進(jìn)制的轉(zhuǎn)換是對(duì)十進(jìn)制的數(shù)字進(jìn)行2的取余運(yùn)算,余數(shù)不為零則取1,否則為0,然后對(duì)余數(shù)進(jìn)行循環(huán)取余運(yùn)算,直到余數(shù)為0。(2)從己給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)fun(intx)中的x參數(shù)為輸入的十進(jìn)制數(shù)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:每賣(mài)出一個(gè)瓜,則計(jì)算瓜的重量,還要計(jì)算所有賣(mài)出瓜的總重量以及總個(gè)數(shù),同時(shí)允許退貨,請(qǐng)按照以下的操作,把類補(bǔ)充完整(1)定義類Cmelon的私有靜態(tài)數(shù)據(jù)成員float型變量totalweight和int型變量totalNo,請(qǐng)?jiān)谧⑨尅?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類Cmelon的帶一個(gè)float型變量W的構(gòu)造函數(shù),并把這個(gè)W加到totalweight中,并且totalNo自加。請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)在析構(gòu)函數(shù)中,在totahveight中減去weight,然后totalNo自減,請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成靜態(tài)成員變量的初始化為0,請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#inCludeclassCmelon{private:floatweight;∥********1********staticinttotaINo;public:Cmelon(flcatw){∥********2********totalweight+=w;totaiNo++;}~Cmelon(){∥********3********totalweight一=weight;}voiddisplay(){tout<<“Sellamelonwith”<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:staticfloattotalweight:(2)添加語(yǔ)句:weight=w;(3)添加語(yǔ)句:totaiNo一一;(4)添加語(yǔ)句:intCmelon::totalNo=0;知識(shí)點(diǎn)解析:程序中定義了Cmelon類,包含totalweight和totalNo兩個(gè)靜態(tài)變量和float型變量weight,分別表示賣(mài)出瓜的總

溫馨提示

  • 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)論