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

下載本文檔

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

文檔簡介

國家二級(jí)C++機(jī)試(操作題)模擬試卷10(共9套)(共27題)國家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp。本程序要求輸入一字符串,然后將其中的小寫字母改變成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到界面。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//******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)解析:同一英文字母的大寫和小寫形式的ASCII碼值相差32,因此,要將小寫字母轉(zhuǎn)換為大寫字母,只要將其對(duì)應(yīng)的ASCII碼值減去32即可,程序中給出的語句中,減去字符’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īng)該是判斷字符串str中的每一個(gè)字符是否為尾符,若不是尾符在循環(huán)中判斷每一個(gè)字符是否為小寫,若為小寫,轉(zhuǎn)換。所以應(yīng)該修改為“whilefstr[i])”。(3)第3個(gè)標(biāo)識(shí)下的“if(str[i]>=’a’)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于’a’,但是小寫字符應(yīng)該是’a’到’z’,所以修改為“if(str[i]>=’a’&&str[i]<=’z’)”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。完成函數(shù)fun(chaur*str,char*s)空出部分。函數(shù)fun(char*str,char*s)的功能是:將在字符串str中下標(biāo)為偶數(shù)位置上的字符,緊隨其后重復(fù)出現(xiàn)一次,放在一個(gè)新串s中,s中字符按原字符串中字符的順序排列。(注意0為偶數(shù))例如:當(dāng)str中的字符串為:’’abcdef’’時(shí),s中的字符串應(yīng)為:’’aaccee’’。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。1#include<iostream.h>2voidfun(char*str,char*s)3{45}6voidmain()7{8charstr[100],s[100];9cout<<’’P1easeenterstringstring:’’<<end1;10cin.getline(str,100);11fun(str,s);12cout<<’’ThereSUltis:’’<<s<<end1;13return;14}標(biāo)準(zhǔn)答案:1inti;2for(i=0;str[i]!=0;i++)//循環(huán)判斷每一個(gè)字符3{4if(i%2==0)//判斷字符串中下標(biāo)為偶數(shù)位置5{6s[i]=str[i];7s[i+1]=str[i];8s[i+2]=’\0’;//新串添加尾符9}10}知識(shí)點(diǎn)解析:(1)該程序功能是找出在字符串中下標(biāo)為偶數(shù)位置上的字符,緊隨其后重復(fù)出現(xiàn)一次,放在一個(gè)新串。它的解題思路,解題過程利用if條件判斷表達(dá)式選擇符合條件的字符,然后將符合條件的字符放入指定的字符串。(2)從己給部分源程序的main主函數(shù)開始入手,核心函數(shù)voidfun(char*str,char*s)中的str參數(shù)為輸入的字符串,其中s為新串。(3)判斷一個(gè)字符串中的某一字符下標(biāo)i是否為偶數(shù),可用“i%2==0”來判斷。(4)對(duì)串str中各個(gè)字符串逐個(gè)進(jìn)行考查,滿足條件的字符就順序放在新串s中,否則就不存放。(5)所有字符處理完后,記得在新串s的末尾加上結(jié)束符“’\0’”。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示日期的類Date,但類Date的定義并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義私有成員變量year、month、day,分別表示年、月、日,類型為int。請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)完成構(gòu)造函數(shù),分別給year、month、day賦值,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z句。(3)完成重載符號(hào)“+=”的定義,請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z句。(4)完成print()打印函數(shù),如2008年8月8日到屏幕和文件modi3.txt格式相同,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z句。注意:僅在函數(shù)指定位置添加語句,請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。1#include<iostream.h>2#include<fstream>3#include<iomanip>4#include<cmath>5usingnamespacestd;6voidWriteFile(intc)7{8ofstreamout1;9out1.open(’’modi3.txt’’,ios_base::app);10out1<<c<<’’;11out1.close();12}13voidWriteFile(char*str)14{15ofstreamout1;16out1.open(’’modi3.txt’’,ios_base::app);17out1<<str;18out1.close();19}20voidClearFile()21{22ofstreamoutl;23out1.open(’’modi3.txt’’);24out1.close();25}26classDate27{28public:29Date(inty,intm,intd)30{31//********2********3233}34voidprint()const;35//********3********3637{38month+=m;39inti=month/12;40intj=month%12;41if(j==0)42{43year+=(i-1);44month=12;45}46else47{48year+=i;49month=j;50}51return*this;52}53private:54//********1********5556};57voidDate::print()const58{59//********4********6061WriteFile(year);62WriteFile(’’年’’);63WriteFile(month);64WriteFile(’’月’’);65WriteFile(day);66WriteFile(’’日’’);67}68intmain()69{70ClearFile();71DateOly_day(2008,8,8);72Oly_day+=3;73Oly_day.print();74return0;78}標(biāo)準(zhǔn)答案:(1)添加語句:intyear,month,day;(2)添加語句:year=y;month=m;day=d;(3)添加語句:Date&operator+=(intm)(4)添加語句:cout<<year<<’’年’’<<month<<’’月’’<<day<<’’日’’<<end1;知識(shí)點(diǎn)解析:在VC環(huán)境下打開程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已給定源程序的main主函數(shù)開始入手,可以看出程序通過調(diào)用類Date和函數(shù)print實(shí)現(xiàn)各種輸出操作。(1)題目1要求“定義私有成員變量year、month、day”。在C++程序的private區(qū)域中添加變量year、month、day的定義,即在第1個(gè)標(biāo)識(shí)下添加“intyear,month,day;”。(2)題目2要求“完成構(gòu)造函數(shù),分別給year、month、day賦值”。在程序中“Date(inty,intm,intd)”的構(gòu)造函數(shù)中添加給year、month、day賦值的語句,即在第2個(gè)標(biāo)識(shí)下添加“year=y;month=m;day=d;”。(3)題目3要求“完成重載符號(hào)“+=”的定義”。在C++中,運(yùn)算符重載的定義方法是定義一個(gè)重載運(yùn)算符的函數(shù),格式為函數(shù)operator+重載運(yùn)算符號(hào)+,所以這里補(bǔ)全“Date&operator+=(intm)”。(4)題目4要求“完成函數(shù)print()打印函數(shù)”。在C++中的print()函數(shù)中補(bǔ)全其打印功能,即在第四個(gè)標(biāo)識(shí)下添加“cout<<year<<’’年’’<<month<<’’月’’<<day<<’’日’’<<end1;”。國家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:151注意:錯(cuò)誤的語句在//******error******的下面,修改該語句即可。1#include<iostream.h>2//******error******3enum4{5Sun,6Mon,7Tue,8Wed,9Thu,10Fri,11Sat,12//******error******13}MyEnum;14structstruct15{16//******error******17intFri,18intSun;19};20voidmain()21{22inti=Mon;23MyEnumt=Fri;24Structstr1;25str1.Fri=Monj26cout<<i<<end1;27cout<<t<<end1;28cout<<str1.Fri<<end1;29}標(biāo)準(zhǔn)答案:(1)enumMyEnum(2)};(3)intFri;知識(shí)點(diǎn)解析:程序當(dāng)中定義了一個(gè)結(jié)構(gòu)體和枚舉類型,結(jié)構(gòu)體含有兩個(gè)整型變量,枚舉類型含有7個(gè)枚舉元素,7個(gè)枚舉元素的值從0變化至6,即Sun=0,Mon=1,Tue=2,Wed=3,Thu=4,F(xiàn)ri=5,Sat=6。(1)第一標(biāo)識(shí)下聲明枚舉類型,聲明枚舉類型的一般形式為:“enum<枚舉類型名>{<枚舉常量列表>};”,程序當(dāng)中把枚舉類型名MyEnum放到枚舉聲明后面,顯然不符合枚舉類型聲明格式,因此第1個(gè)標(biāo)識(shí)下應(yīng)改成“enumMyEnum”。(2)由(1)的分析可知,第2個(gè)標(biāo)識(shí)下也不符合枚舉類型聲明格式,應(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)隔開,而不是以逗號(hào)隔開,因此第3個(gè)標(biāo)識(shí)下應(yīng)改為為“intFri;”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)factor(int*des,int&length,intn)實(shí)現(xiàn)的功能是:將n所有因數(shù)存放到des中,通過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)容。1#include<iostream.h>2#defineMAXNLEN1003voidfactor(int*des,int&length,intn)4{56}7voidmain()8{9inta[MAXNLEN],length;10intn=20;11factor(a,length,n);12for(inti=0,i<length;i++)13{14cout<<a[i]<<’’’’;15}16cout<<end1;17return,18}標(biāo)準(zhǔn)答案:1length=0;2for(inti=1;i<=n;i++)3{4if(n%i==0)//判斷是否n的因數(shù)5{6des[length]=i;7length++;8}9}知識(shí)點(diǎn)解析:函數(shù)factor(int*des,int&length,intn)實(shí)現(xiàn)的功能是將n所有因數(shù)存放到des中,通過length引用返回因數(shù)的個(gè)數(shù),求因數(shù)可采用取余數(shù)的方法,如果兩數(shù)相除余數(shù)為0則說明除數(shù)是被除數(shù)的因數(shù)。(1)找到n的每一個(gè)因數(shù)可采用循環(huán)方法,循環(huán)變量從1開始到n,逐個(gè)取n和循環(huán)變量的余數(shù)。(2)如果余數(shù)為0說明是n的因數(shù),添加到des中,參數(shù)length是采用的引用傳遞方式,形參的改變會(huì)影響實(shí)參,因此可直接將length的值加1表示des中元素個(gè)數(shù)加1。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)定義類的私有變量a、b,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)完成類的構(gòu)造函數(shù),對(duì)變量a、b賦值,缺省兩個(gè)變量值為1,在注釋//********2********之后添加語句。(3)完成打印函數(shù)display(),打印出“a*b=c”格式的一個(gè)乘法算式,在注釋//********3********之后添加語句。(4)補(bǔ)充主函數(shù),使得打印9×9的乘法口訣。在注釋//********4********后添加語句。注意:除在指定位置添加語句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。1#include<iostream.h>2classCMyFormula3{4private:5//********1********67public:8//********2********910{11this->a=a;12this->b=b;13}14voidset(intx,inty)15{16a=x;17b=y;18}19voiddisplay()20{21//********3********2223}24};25intmain()26{27CMyFormulaformular(1,1),28for(inti=l,i<=9;i++)29{30//********4********31for(intj-1j++)32{33formular.set(j,i};34formular.display();35cout<<’’’’;36}37cout<<end1;38}39return0;40}標(biāo)準(zhǔn)答案:(1)添加語句:inta,b;(2)添加語句:CMyFormula(inta=1,intb=1)(3)添加語句:cout<<a<<’*’<<b<<’=’<<a*b;(4)將“for(intj=1;j++)”補(bǔ)充完整為:for(intj=1;j<=1;j++)知識(shí)點(diǎn)解析:程序當(dāng)中定義了類CMyFormula,含有a和b兩個(gè)成員變量,一個(gè)構(gòu)造函數(shù),改變成員變量a和b的值得set(intx,inty)函數(shù),打印a和b的乘積的display()函數(shù)。在主函數(shù)中定義了一個(gè)CMyFormula對(duì)象,然后不斷改變?cè)搶?duì)象的a和b的值,然后調(diào)用display()顯示,如此完成打印9×9的乘法口訣。(1)第1個(gè)標(biāo)識(shí)下完成CMyFormula類的私有變量a、b的定義,從函數(shù)set(intx,inty)的參數(shù)類型可以看出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缺省值為l,因此第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),i沒有判斷退出條件,會(huì)一直循環(huán)下去得不到想到的9×9的口訣表,外層循環(huán)變量i從1開始變化至9,循環(huán)9次,內(nèi)部循環(huán)變量i應(yīng)該從1變化到i,輸出一行,i<=i,這樣保證輸出的是倒9×9口訣,因此第4個(gè)標(biāo)識(shí)下應(yīng)改為“for(intj=1;j<=i;j++)”。國家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正main()函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果如下:Constructor.Defaultconstructor.Areais12Areais0Areais12注意:錯(cuò)誤的語句在//******error******的下面,修改該語句即可。1#include<iostream.h>2classCRectangle3{4private:5doublelength,width;6public:7CRectangle()8{9cout<<’’Defaultconstructor.\n’’;10}11CRectangle(double1,doubleW)12{13length=1;width=w;14cout<<"Constructo.\n’’;15}16voidSet(double1,doublew)17{181this->length=1;19this->width=w;20}21voidGetArea()22{23cout<<’’Areais’’<<length*width<<end1;24}25};26voidmain()27{28CRectangleRect1(3.0,4.0);29//******error******30CRectangleRect2(1);31//******error******32CRectangleRect3;33Rect1.GetArea();34//******error******35Rect2.Set(0);36Rect2.GetArea();37Rect3.GetArea();38}標(biāo)準(zhǔn)答案:(1)CRectangleRect2;(2)CRectangleRect3(Rect1);(3)Rect2.Set(0,0);知識(shí)點(diǎn)解析:程序中定義了類CRectangle,有l(wèi)ength和width兩個(gè)成員變量,兩個(gè)構(gòu)造函數(shù),Set()成員函數(shù)和GetArea()成員函數(shù),Set()成員函數(shù)可以改變length和width的值,GetArea()成員函數(shù)在屏幕上打印length和width的積。(1)構(gòu)造函數(shù)CRectangle()不帶有參數(shù),CRectangle(double1,doublew)帶有2個(gè)參數(shù),在創(chuàng)建對(duì)象時(shí)會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù),但是參數(shù)必須匹配,第1個(gè)標(biāo)識(shí)下定義Rect2對(duì)象時(shí),有一個(gè)參數(shù),而類CRectangle()中并沒有重載一個(gè)參數(shù)的構(gòu)造函數(shù),編譯后出錯(cuò),因此第1標(biāo)識(shí)下應(yīng)改為“CRectangleRect2;”。(2)Rect3.GetArea()輸出的結(jié)果和Rect1.GetArea()輸出結(jié)果一致,因此對(duì)象Rect3和對(duì)象Rect1兩者具有相同的length和width值,除定義Rect3對(duì)象之外沒有改變Rect31的length和width值,因此Rect3成員變量的初始化是通過拷貝構(gòu)造函數(shù)類實(shí)現(xiàn)的,即用Rect1對(duì)象去初始化Rect3,因此第2個(gè)標(biāo)識(shí)下應(yīng)改為“CRectangleRect3(Rect1);”。(3)Rect2.GetArea()的輸出結(jié)果為0,說明Rect2的成員變量length和width值至少一個(gè)為0,而Set()函數(shù)必須有兩個(gè)參數(shù),這里Rect2.Set(0)參數(shù)不匹配,應(yīng)改為“Reet2.Set(0,0);”或者“Rect2.Set(0,5)”,兩個(gè)參數(shù)當(dāng)中至少一個(gè)為0即可。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼。補(bǔ)充函數(shù)convert(longs,long*str),使之從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次存放在數(shù)str中。例如,當(dāng)s中的數(shù)為:7654321時(shí),str中的數(shù)為:7531。注意:請(qǐng)勿改動(dòng)主函數(shù)。1#include<iostream.h>2voidconvert(longs,long*str)3{45}6voidmain()7{8longs,res;9cout<<’’Pleaseenters:’’<<end1;10cin>>s;11convert(s,&res);12cout<<’’Theresultis:’’<<res<<end1;13return;14}標(biāo)準(zhǔn)答案:1longs1=10;2*str=s%10;//先取個(gè)位數(shù)3while(s>0)4{5s=s/100;//每次除以100,6*str=s%10*s1+*str;//取除以100后的個(gè)位數(shù),str增加1位7s1=s1*10;8}知識(shí)點(diǎn)解析:函數(shù)convert(longs,long*str)的功能是從低位開始取出長整型變量S中奇數(shù)位上的數(shù),依次存放在str中,即取S的個(gè)位數(shù)、百位數(shù)、萬位數(shù)……,先取個(gè)位數(shù),然后每次取奇數(shù)位的數(shù)相當(dāng)于s每次除以100后的個(gè)位數(shù),因此可用循環(huán)來實(shí)現(xiàn)。(1)由審題分析可知,奇數(shù)位即為個(gè)位數(shù)、百位數(shù)、萬位數(shù)……,取個(gè)位數(shù)比較簡單,s%10便得到了個(gè)位數(shù)。獲取百位數(shù)可由s/100后,再和10取余得到,同樣萬位數(shù)可由s/10000,再和1(取余得到,從百位數(shù)開始后面的奇數(shù)位都是在上次的基礎(chǔ)上再除以100后再取余數(shù),因此可利用循環(huán)。(2)在循環(huán)外先取S的個(gè)位數(shù),然后進(jìn)入循環(huán),s=s/100,獲取除以100的個(gè)位數(shù)方法為s%10,這個(gè)數(shù)是*str的高一位,乘以它所在*str中的位置的權(quán)值,然后和以前的值相加便得到這次*str值,如此循環(huán),直到s為0為止。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)完成構(gòu)造函數(shù)的定義,使得數(shù)據(jù)成員變量filename和contex為空,內(nèi)容長度FileLength為0。請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)完成析構(gòu)函數(shù),對(duì)contex內(nèi)存的釋放。請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z句。(3)完成WriteFile()函數(shù),用來對(duì)contex內(nèi)容進(jìn)行設(shè)置填充內(nèi)容,如果以前有內(nèi)容,則刪除以前的內(nèi)容,重新填寫。請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z句。(4)完成CopyFile()函數(shù),完成將參數(shù)對(duì)象的contex的內(nèi)容拷貝到當(dāng)前的文件內(nèi)容中,請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z句。注意:除在指定位置添加語句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。1#include<iostream.h>2classMyFileClass3{4private:5charfilename[64];6char*contex;7intFileLength;8public:9MyFileClass()10{11//********1********1213contex=NULL;14FileLength=0;15}16~MyFileClass()17{18if(FileLength)19//********2********2021}22voidOpenFile(char*str,intlen)23{24for(inti=0;i<fen;i++)25{26filename[i]=str[i];27}28filename[fen]=0;29FileLength=0;30if(contex)31{32delete[]contex;33contex=NULL;34}35}36voidWriteFlie(char*str,intlen)37{38if(contex!=NULL)39//********3********4041contex=newchar[len+1];42for(inti=0;i<len;i++)43contex[i]=str[i];44contex[len]=0;45FileLength=len;46}47voidCopyFile(MyFileClass&file)48{49//********4********5051}52voiddisplay()53{54cout<<contex<<end1;55}56};57intmain()58{59MyFileClassfile1,file2;60file1.OpenFile(’’txt1’’,4);61file2.OpenFile(’’txt2’’,4);62file1.WriteFlie(’’hello!’’,6);63file2.CopyFile(filel);64file1.display();65file2.display();66return0;67}標(biāo)準(zhǔn)答案:(1)添加語句:filename[0]=0;或filename[0]=NULL;(2)添加語句:delete[]contex;(3)添加語句:deletecontex;(4)添加語句:WrlteFlle(fi1e.contex,flle.FileLength);知識(shí)點(diǎn)解析:程序當(dāng)中定義了類MyFileClass,包含3個(gè)成員變量,分別為filename、contex和FileLength,分別表示文件名、文件內(nèi)容和文件長度,類MyFileClass有多個(gè)成員函數(shù):構(gòu)造函數(shù)、析構(gòu)函數(shù)、OpenFile(char*str,intlen)、WriteFlie(char*str,intlen)、CopyFile(MyFileClass&file)和display(),OpenFile()用來給filename賦值,并清空contex內(nèi)容;WriteFile()函數(shù)用來對(duì)contex內(nèi)容進(jìn)行設(shè)置填充內(nèi)容;CopyFilefMyFileClass&fle)函數(shù)完成將參數(shù)file對(duì)象的contex內(nèi)容拷貝到當(dāng)前的文件內(nèi)容中;display()將contex內(nèi)容打印到屏幕上。(1)構(gòu)造函數(shù)MyFileClass()完成類成員變量的初始化,將數(shù)據(jù)成員變量filename和contex為空,內(nèi)容長度FileLength為0,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“filename[0]=0;”或“filename[0]=NULL;”。(2)析構(gòu)函數(shù)用來釋放一個(gè)對(duì)象,在對(duì)象刪除前,用它來做一些清理工作,WriteFlie()函數(shù)會(huì)申請(qǐng)內(nèi)存空間,因此在對(duì)象刪除的時(shí)候必須將這些內(nèi)存空間釋放,這個(gè)工作可以放在析構(gòu)函數(shù)中來處理,第2個(gè)標(biāo)識(shí)下是釋放由new申請(qǐng)的內(nèi)存空間,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“delete[]contex;”。(3)WriteFile()函數(shù)首先對(duì)contex內(nèi)容清空,第3個(gè)標(biāo)識(shí)下應(yīng)添加“deletecontex;”。(4)CopyFile(MyFileClass&file)函數(shù)完成將參數(shù)file對(duì)象的contex的內(nèi)容拷貝到當(dāng)前的文件內(nèi)容中,可直接調(diào)用WriteFlie()函數(shù),因此第4個(gè)標(biāo)識(shí)下應(yīng)添加“WriteFlie(file.contex,file.FileLength);”。國家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開考生文件夾下的解決方案文件proj1,程序中位于每個(gè)“//ERROR*******found*******”之后的一行語句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:Name:SmithAge:21ID:99999CourseNum:12Record:970注意:只修改每個(gè)“//ERROR*******found*******”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classStudentInfo{protected://ERROR*******found*******charName;intAge;intID;intCourseNum;floatRecord;public:StudentInfo(char*name,intAge,intID,intcourseNum|floatrecord);//ERROR*******found*******void~StudentInfo(){}floatAverageRecord(){returnRecord/CourseNum;)voidshow()const{cout<<”Name:”<<Name<<”Age:”<<Age<<”ID:”<<ID<<”CourseNum:”<<CourseNum<<”Record:”<<Record<<endl;}};//ERROR*******found*******StudentInfoStudentInfo(char*Name,intAge,intID,intCourseNum,floatRecord){Name=name;Age=age;this一>ID=ID;CourseNum=courseNum;Record=record;}intmain(){StudentInfoSt(”Smith”,21,99999,12,970);st.show();return0;}標(biāo)準(zhǔn)答案:(1)char*Name;(2)~StudentInfo(){}(3)StudentInfo::StudentInfo(char*name,intage,intID,intcourseNum,floatrecord)知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)動(dòng)態(tài)數(shù)組的掌握,由題目可知Name應(yīng)該指向一個(gè)動(dòng)態(tài)數(shù)組,而不是有效一個(gè)char型字符,因此要定義成char型指針。(2)主要考查考生對(duì)析構(gòu)函數(shù)的掌握,析構(gòu)函數(shù)不需要函數(shù)返回類型,應(yīng)把void去掉。(3)主要考查考生對(duì)構(gòu)造函數(shù)定義的掌握,構(gòu)造函數(shù)也要使用作用域符號(hào)’:.’。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開考生文件夾下的解決方案文件proj2,其中定義了vehicle類,并派生出motorcar類和bicycle類。然后以motorcar和bicycle作為基類,再派生出motorcycle類。要求將vehicle作為虛基類,避免二義性問題。請(qǐng)?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:801501001注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//*******found*******”。#include<iostream.h>classvehicle{private:intMaxSpeed;intWeight;public://*******found*******vehicle(intmaxspeed,intweight):________~vehicle()f};intgetMaxSpeed(){returnMaxSpeed;}intgetWeight(){returnWeight;}};//*******found*******classbicycle:________publicvehicle{private:intHeight;public:bicycle(intmaxspeed,intweight,intheight):vehicle(maxspeed,weight),Height(height){}intgetHeight(){returnHeight;};};//*******found*******clasSmotorcar:________publicvehicle{private:intSeatNum;public:motorcar(intmaxspeed,intweight,intseatnum):vehicle(maxspeed,weight),SeatNum(seatnum){)intgetSeatNum(){returnSeatNum;};};//*******found*******classmotorcycle:________{public:motorcycle(intmaxspeed,intweight,intheight):vehicle(maxspeed,weight),bicycle(maxspeed,weight,height),motorcar(maxspeed,weight,1){}};voidmain(){motorcyclea(80,150,100);cout<<a.getMaxSpeed()<<endl;cout<<a.getWeight()<<endl;cout<<a.getHeight()<<endl;cout<<a.getSeatNum()<<endl;}標(biāo)準(zhǔn)答案:(1)MaxSpeed(maxspeed),Weight(weight){}(2)virtual(3)virtual(4)publicbicycle,publicmotorcar知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,構(gòu)造函數(shù)使用初始化列表來給私有成員MaxSpeed和Weight初始化。(2)主要考查考生對(duì)派生類的掌握,題目要求將vehicle作為虛基類,避免二義性問題。因此在這里添加virtual使vehicle成為虛基類。(3)主要考查考生對(duì)派生類的掌握,題目要求以motorcar和bicycle作為基類,再派生出motorcycle類。在主函數(shù)中可以看到motorcycle類的a調(diào)用getHeight函數(shù)和getSeatNum函數(shù),由此可知這兩個(gè)基類都是公有繼承,因此得出語句:publicbicycle,publicmotorcar.三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開考生文件夾下的解決方案文件proj3,其中聲明的CDeepCopy是一個(gè)用于表示矩陣的類。請(qǐng)編寫這個(gè)類的賦值運(yùn)算符成員函數(shù)operator=,以實(shí)現(xiàn)深層復(fù)制。要求:補(bǔ)充編制的內(nèi)容寫在“//*******333*******”與“//*******666*******”之間。不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//CDeepCopy.h#include<iostream>#include<string>usingnamespacestd;classCDeepCopy{public:intn;//動(dòng)態(tài)數(shù)組的元素個(gè)數(shù)int*P;//動(dòng)態(tài)數(shù)組首地址CDeepCopy(int);~CDeepCopy()jCDeepCopy&operator。(constCDeepCopy&r);//賦值運(yùn)算符函數(shù)};voidwriteToFile(char*);//main.cpp#include”CDeepCopy.h”CDeepCopy::~CDeepCopy(){delete[]P;}CDeepCopy::CDeepCopy(intk){n=k;P=newint[n];}//構(gòu)造函數(shù)實(shí)現(xiàn)CDeepC0py&CDeepCopy::operator=(constCDeepCopy&r)//賦值運(yùn)算符函數(shù)實(shí)現(xiàn){//*******333*******//*******666*******}intmain(){CDeepCopya(2),d(3);a.p[0]=1;d.p[0]=666;//對(duì)象a,d數(shù)組元素的賦值{CDeepCopyb(3);a.p[0]=88;b=a;//調(diào)用賦值運(yùn)算符函數(shù)cout<<b.p[0];//顯示內(nèi)層局部對(duì)象的數(shù)組元素}cout<<d.p[0];//顯示d數(shù)組元素a.P[0]的值cout<<”dfadeaway;\n”;cout<<a.p[0];//顯示a數(shù)組元素a.p[0]的值writeToFile(””);return0;}標(biāo)準(zhǔn)答案:n=r.n;//把對(duì)象r字符長度賦值給ndelete[]p;//刪除動(dòng)態(tài)數(shù)組p=newint[n];//給動(dòng)態(tài)數(shù)組分配空間for(inti=0;i<n;i++)//遍歷對(duì)象r中的數(shù)組p[i]=r.p[i];//賦值return*this;//返回被賦值的對(duì)象知識(shí)點(diǎn)解析:本題考查CDeepCopy類,其中涉及動(dòng)態(tài)數(shù)組,構(gòu)造函數(shù),析構(gòu)函數(shù),運(yùn)算符重載。運(yùn)算符重載要先把類的定義弄清,其次要理解被重載的運(yùn)算符的含義。國家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開考生文件夾下的解決方案文件proj1,此工程包含一個(gè)源程序文件proj1.cpp。文件中將表示數(shù)組元素個(gè)數(shù)的常量Size定義為4,并用int類型對(duì)類模板進(jìn)行了實(shí)例化。文件中位于每個(gè)注釋“//ERROR***found****”之后的一行語句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:1234注意:模板參數(shù)名用T。只修改注釋“//ERROR********found********”的下一行語句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#includeusingnamespacestd;//將數(shù)組元素個(gè)數(shù)Size定義為4//ERROR********found********conStintsize;templateClassMyClass{public:Myclass(T*P){for(inti=0;i//ERROR********found********voidMyclass::Print(){for(inti=0;iobj{intArray);obj.Print();Cout<標(biāo)準(zhǔn)答案:(1)constintSize=4;(2)voidMyClass::Print()(3)MvClassobj(intArray);知識(shí)點(diǎn)解析:(1)主要考察考生對(duì)const變量的掌握,因?yàn)閏onst變量不能修改,所以在定義的同時(shí)必須初始化。(2)主要考查考生對(duì)模板類的成員函數(shù)定義的掌握,因?yàn)镸yClass類是模板類,所以在定義該函數(shù)時(shí)要加上模板標(biāo)識(shí)符“”,即語句voidMvClass::Print()(3)主要考查考生對(duì)模板類構(gòu)造函數(shù)的調(diào)用的理解,從上一條語句intintArray[Size]={1,2,3,4};中可以知道intArray為int型,因此定義obj時(shí)要使用,即MyClassobj(intArray):。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開考生文件夾下的解決方案文件proj2,此工程中包含一個(gè)程序文件main.cpp,其中有“部門”類Department和“職工”類Staff的定義,還有主函數(shù)main的定義。在主函數(shù)中定義了兩個(gè)“職工”對(duì)象,他們屬于同一部門。程序展示,當(dāng)該部門改換辦公室后,這兩個(gè)人的辦公室也同時(shí)得到改變。請(qǐng)?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:改換辦公室前:職工號(hào):0789姓名:張三部門:人事處辦公室:521職工號(hào):0513姓名:李四部門:人事處辦公室:521改換辦公室后:職工號(hào):0789姓名:張三部門:人事處辦公室:311職工號(hào):0513姓名:李四部門:人事處辦公室:311注意:只在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容。#includeusingnamespacestd;classDepartment{//“部門”類public:Department(constchar*name,constchar*Office){strcpy(this->name,name);//********found********}constchar*getName()const{returnname;}//返回部門名稱//********found********constchar*getOffice()const{____________}//返回辦公室房號(hào)voidchange()fficeTo(constchar*office){//改換為指定房號(hào)的另一個(gè)辦公室strcpy(this->Office,office);}private:charname[20];//部門名稱charoffice[20];//部門所在辦公室房號(hào)};classStaff{//“職工”類public://********found********Staff(constchar*myid,constchar*my_name,Department&mydept):____________{strcpy(this->staff_id,myid);strcpy(this->name,myname);}constchar*getID()const{returnstaffid;}constchar*getName()const{returnname;}DepartmentgetDepartment()const{returndept;}private:charstaffid[10];//職工號(hào)charname[20];//姓名Department&dept;/所在部門};voidshowStaff(Staff&Staff){cout<<"職工號(hào):"<標(biāo)準(zhǔn)答案:(1)strepy(this->office,office);(2)returnoffice;(3)dept(my_dept)(4)dept.changeOffieeTo("311");知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)strcpy函數(shù)的掌握情況,根據(jù)上一條語句:strepy(this->name,name);可知,這條語句復(fù)制的是office,即strcpy(this->office,office);(2)主要考查考生對(duì)成員函數(shù)的掌握情況,根據(jù)語句的注釋:返回辦公室房號(hào)可知,要填寫的是一條return語句。住私有成員里:charoffice[20];//部門所在辦公室房號(hào),表明office即為辦公室房號(hào)。因此卣接返回office即可。(3)主要考食考生對(duì)構(gòu)造函數(shù)的掌握情況,根據(jù)函數(shù)體:strcpy(this->staff_id,my_id);strepy(this->name,my_name);可知,只有dept沒有初始化,而空格前有字符“:”,這是成員列表初始化的標(biāo)識(shí)符,因此填寫dept(my_dept)即可。(4)主要考查考生對(duì)成員函數(shù)的調(diào)用的掌握情況,根據(jù)題目要求:人事處辦公室由521搬到311在Department類中有函數(shù)voidchangeOffieeTo(constchar*office)可以修改辦公室的房間號(hào),直接調(diào)用即可。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開考生文件夾下的解決方案文件proj3,本題創(chuàng)建一個(gè)小型字符串類,字符串長度不超過100。程序文件包括proj3.h、proj3.cpp、writeToFile.obj。補(bǔ)充完成暈載賦值運(yùn)算符函數(shù),完成深復(fù)制功能。屏幕上輸出的正確結(jié)果應(yīng)該是:Hello!Happynewyear!要求:補(bǔ)充編制的內(nèi)容寫在“//**********333**********”與“//**********666**********”兩行之間。不得修改程序的其他部分。注意:程序最后調(diào)用writeToFile函數(shù),使用另一組不同的測試數(shù)據(jù),將不同的運(yùn)行結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件。//proj3.h#include#includeusingnamespacestd;classMinistring{public:friendostream&operator<<(ostream&output,constMinis-tring&s)//重載流插入運(yùn)算符{output<>(istream&input,Ministring&s)//重載流提取運(yùn)算符{chartemp[100];//用于輸入的臨時(shí)數(shù)組temp[0]=’\0’;//初始為空字符串input>>setw(100)>>temp;intinLen=strlen(temp);//輸入字符串長度if(inLen!=0){s.length=inLen;//賦長度if(s.sPtr!=0)delete[]s.sPtr;//避免內(nèi)存泄漏s.sPtr=newchar[s.length+1];strcpy(S.SPtr,temp);//如果s不是空指針,則復(fù)制內(nèi)容}elses.sPtr[0]=’\0’;//如果s是空指針,則為空字符串returninput;}voidmodstring(constchar*string2)//更改字符串內(nèi)容{if(string2!=0)//如果string2不是空指針,則復(fù)制內(nèi)容{if(strlen(string2)!=length){length=strlen(string2);delete[]sPtr;sPtr=newchar[length+1];//分配內(nèi)存}strcpy(sPtr,string2);}elsesPtr[0]=’\0’;//如果string2是空指針,則為空字符串}Ministring&operator=(constMinistring&otherstring);Ministring(constchar*s=""):length((s!=0)?strlen(s):0)//構(gòu)造函數(shù){sPtr=0;if(length!=0)setstring(S);}~Ministring()//析構(gòu)函數(shù){delete[]sPtr;}private:intlength;//字符串長度char*sPtr;//指向字符串起始位置voidsetstring(constchar*string2)//輔助函數(shù){sPtr=newchar[strlen(string2)+1];//分配內(nèi)存if(string2!=0)strcpy(sPtr,string2);//如果string2不是空指針,則復(fù)制內(nèi)容elsesPtr[0]=’\0’;//如果string2是空指針,則為空字符串}};//proj3.cpp#include#includeusingnamespacestd;#include"proj3.h"Ministring&Ministring::operator=(constMinistring&otherstring){//重載賦值運(yùn)算符函數(shù)。提示:可以調(diào)用輔助函數(shù)setstring//*************333*************//*************666*************}intmain(){Ministringstrl("Hello!"),str2;voidwriteToFile(constchar*);str2=str1;//使用重載的賦值運(yùn)算符str2.modstring("Happynewyear!”);cout<標(biāo)準(zhǔn)答案:llength=otherstring.length;//把對(duì)象字符串otherstrinq的長度賦值給變量length2setstring(otherstring.sPtr);//調(diào)用函數(shù)setstring,實(shí)現(xiàn)給類變量sptr分配空間,以及逐個(gè)把對(duì)象other.string字符串的值復(fù)制到sptr中3return+this;//返回被賦值的對(duì)象知識(shí)點(diǎn)解析:主要考查考生對(duì)運(yùn)算符重載的掌握,題目要求重載賦值運(yùn)算符函數(shù)。要重載的運(yùn)算符是“=”,即賦值的意思。提示:町以調(diào)用輔助函數(shù)setstring。該函數(shù)的功能是復(fù)制形參的字符串到sPtr中,因此,首先復(fù)制Iength,其次通過函數(shù)setstring復(fù)制sPtr,最后按要求返回*this;。國家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開考生文件夾下的解決方案文件proj1,此工程中包含程序文件main.cpp,其中有ElectricFan(“電風(fēng)扇”)類和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR*******found*******”之后的一行語句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:品牌:清風(fēng)牌,電源:關(guān),風(fēng)速:0品牌:清風(fēng)牌,電源:開,風(fēng)速:3品牌:清風(fēng)牌,電源:關(guān),風(fēng)速:0注意:只修改每個(gè)“//ERROR*******found*******”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;clasSElectricFan{//“電扇”類char*brand;intintensity;//風(fēng)速:0一關(guān)機(jī),1一弱,2一中,3一強(qiáng)public:ElectricFan(constchar*the_brand):intensity(0){brand=newchar[strlen(thebrand)+1];strcpy(brand,the_rand);}~ElectricFan(){delete[]brand;}//ERROR*******found*******constchar}theBrand()const(return*brand;}//返回電扇品牌inttheIntensity()const(returnintensity;}//返回風(fēng)速boolisOn()const{returnintensity>0;}//返回電源開關(guān)狀態(tài)//ERROR*******found*******voidturnOff(){intensity=1;}//關(guān)風(fēng)扇voidsetIntensity(intinten){//開電扇并設(shè)置風(fēng)速//ERROR*******found*******if(intensity>=1&&intensity<=3)intensity=inten;}voidshow(){cout<<”品牌:”<<theBrand()<<”牌”<<”,電源:”<<(isOn()?”開”:”關(guān)”)<<”,風(fēng)速:”<<theIntensi.ty()<<endl;}};intmain(){ElectricFanfan(”清風(fēng)”);fan.show();fan.setIntensity(3);fan.show();fan.turnOff();fan.show();return0;}標(biāo)準(zhǔn)答案:(1)constchar*theBrand()const{returnbrand;}//返回電扇品牌(2)voidturnOff(){intensity=0;}//關(guān)電扇(3)if(inten>=1&&inten<=3)intensity=inten;知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)指針的掌握情況,因?yàn)閎rand是一個(gè)動(dòng)態(tài)指針,*brand表示字符串的首個(gè)字符,brand表示動(dòng)態(tài)數(shù)組,這里要返回動(dòng)態(tài)數(shù)組存儲(chǔ)的品牌名稱。(2)主要考查考生對(duì)成員函數(shù)的掌握情況,根據(jù)題目中類的定義中私有成員的定義:intintensity;//風(fēng)速:0-關(guān)機(jī),1-弱,2-中,3-強(qiáng),可知本函數(shù)要關(guān)電扇,因此在這里intensity=0;。(3)主要考查考生對(duì)成員函數(shù)的掌握,根據(jù)題目中函數(shù)的注釋:開電扇并設(shè)置風(fēng)速??芍猧f語句里要判斷的應(yīng)該是形參inten而不是intensity。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開考生文件夾下的解決方案文件proj2,該工程中包含一個(gè)程序文件main.cpp,其中有類AutoMobile(“汽車”)及其派生類Car(“小轎車”)、Truck(“卡車”)的定義,還有主函數(shù)main的定義。請(qǐng)?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:車牌號(hào):冀ABC1234品牌:ForLand類別:卡車當(dāng)前檔位:0最大載重量:12車牌號(hào):冀ABC1234品牌:ForLand類別:卡車當(dāng)前檔位:2最大載重量:12車牌號(hào):滬XYZ5678品牌:QQ類別:小轎車當(dāng)前檔位:0座位數(shù):5車牌號(hào):滬XYZ5678品牌:QQ類別:小轎車當(dāng)前檔位:-1座位數(shù):5注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//*******found*******”。#include<iostream>#include<iomanip>#include<cmath>usingnamespacestd;classAutoMobile{//“汽車”類char*brand;//汽車品牌char*number;//車牌號(hào)intspeed;//檔位:1、2、3、4、5,空檔:0。倒檔:-1public:AutoMobile(constchar*thebrand,constchar*thenumber):speed(0){brand=newchar[strlen(thebrand)+1];//*******found*******________________;//*******found*******________________;strcpy(number,thenumber);}~AutoMobile(){delete[]brand;delete[]number;}constchar*theBrand()const{returnbrand;}//返回品牌名稱constchar*theNumber()const{returnnumber;)//返回車牌號(hào)intcurrentSpeed()const{returnspeed;}//返回當(dāng)前檔位voidchangeGearTo(intthespeed){//換到指定檔位if(speed>=-1&&speed<=5)speed=the_speed;}virtualconstchar*category()const:0;//類別:卡車、小轎車等virtualvoidshow()const{cout<<”車牌號(hào):”<<theNumber()//*******found*******<<”品牌:”?!癬_______<<’’類別:”<<category()<<”當(dāng)前檔位:”<<currentSpeed();}};classCar:publicAutoMobile{intseats;//座位數(shù)public:Car(constchar*thebrand,constchar*thenumber,inttheseats):AutoMobile(thebrand,thenumber),seats(theseats){}intnumberOfSeat()const{returnseats;}//返回座位數(shù)constchar*category()const{return”小轎車”;}//返回汽車類別voidshow()const{AutoMobile::show();cout<<”座位數(shù):”<<number.OfSeat()<<endl;}};classTruck:publicAutoMobile{//“卡車”類intmaxload;//最大載重量public:Truck(constchar*thebrand,constchar*thenumber,intthemaxload):AutoMobile(thebrand,thenumber),maxload(themaxlead){}intmax1oad()const{returnmaxload;)//返回最大載重量//*******found*******constchar*category()________//返回汽車類別voidshow()const{AutoMobile::show();cout<<”最大載重量:·t<<max.Load()<<endl;}};intmain(){Trucktruck(”ForLand”,”冀ABCl234”,12);truck.show();truck.changeGearT0(2);truck.show();Carcar(”QQ”,”滬XYZ5678”,5);car.show();car.changeGearTo(-1);car.show();cout<<endl:return0;}標(biāo)準(zhǔn)答案:(1)strcpy(brand,the_brand);(2)number=newchar[strlen(the_number)+1](3)theBrand()(4)const{return"卡車";}知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)strcpy函數(shù)的掌握情況,在上一條語句程序給brand指針分配了空間,在這里要復(fù)制字符串thebrand,即strcpy(brand,the-brand);。(2)主要考查考生對(duì)動(dòng)態(tài)分配的掌握情況,參考brand指針的復(fù)制過程完成該語句,先給指針number分配空間,通過new來完成:number=newchar[strlen(thenumber)+1];。(3)主要考查考生對(duì)成員函數(shù)的掌握,由程序可知這里要輸出的是品牌,因此調(diào)用成員函數(shù)theBrand()來輸出品牌。(4)主要考查考生對(duì)純虛函數(shù)的掌握,根據(jù)純虛函數(shù)的定義:virtualconstchar*category()const=0;,可知在這里要填寫:const{retur"卡車";}。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開考生文件夾下的解決方案文件proj3,其中使用友元函數(shù)訪問類的私有數(shù)據(jù)成員,求出兩個(gè)數(shù)據(jù)成員的大于1的最小公因子。請(qǐng)編寫友員函數(shù)FriFun,使其輸出結(jié)果為:Commondenominatoris2要求:補(bǔ)充編制的內(nèi)容寫在“//*******333*******”與“//*******666*******”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//proj3.hclassFriFunClasS{inta,b;public:FriFunClass(inti,intj){a=i;b=j;}friendintFriFun(FriFunclassX);//友元函數(shù)};voidwriteTOFile(constchar*);//proj3.cpp#include<iostream>usingnamespacestd;#include”prj3.h”intFriFun(FriFunClasSX){//*******333*******//由于函數(shù)FriFun()是類FriFunClass的友元函數(shù),所以它可以直接訪問a和b//*******666*******}intmain(){FriFunClassn(10,20);if(FriFun(n))cout<<”Commondenominatoris”<<FriFun(n)<<”、n”;elsecout<<”NOcommondenominator.\n”:writeToFile(””);return0,}標(biāo)準(zhǔn)答案:intmin=x.a(chǎn)<x.b?x.a(chǎn):x.b;for(inti=2;i<=min;i++)if(x.a(chǎn)%i==0&&x.b%i==0)returni;retu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論