版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷30(共9套)(共26題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:1003732注意:錯(cuò)誤的語(yǔ)句在∥********error********的下面,修改該語(yǔ)句即可。#include∥********error********voidmain({∥********error********intm=0142;∥********error********intn=0X27;intq=32;cout<標(biāo)準(zhǔn)答案:(1)voidmsin()(2)intm=0144;(3)intn=0×25;或intn=0×25;知識(shí)點(diǎn)解析:主函數(shù)main()中,定義了三個(gè)變量,分別賦初值為八進(jìn)制、十六進(jìn)制和十進(jìn)制數(shù),并利用cout輸出。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成函數(shù)fun(char*data),此函數(shù)的功能是,找出字符串?dāng)?shù)組中最小的ASCⅡ值,如果有相同變量,則輸出最后一個(gè)所在的位置;如果字符串為空,則返回一1;或者不存在時(shí)也返回一1。注意:請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。計(jì)算數(shù)字如果第一個(gè)字母最小,則返回0。依次增加。#includeintfun(char*data){}Voidmsin(){charstr[1024];cout<<“請(qǐng)輸入一行英文字符串:\n”;cin.getline(str,1024);cout<<”最小的字母出現(xiàn)在距離頭部”<標(biāo)準(zhǔn)答案:intMinPos=0;//初始化最小值位置if(data==NULL)//判斷輸入字符串是否為空return一1;charMinData=data[0];//設(shè)置字符串第一個(gè)字符為最小值if(MinData==0)//判斷第一個(gè)字符是否存在return一1;for(inti=1;data[i]!=0;i++){if(data[i]<=MinData){MinData=data[i];//逐個(gè)判斷每個(gè)字母是否小于標(biāo)記字符MinPos=i;//最小值位置)}returnMinPos;知識(shí)點(diǎn)解析:(1)該程序功能是找出字符串?dāng)?shù)組中最小的ASCⅡ值。它的解題思路,用最小值變量標(biāo)記第一個(gè)待找字符,把所有待找字符和標(biāo)記字符逐個(gè)進(jìn)行比較,并標(biāo)記其當(dāng)前最小值及其所在位置,從而找出最小值。(2)從己給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)intfun(char*data)中的data參數(shù)為輸入的字符串?dāng)?shù)組,其中MinPos為最小值位置。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示人基本信息的類(lèi)CHumanlnfo,但類(lèi)CHumanln的定義并不完整。請(qǐng)按要求完成下列操作,將類(lèi)CHumanInfo的定義補(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)完成類(lèi)外CHumanlnfo成員函數(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){};CHumanlnfo(CHumanInfo&hi):height(h1.height),weight(h1.weight),bloodType(h1.bloodType){);intGetHeight(){returnheight;}intGetWeight(){returnwelght;}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)解析:類(lèi)CHumanlnfo有3個(gè)成員變量:用于表示血型的bloodType、表示身高的height和表體重的weight,成員函數(shù)GetHeight()返回height值,GetWeight()返回weight值,GetBloodType()返回bllodType值,Setlnfo(intht,intwt,charbt)可改變bloodType、height和weight值,成員函數(shù)Display()在屏幕上打印三個(gè)成員變量值。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用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********的下面。#includeintmain(){try{throw("error");}//********error********catch(chars){cout<標(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");”,其中的類(lèi)型為字符串。所以對(duì)應(yīng)的異常捕捉語(yǔ)句catch中應(yīng)該符合這個(gè)類(lèi)型,而程序中給出的語(yǔ)句“catch(chars)”是字符型的,所以第2個(gè)標(biāo)識(shí)下的語(yǔ)句修改為“catch(char*s)”。(2)第2個(gè)標(biāo)識(shí)前的異常拋出語(yǔ)句為“throw((int)0);”,其中的類(lèi)型為int。所以對(duì)應(yīng)的異常捕捉語(yǔ)句catch中應(yīng)該符合這個(gè)類(lèi)型,所以補(bǔ)充catch子句中的類(lèi)型,否則找不到匹配的catch塊,那么系統(tǒng)就會(huì)調(diào)用一個(gè)系統(tǒng)函數(shù),使程序終止運(yùn)行。即第1個(gè)標(biāo)識(shí)下的語(yǔ)句修改為“catch(inti)”。(3)如果在catch子句中沒(méi)有指定異常信息的類(lèi)型,那么就用刪節(jié)號(hào)“…”表示它可以捕捉任何類(lèi)型的異常信息,即修改為“catch(…)”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成以下函數(shù):intfactorial(intn):求出n的階乘,必須使用遞歸調(diào)用。如果n小于1則返回0。注意:不能修改函數(shù)的其他部分。#include#includeintfactorial(intn){}voidmain(){cout<標(biāo)準(zhǔn)答案:if(n<1){return0;}elseif(n==1){return1;}else{returnn*factorial(n-1);}知識(shí)點(diǎn)解析:(1)先考慮最簡(jiǎn)單的情況,n為1(或小于1)時(shí)返回值應(yīng)該為1,即factorial(1)=1,這是遞歸結(jié)束條件,如果n大于1則遞歸調(diào)用自己。(2)n>1時(shí),此時(shí)遞歸函數(shù)調(diào)用自己,即factorial(n)=n*factorial(n-1),此時(shí)的函數(shù)的返回值是n*factorial(n-1),如此來(lái)實(shí)現(xiàn)遞歸調(diào)用。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。完成以下功能:(1)完成構(gòu)造函數(shù),設(shè)置數(shù)組元素的個(gè)數(shù)為0,請(qǐng)?jiān)谧⑨專(zhuān)?*******1********之后添加語(yǔ)句。(2)完成函數(shù)AddMember(intn),如果參數(shù)n包含在類(lèi)的數(shù)據(jù)成員數(shù)組中,則返回0,否則把數(shù)據(jù)寫(xiě)入數(shù)組,然后返回1,請(qǐng)?jiān)谧⑨專(zhuān)?*******2********之后添加語(yǔ)句。(3)完成函數(shù)DelMember(intn),如果變量在數(shù)據(jù)中,則刪除該變量,并且返回1,如果不存在則返回0,請(qǐng)?jiān)谧⑨專(zhuān)?*******3********之后添加語(yǔ)句。(4)完成成員函數(shù)islnclude(intn)的定義,該函數(shù)檢查參數(shù)n是否在類(lèi)的數(shù)據(jù)成員數(shù)組elems中,如果在返回1,否則返回0。請(qǐng)?jiān)谧⑨專(zhuān)?*******4********之后添加語(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include#defineMAXLENGTH500classCArray{public:CArray(){//********1********}intAddMember(intn){for(inti=0;i標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:length=0;(2)將“if(Array[i]=n)”補(bǔ)充完整為:if(Array[i]==n)或if(n==Array[i])(3)將“if()”補(bǔ)充完整為:if(i知識(shí)點(diǎn)解析:(1)使length的初始化為0,因此添加語(yǔ)句:“l(fā)ength=0;”。(2)第2個(gè)標(biāo)識(shí)下是檢查n是否已經(jīng)在數(shù)組當(dāng)中存在,用if語(yǔ)句來(lái)判斷,即if(A盯ay[i]==n)或if(n==Atray[i])。(3)DelMember(intn)函數(shù)刪除指定的元素,由于元素在數(shù)組當(dāng)中的位置未知,因此必須先查找該元素的位置,在該函數(shù)的實(shí)現(xiàn)過(guò)程當(dāng)中通過(guò)for循環(huán)來(lái)完成,即第一個(gè)for循環(huán)查找n在數(shù)組中的位置。如果n存在于數(shù)組中,那么if中的break語(yǔ)句就會(huì)執(zhí)行跳出循環(huán),此時(shí)循環(huán)變量i的值會(huì)小于length,即通過(guò)判斷i的值是否小于length值可以知道n是否存在數(shù)組中,如果存在數(shù)組中接下來(lái)進(jìn)行刪除操作。即第3個(gè)標(biāo)識(shí)下應(yīng)改為if(i國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)1、請(qǐng)使用菜單命令或:直接用VC6打開(kāi)考生文件夾下的工程proj2,實(shí)現(xiàn)一個(gè)自定義的字符串類(lèi)MyString,重載取下標(biāo)操作符([]),使類(lèi)的對(duì)象能夠通過(guò)下標(biāo)取字符串的某位元素。如果下標(biāo)越界,則返回第一個(gè)元素的值。請(qǐng)?jiān)诔绦蛑校?*********found**********之下一行的橫線處填寫(xiě)適當(dāng)?shù)拇a,并刪除橫線,使程序完整、正確。輸出結(jié)果為:st1#include2#include3usingnamespacestd;4classMyString5{6private:7char*str;8public:9MyString(char*s)10{11//**********found**********12str=new______;13strcpy(str,s);14}15~MyString()16{17//**********found**********18______;19}20char&operator[](inti);21};22char&MyString::operator[](inti)23{24//**********found**********25if(_____)26returnstr[i];27//**********found**********28return______;29}30intmain()31{32MyStringtest("teststring");33cout<標(biāo)準(zhǔn)答案:(1)char[strlen(s)+1](2)delete[]str(3)i知識(shí)點(diǎn)解析:(1)主要考查構(gòu)造函數(shù)中成員變量的賦值、動(dòng)態(tài)內(nèi)存的分配和字符串長(zhǎng)度函數(shù)的使用,成員變量str是字符串指針,賦值時(shí)使用new[]分配內(nèi)存空間,為了存放字符串尾部的空字符,需要分配的容量為字符串str長(zhǎng)度+1,另外使用strlen獲取str的長(zhǎng)度。(2)主要考查考生對(duì)析構(gòu)函數(shù)定義的掌握和動(dòng)態(tài)內(nèi)存的釋放,MyString類(lèi)的成員str是在構(gòu)造函數(shù)中使用new[]分配的,所以在析構(gòu)函數(shù)中需要使用delete[]釋放。(3)主要考查考生對(duì)字符串庫(kù)函數(shù)調(diào)用的掌握,使用strlen獲取str的長(zhǎng)度,判斷下標(biāo)i是否越界。(4)如果下標(biāo)i越界,根據(jù)題意返回第一個(gè)元素str[0]。二、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用菜單命令或直接用VC6打開(kāi)考生文件夾下的工程proj3,其中聲明了Date類(lèi),它是一個(gè)用于表示日期的類(lèi)。成員函數(shù)isLessThan用以比較兩個(gè)日期的大?。寒?dāng)?shù)谝粋€(gè)日期早于第二個(gè)日期時(shí),返回true,否則返回false。請(qǐng)補(bǔ)充完整函數(shù)isLessThan。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此情況下程序的輸出應(yīng)該是:2007-06-21<2007-07-032007-06-21>=2007-06-192007-06-21<2010-01-01注意:只需在函數(shù)isLessThan的//********333********和//********666********之間填入若干語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。1#include"Date.h"2intmain(){3Datedatel(2007,6,21),date2(2007,7,3),date3(2007,6,19),date4(2010,1,1);4datel.show();5datel.isLessThan(date2)?cout<<"<¨:cout<<">=";6date2.show();cout<=";9date3.show();cout<=";12date4.show();cout<3#include4usingnamespacestd;5classDate{6intyear;7intmonth;8intday;9public:10Date(inty,intm,int.d):year11(y),month(m),day(d){}intgetYear()const{returnyear;}12intgetMonth()const{returnmonth;}13intgetDay()const{returnday;}14voidshow(ostream&os:cout);15booloperator=:(Datedate)const{16returnyear==date.year&&month17==date.month&&day==date.day;}18boolisLessThan(Datedate)const;19};20voidwriteToFile(constchar*path);標(biāo)準(zhǔn)答案:1boolless=false:2if(year知識(shí)點(diǎn)解析:主要考查考生對(duì)成員函數(shù)、關(guān)系運(yùn)算符和邏輯運(yùn)算符的掌握,成員函數(shù)isLessThan是將該對(duì)象本身與參數(shù)date進(jìn)行比較,返回是否小于的布爾值。為了比較isLessThan的調(diào)用對(duì)象與date的大小,需要依次比較year、month、day三個(gè)整數(shù),由于date的year、month、day都是私有成員,所以不能在islessThan中直接使用date的私有成員,而是應(yīng)該使用date的共有成員函數(shù)來(lái)返回這些值,再將本身的成員與返回值比較,同時(shí),為了比較時(shí)間大小,應(yīng)該首先將year進(jìn)行比較,接著是month,最后是day,并將比較結(jié)果暫存布爾變量less中,最后返回。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:m=-10n=-10p=0q=-10z=A注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#include<iostream.h>voidmain(){doublem=10;floatn=10;boolp=1;intq=10;charz=’a’;m=-m;//******error******n=~n;//******error******p=-p;//******error******q=~q;z=z-32;cout<<"m="<<m<<endl;cout<<"n="<<n<<endl;cout<<"p="<<p<<endl;cout<<"q="<<q<<endl;cout<<"z="<<z<<endl;return;}標(biāo)準(zhǔn)答案:(1)n=-n;(2)p=!p;(3)q=-q;知識(shí)點(diǎ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”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。程序的功能是尋找1~500以?xún)?nèi)的親和數(shù)并顯示出來(lái),函數(shù)amicableNum(intm,intn)判定兩個(gè)數(shù)是否是親和數(shù)。親和數(shù)的定義為:兩個(gè)數(shù)m和n,如果n的所有因子之和(因子除掉自身)等于m,且m的所有因子等于n,則m、n是互為親和數(shù)。注意:不能修改程序的其他部分,只能補(bǔ)充amicableNum(intm,intn)函數(shù)。#include<iostream.h>intamicableNum(intn){intsum=0;for(inti=1;i<n;i++){if(n%i==0){sum+=i;}}returnsum;}boolamicableNum(intm,intn){}voidmain(){cout<<"1~500以?xún)?nèi)的親和數(shù)有:"<<endl;for(inti=1;i<500;i++){for(intj=i+1;j<500;j++){if(i!=j){if(amicableNum(i,j)==1){cout<<i<<’’<<j<<endl;}}}}return;}標(biāo)準(zhǔn)答案:if(amicableNUm(m)==n&&amicableNum(n)==m)return1;return0;知識(shí)點(diǎn)解析:(1)程序中定義了兩個(gè)amicableNum()函數(shù),由于參數(shù)個(gè)數(shù)不同重載了amicableNum()函數(shù),函數(shù)amicableNum(intn)返回n的因子和,而函數(shù)amicableNum(intm,intn)則是判斷m和n是不是親和數(shù),兩個(gè)函數(shù)功能并不相同。(2)在amicableNum(intm,intn)函數(shù)中,可調(diào)用amicableNum(intn)函數(shù)求m和n的因子和,然后比較兩個(gè)因子和,如果兩個(gè)因子和相同則返回真,否則返回假。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示矩形的CRect類(lèi),但類(lèi)CRect的定義并不完整。請(qǐng)按要求完成下列操作,將類(lèi)CRect的定義補(bǔ)充完成。(1)定義私有數(shù)據(jù)成員lefiPoint、topPoint、rightPoint、bottomPoint,分別用于表示矩形左上角及右下角的點(diǎn)的坐標(biāo),它們都是double型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨專(zhuān)?*******1********之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成默認(rèn)構(gòu)造函數(shù)CRect的定義,指定缺省實(shí)參為0,都是double型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨專(zhuān)?*******2********之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)定義函數(shù)體為空的析構(gòu)函數(shù)。請(qǐng)?jiān)谧⑨專(zhuān)?*******3********之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)在main()函數(shù)中定義CRect類(lèi)的實(shí)例rect2,并把rectl的值賦給rect2。請(qǐng)?jiān)谧⑨專(zhuān)?*******4********之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include<iostream.h>classCRect{private://********1********public://********2********//********3********voidSetPoints(double,double,double,double);voidSetLeftPoint(doublem){leftPoint=m;}voidSetRightpoint(doublem){rightPoint=m;}voidSetToppoint(doublem){topPoint=m;}voidSetBottomPoint(doublem){bottomPoint=m;}voidDisplay();};CRect::CRect(double1,doublet,doubler,doubleb){leftPoint=1;topPoint=t;rightPoint=r;bottomPoint=b;}voidCRect::SetPoints(double1,doublet,doubler,doubleb){leftPoint=1;topPoint=t;rightPoint=r;bottomPoint=b;}voidCRect::Display(){cout<<"left-toppointis("<<leftPoint<<","<<topPoint<<")"<<’\n’;cout<<"right-bottompointis("<<rightPoint<<","<<bottomPoint(<")"<<’\n’;}voidmain(){CRectrect0;rect0.Display();rect0.SetPoints(20,20.6,30,40);rect0.Display();CRectrectl(0,0,150,150);rectl.SetTopPoint(10.5);rectl.SetLeftPoint(10.5);//********4********rect2.Display();}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:doubleleftPoint,topPoint,rightpoint,bottomPoint;(2)添加語(yǔ)句:CRect(doubleleftPoint=0,doubletopPoint=0,doublerightPoint=0,doublebottomPoint=0);(3)添加語(yǔ)句:~CRect(){};(4)添加語(yǔ)句:CRectrect2(rect1);知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下完成私有數(shù)據(jù)成員lefiPoint、topPoint、rightPoint、bottomPoint的定義,均為double型的變量,故第1個(gè)標(biāo)識(shí)下應(yīng)添加“doubleleftPoint,topPoint,rightPoint,bottomPoint;”。(2)構(gòu)造函數(shù)完成成員變量的初始化,類(lèi)CRect的默認(rèn)構(gòu)造函數(shù)并初始化double型私有數(shù)據(jù)成員leftPoint、topPoint、rightPoint、bottomPoint為0,故第2個(gè)標(biāo)識(shí)下應(yīng)添加“CRect(doublelettPoint=0,doubletopPoint=0,doublerightPoint=0,doublebottomPoint=0);”。(3)析構(gòu)函數(shù)名和類(lèi)名一致,并在前面加“~”以和構(gòu)造函數(shù)區(qū)別,該析構(gòu)函數(shù)體為空,故第3個(gè)標(biāo)識(shí)下應(yīng)添加“~CRect(){};”,雖然該函數(shù)體為空,但是“{}”必須保留。(4)主函數(shù)中類(lèi)CRect的對(duì)象rect2是通過(guò)復(fù)制構(gòu)造函數(shù)將rect1的值賦值給它實(shí)現(xiàn)初始化的,而rect1的初始化直接調(diào)用自定義構(gòu)造函數(shù),第4個(gè)標(biāo)識(shí)下應(yīng)添加“CRectrect2(rect1);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:sizeof(str1)=5sizeof(str2)=10sizeoffstr3)=1注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。(1)不能刪除assert()語(yǔ)句;(2)只能修改后面的數(shù)字。提示:assert()函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。#include#includeVoidmain(){char*str1="abc";//********error********assert(sizeof(str1)==3);cout<<"sizeof(str1)=5"<標(biāo)準(zhǔn)答案:(1)assert(sizeof(str1)==4);(2)assert(Sizeof(str2)==10);(3)assert(Sizeof(str3)==1);知識(shí)點(diǎn)解析:(1)assert()函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert()函數(shù)就要為真,才不會(huì)產(chǎn)生中斷異常?!癮ssen(sizeof(str1)==3);”語(yǔ)句中“sizeof(str1)==3”為假,這個(gè)會(huì)使程序產(chǎn)生異常,不能正常執(zhí)行。因?yàn)閟tr1的值為abc但是它還有一個(gè)尾符,所以它的長(zhǎng)度應(yīng)該是4,而不是3,所以第1個(gè)標(biāo)識(shí)下修改為“assert(sizeof(str1)==4);”。(2)同(1),str2[10]說(shuō)明,str2的空間為10,第2個(gè)標(biāo)識(shí)下修改為“assert(sizeof(str2)==10);”。(3)同(1),charstr3=23;語(yǔ)句說(shuō)明23是字符,占空間為1,所以修改為“assert(sizeof(str3)==1);”。二、簡(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#defimeMAXLEN1024boolIsPalindromes(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ì)稱(chēng)位置的元素是否相同,比如第一個(gè)元素和最后一個(gè)元素,第二個(gè)元素和倒數(shù)第二個(gè)元素,如此比較下去直到到了最中間的元素為止。(3)可以利用循環(huán)來(lái)比較是否對(duì)稱(chēng),設(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,其中定義了用于表示雇員的Employee類(lèi),但類(lèi)Employee的定義并不完整。請(qǐng)按要求完成下列操作,將類(lèi)CEmployee的定義補(bǔ)充完成。(1)定義私有數(shù)據(jù)成員name、street、city、zipcode和age分別用于表示姓名、街道、城市、郵編、年齡,除年齡是整型外其余都是char型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨專(zhuān)?*******1********之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成默認(rèn)構(gòu)造函數(shù)CEmployee的定義,使其把參數(shù)傳遞給私有數(shù)據(jù)成員name、street、city、zipcode和age。請(qǐng)?jiān)谧⑨專(zhuān)?*******2********之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成成員函數(shù)alterName(char*newName)的定義。請(qǐng)?jiān)谧⑨專(zhuān)?*******3********之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成成員函數(shù)IsEqual(char*ename)的定義,實(shí)現(xiàn)當(dāng)name相等時(shí)返回真,否則為假的功能,請(qǐng)?jiān)谧⑨專(zhuān)?*******4********之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include#include#defiReMAXLEN20classCEmployee{private://********1********intage;public:CEmployee(char*newName,char*newstreet,char*newCt,char*newZp,intnewAge);voidalterName(char*newName);Voiddisplay();boolIsEqual(char*ename);};CEmployee::CEmployee(char*newName,char*newstreet,char*newCt,char*newZp,intnewAge){//********2********age=newAge;}voidCEmployee::alterName(char*newName){//********3********}boolCEmployee::IsEqual(char*ename){//********4********}voidCEmployee::display(){cout<<name<<""<<street<<"";cout<<city<<""<<zipcode<<""<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:charname[MAXLEN],street[MAXLEN],city[MAXLEN],Zipcode[MAXLEN];(2)添加語(yǔ)句:strcpy(name,newName);strcpy(street,newstreet);strcpy(city,newCt);strcpy(zipcode,newZp);(3)添加語(yǔ)句:strcpy(name,newName);(4)添加語(yǔ)句:returnstrcmp(name,ename)==0;知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下要求補(bǔ)充類(lèi)CEmployee的私有數(shù)據(jù)成員name、street、city、zipcode和age的定義,分別用于表示姓名、街道、城市、郵編、年齡,除年齡是整型外其余都是char型的數(shù)據(jù),由主函數(shù)內(nèi)的對(duì)象數(shù)組可知,name、street、city、zipcode均為字符數(shù)組,故第1個(gè)標(biāo)識(shí)下應(yīng)添加“charname[MAXLEN],street[MAXLEN],city[MAXLEN],zipcode[MAXLEN];”。(2)構(gòu)造函數(shù)完成成員變量的初始化,這里需要給name、street、city、zipcode賦初值,可利用字符串拷貝函數(shù)將參數(shù)字符串拷貝到成員變量中,第2個(gè)標(biāo)識(shí)下應(yīng)添加“strcpy(name,newName);strcpy(street,newstreet);strcpy(city,newCt);strcpy(zipcode,newZp);”。(3)函數(shù)alterName(char*newName)是改變成員變量name的值,即將參數(shù)拷貝給name,可利用字符串拷貝函數(shù)strcpy()完成拷貝任務(wù),故第3個(gè)標(biāo)識(shí)下應(yīng)添加“strcpy(name,newName);”。(4)IsEqual(char*ename)~數(shù)是比較name成員變量和參數(shù)newName是否相同,可使用字符串比較函數(shù)strcmp0,第4個(gè)標(biāo)識(shí)下應(yīng)添加“returnstrcmp(name,ename)==0;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共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;intmain(){doublenumber1=4.8,number2=93.6,number3=0.9;//******error******Droduct=number1*number2*number3;//******error******cout<<"number1="<標(biāo)準(zhǔn)答案:(1)doubleproduct=number1*number2*number3;(2)cout<<"number1:"<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分的程序。函數(shù)func(intA[NUM],intn)實(shí)現(xiàn)的功能是將數(shù)組的內(nèi)容進(jìn)行一次重新排序。排序的方法是:給定11,則下標(biāo)為i的數(shù)字與下標(biāo)為n-i的數(shù)字交換。從0開(kāi)始,交換N/2次,則最后的內(nèi)容為排序后的結(jié)果。如果:A[8]={1,2,3,4,5,6,7,8},n=6,則結(jié)果:A[8]={7,6,5,4,3,2,1,8}。注意:不能修改其他代碼。#include#defineNUM8voidfunc(intA[NUM],intn){}intmain(){intA[NUM]={1,2,3,4,5,6,7,8);func(A,6);for(inti=0;i標(biāo)準(zhǔn)答案:for(inti=0;i知識(shí)點(diǎn)解析:(1)用循環(huán)來(lái)實(shí)現(xiàn)該過(guò)程,題目要求從0開(kāi)始,交換N/2次,因此循環(huán)變量i的范圍從0變化到N/2。(2)下標(biāo)為0的元素與下標(biāo)為n的元素交換,下標(biāo)為1的元素與下標(biāo)為n-1的元素交換,依此類(lèi)推,在循環(huán)體內(nèi),用一個(gè)臨時(shí)變量記錄第一個(gè)元素,然后將第二個(gè)元素賦值給第一個(gè)元素,臨時(shí)變量值賦給第二個(gè)元素,如此完成兩個(gè)元素的交換。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。完成以下功能:(1)聲明類(lèi)objA1,請(qǐng)?jiān)谧⑨專(zhuān)?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)為類(lèi)objA0增加友元函數(shù)func(),請(qǐng)?jiān)谧⑨專(zhuān)?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)為類(lèi)objA1增加友元函數(shù)func(),請(qǐng)?jiān)谧⑨專(zhuān)?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)函數(shù)func()返回objA1對(duì)象中的變量和objA0的靜態(tài)變量的乘積,請(qǐng)?jiān)谧⑨專(zhuān)?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。#include//********1********classobjA0{private:staticintm_A0;//********2********};intobjA0::m_A0=10;classobjA1{private:intm_A1;//********3********public:objA1(inti){m_A1=i;}};intfunc(objA1&obj){//********4********}intmain(){objA1obj0(10);cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:classobjA1;(2)添加語(yǔ)句:friendintfunc(objA1&obj);(3)添加語(yǔ)句:friendintfunc(objA1&obj);(4)添加語(yǔ)句:returnobj.m_A1*objA0::m__A0;知識(shí)點(diǎn)解析:(1)類(lèi)的聲明格式為:“class<類(lèi)名>;”,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“classobjA1;”。(2)按照友元的定義格式,友元函數(shù)是在類(lèi)聲明中由關(guān)鍵字friend修飾的非成員函數(shù),func函數(shù)在類(lèi)外部給出了具體的實(shí)現(xiàn)形式,即“intfunc(objA1&obj)”,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“friendintfunc(objA1&obj);”,這里參數(shù)是obiA1類(lèi)對(duì)象obj。(3)第3個(gè)標(biāo)識(shí)下和題目2要求一樣,均是聲明友元函數(shù),因此第2標(biāo)識(shí)下應(yīng)添加“friendintfunc(objA1&obj);”。(4)通過(guò)參數(shù)obj對(duì)象可以直接訪問(wèn)obj.m_A1,objA0的靜態(tài)變量m_A0是所有對(duì)象的共享成員,其訪問(wèn)形式為:objA0::m_A0,因此第4個(gè)標(biāo)識(shí)下應(yīng)添加“returnobj.m_A1*objA0::m_A0;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為:Number=8注意:錯(cuò)誤的語(yǔ)句在//********error********的下面,修改該語(yǔ)句即可。#includeclassCMyClass{public://********error********void&Get(){return&Number;}VoidSet(intm){Number=m;}voiddisplay(){cout<<"Number="<標(biāo)準(zhǔn)答案:(1)void*Get()(2)添加語(yǔ)句:CMyClasst;(3)P=(int*)t.Get();知識(shí)點(diǎn)解析:(1)Get()的返回的是“return&Number;”,即返回Number的地址,主函數(shù)中P為整型指針,但是“P=t.Get();”有錯(cuò)誤,因?yàn)镚et()函數(shù)返回的不是整型指針,而應(yīng)該是空指針(void),空指針可強(qiáng)制類(lèi)型轉(zhuǎn)換成其他類(lèi)型的指針,第1個(gè)標(biāo)識(shí)下應(yīng)改為“void*Get()”。(2)由于Get()函數(shù)返回空指針(void),要使P指向Get()函數(shù)的返回值,必須做強(qiáng)制類(lèi)型轉(zhuǎn)化,即第3個(gè)標(biāo)識(shí)下應(yīng)改為“P=(int*)t.Get():”。(3)變量t可以使用Get()函數(shù),說(shuō)明t為CMyClass類(lèi)對(duì)象。即第2個(gè)標(biāo)識(shí)下應(yīng)添加對(duì)象定義,故第2個(gè)標(biāo)識(shí)下添加“CMyclasst;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生牛文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼。函數(shù)num(char*str)實(shí)現(xiàn)返回字符串中非數(shù)字的個(gè)數(shù)。例如:abc123abc45返回輸出:6將函數(shù)num()%b充完整。注意:請(qǐng)勿改動(dòng)主函數(shù)。#includeintnum(char*str){}intmain(){charstr[1024];cout<<"pleaseinputastring:"<標(biāo)準(zhǔn)答案:intnlamber=0:for(inti=0;str[i]!=0;i++)if(str[i]>’9’||str[i]<’0’)//非數(shù)字字符number++;returnnumber;知識(shí)點(diǎn)解析:(1)利用循環(huán)搜索數(shù)組str中的元素,循環(huán)變量從0開(kāi)始,直到str[i]=0(到了字符數(shù)組的尾),不斷地讀取str中讀取元素。(2)每讀到一個(gè)元素判斷是否是非數(shù)字字符,即滿足條件“str[i]>’9’‖str[i]<’0’”的字符為非數(shù)字字符,非數(shù)字字符個(gè)數(shù)加1,循環(huán)結(jié)束就得到了非數(shù)字字符的個(gè)數(shù)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,這個(gè)程序完成輸出到屏幕一些特定的信息,但工程有錯(cuò)誤或者不完整,請(qǐng)完成以下功能:(1)初始化mNurn2的值為i,請(qǐng)?jiān)谧⑨專(zhuān)?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)補(bǔ)充全局函數(shù)fun()使之能夠調(diào)用類(lèi)TestClass的成員變量,請(qǐng)?jiān)谧⑨專(zhuān)?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)初始化靜態(tài)變量,請(qǐng)?jiān)谧⑨專(zhuān)?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)修改注釋?zhuān)?*******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)容。#includeClassTestClass{public://********1********TestClass(inti,intj){mNum1=i;mNum3+=i;}voidPrint(){cout<<"mNum1="<標(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ù)“constintmNum2;”語(yǔ)句知道m(xù)Num2為類(lèi)TestClass中的私有數(shù)據(jù),另外,C++定義構(gòu)造函數(shù)的初始化數(shù)據(jù)成員的方法中可以在原有函數(shù)末尾加一個(gè)冒號(hào),然后列出參數(shù)的初始化表實(shí)現(xiàn),即“TestClass(inti,intj):rnNum2(j)”。(2)在C++中,如果在本類(lèi)以外的其他地方定義了一個(gè)函數(shù),在類(lèi)體中是用friend對(duì)該函數(shù)進(jìn)行聲明的,此函數(shù)稱(chēng)為本類(lèi)的友元函數(shù),并且能夠調(diào)用本類(lèi)中的成員變量。程序中fun()在類(lèi)TestClass以外的地方定義的,為了實(shí)現(xiàn)其對(duì)類(lèi)TestClass中成員變量的調(diào)用,在類(lèi)TestClass中補(bǔ)全“friendvoidfun();”,即聲明fun()為類(lèi)TestClass的友元函數(shù)。(3)在C++中,初始化類(lèi)中數(shù)據(jù)成員的格式可以是“<類(lèi)型>類(lèi)名class::參數(shù)=”,其中<類(lèi)型>為要初始化參數(shù)的類(lèi)型,“::”為作用域符號(hào),說(shuō)明參數(shù)是class中的參數(shù),所以這里補(bǔ)全“intTestClass::mNum3=0;”。(4)函數(shù)fun()中“Num.Add();”語(yǔ)句應(yīng)該是調(diào)用類(lèi)“TestClass”中的成員函數(shù)“voidAdd(inti)”。其定義中存在參數(shù)inti,所以注釋下修改的語(yǔ)句缺少參數(shù)。主函數(shù)首先調(diào)用“Num.Print();”,即實(shí)現(xiàn)題目中輸出的前三條語(yǔ)句,而“funn();”語(yǔ)句實(shí)現(xiàn)后面三條語(yǔ)句的輸出,即“mNum3=7”才是調(diào)用Num.Add的輸出結(jié)果,即“mNum3+=i:”的計(jì)算結(jié)果?!癟estClassNum(1,2);”中將i的值初始化為1,“mNum3”的值在上一次“Num.Print();”調(diào)用中為1,如果計(jì)算結(jié)果為7,那么Add(inti)中i的初始化值為5,即“Num.Add(5);”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:CTest注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。1#include2voidmain()3{4//********error********5charc="c";6cout<標(biāo)準(zhǔn)答案:(1)charc=’c’;(2)intb=1024;(3)b+=1024;知識(shí)點(diǎn)解析:本題的功能是輸出字符c和字符串Test。因?yàn)楸绢}程序中不存在復(fù)雜的結(jié)構(gòu),解題思路,從已定源程序的main主函數(shù)依次處理錯(cuò)誤提示下的語(yǔ)句即可。[解題思路](1)打開(kāi)modil.cpp,調(diào)試程序,顯示錯(cuò)誤提示為第一標(biāo)識(shí)下“odi1.cpp(5):errorC2440:’initializing’:cannotconvertfrom’char[2]’tto’char’”。變量c的類(lèi)型為字符型,字符型值應(yīng)該是用單引號(hào),雙引號(hào)是字符串型。所以這里修改為“charc=’c’;”。(2)根據(jù)第3個(gè)標(biāo)識(shí)下的語(yǔ)句知道,b的值加上1024,然后判斷b的值是否為2048,所以這里b的類(lèi)型應(yīng)該是整型,而不是字符型,所以修改為““int=1024;”。(3)顯示第3個(gè)標(biāo)識(shí)下的語(yǔ)句“b+=1024;”的錯(cuò)誤提示。modil.cpp(10):errorC2018:unknowncharacter’0xa3’,因?yàn)檎Z(yǔ)句中的“;”為中文輸入法下的輸入,并不是英文下的“:”,所以修改為“b+=1024;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成函數(shù)fun(char*s),該函數(shù)完成以下功能:(1)把S中的大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母,把其中的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母。并且在函數(shù)中調(diào)用寫(xiě)函數(shù)WriteFile()將結(jié)果輸出到modi2.txt文件中。例如:s="helloTEST",則結(jié)果為:s="HELLOtest"(2)完成函數(shù)WriteFile(char*s),把字符串輸入文件中。提示:打開(kāi)文件使用的第二參數(shù)為ios_base::binary|ios_base::app。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。1#include2#include3#include4USingnamespacestd;5voidWriteFile(char*S)6{78}9voidfun(char*S)10{1112}13VoidClearFile()14{15ofstreamoutl;16outl.open("modi2.txt");17outl.Close();18}19intmein()20{21ClearFile();22chars[1024];23cout<<"pleaseinputastring:"<標(biāo)準(zhǔn)答案:(1)voidWriteFile(char*S)中的命令語(yǔ)句:1ofStreamoutl;2outl.open("modi2.txt",ios_base::binaryIios—base::app);//打開(kāi)文件modi23outl<=’A’&&s[i]<=’Z’)//如果是大寫(xiě)字符,轉(zhuǎn)換為小寫(xiě)字符4{5S[i]=s[i]-’A’+’a’;//-s[i]-’A’+’a’等于字符s[i]+32’6}7Elseif(s[i]>=’a’&&s[i]<=’z’)//如果是小寫(xiě)字符,轉(zhuǎn)換為大寫(xiě)字符8{9S[i]=S[i]-’a’+’A’;//S[i]-’a’+’A’’等于字符S[i]-3210}11}12WriteFile(S);知識(shí)點(diǎn)解析:(1)本題要求實(shí)現(xiàn)兩個(gè)函數(shù)的功能,其中WriteFile(char*s)實(shí)現(xiàn)把字符串輸入到文件中;fun(char*s)函數(shù)實(shí)現(xiàn)大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母,把其中的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母。其中大小寫(xiě)字母之間的ASCII碼差為32。(2)從已給部分源程序的main主函數(shù)開(kāi)始入手,首先實(shí)現(xiàn)WriteFile函數(shù),然后再實(shí)現(xiàn)fun函數(shù),并在其中調(diào)用WriteFile函數(shù)。[解題思路](1)在WriteFile(char*s)函數(shù)中,利用標(biāo)準(zhǔn)流ofstream實(shí)現(xiàn)字符串寫(xiě)入文件modi2.txt。(2)在fun函數(shù)中,利用for循環(huán)逐個(gè)判斷字符是大寫(xiě)還是小寫(xiě)。(3)如果是大寫(xiě),那么加上32實(shí)現(xiàn)大寫(xiě)轉(zhuǎn)換為小寫(xiě)。否則,就減去32,實(shí)現(xiàn)小寫(xiě)到大寫(xiě)的轉(zhuǎn)換。最后調(diào)用前面實(shí)現(xiàn)的WriteFile函數(shù),將字符串寫(xiě)入文件。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。學(xué)校教務(wù)處要為任課老師開(kāi)發(fā)一個(gè)學(xué)生管理系統(tǒng),需求如下:(1)學(xué)生的信息是要受到嚴(yán)密保護(hù)和限制的,包括姓名、五個(gè)英文字符的學(xué)號(hào),以及精確到小數(shù)點(diǎn)后一位的一科成績(jī),只有任課老師可以修改,如果學(xué)生升學(xué)了,比如由本科升到研究生,原來(lái)的信息還有效,而只需添加研究生的必要信息,不過(guò)現(xiàn)在不必馬上實(shí)現(xiàn),但應(yīng)當(dāng)有所考慮。(2)學(xué)生的所有信息可以查看,但也只有學(xué)生自己才有這個(gè)權(quán)利。(3)學(xué)生的信息可以從文件中讀取來(lái)構(gòu)造信息庫(kù),需要把信息輸出到屏幕以便核實(shí),但這需要任課老師來(lái)完成。(4)老師能提供所教學(xué)生的完整信息列表,同時(shí)可按成績(jī)高低排序。(5)為了便于學(xué)校評(píng)定獎(jiǎng)學(xué)金,需要單獨(dú)查找成績(jī)最高的同學(xué)(一般不采用把成績(jī)單全部排列后來(lái)選取,可能這比較耗費(fèi)時(shí)間,雖然要求不太合理,但要按用戶(hù)的需求操作,同時(shí)需要指出的是,如果成績(jī)最高者有數(shù)名,需要一一列出)。(6)由于學(xué)校的機(jī)器比較老,內(nèi)存嚴(yán)重不足,每個(gè)老師帶的學(xué)生數(shù)不一樣,但也不會(huì)超過(guò)50人。以上功能的程序框架已經(jīng)形成,考生需要按照需求來(lái)逐個(gè)實(shí)現(xiàn)。(1)請(qǐng)?jiān)谧⑨專(zhuān)?*******1********之后添加適當(dāng)?shù)恼Z(yǔ)句,以便實(shí)現(xiàn)功能需求(1)。(2)請(qǐng)?jiān)谧⑨專(zhuān)?*******2********處添加適當(dāng)?shù)恼Z(yǔ)句,成績(jī)單排序功能。(3)請(qǐng)?jiān)谧⑨專(zhuān)?*******3********處實(shí)現(xiàn)查找成績(jī)最高學(xué)生名單。無(wú)需修改main()主函數(shù),當(dāng)?shù)玫较旅娴慕Y(jié)果,該系統(tǒng)可能被采用。輸入的學(xué)生信息:姓名學(xué)號(hào)成績(jī)周華000178.5李強(qiáng)000298劉星000389賀蘭000478周紅000576.5趙邦000685高俊000798排序后的學(xué)生信息:姓名學(xué)號(hào)成績(jī)李強(qiáng)000298高俊000798劉星000389趙邦000685周華000178.5賀蘭000478周紅000576.5查詢(xún)成績(jī)最高的學(xué)生信息:高俊000798李強(qiáng)000298注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。1#include2#5nc]11de3#include4#defineNMAX505C1assTeacher;6C1assStudent7{8public:9Student(char*name="未知",char*number="00000",doublemark=0.0)10{.11intlen=strlen(name);12mname=newchar[1en+1];13strcpy(m—name,name);14strcpy(m_number,number);15mmark=mark;16}17~Student()18{19delete[]mname;20}21voidDisplayMsg()22{23cout<>name;63in>>number;64in>>mark;65m_count++;66m_pstu[i]=newStudent(name,number,mark);67cout<m-mark>m_pstu[index]->m_mark)79index=j;80}81//********2********82if()83{84Student*ps=m_pStu[i];85m_pStu[i]=m_pstu[index];86m_pstu[index]=ps;87}88}89}90voidTeacher::Display()91{92cout<<"姓名\t"<<"學(xué)號(hào)\t"<<"成績(jī)\t"<DisplayMsg();96}97}98intTeacher::BestScore(Student*pS[])99{100intindex=0;101intcount=1;102//********3********103104for(intJ=1;Jm_mark>m_pStu[index]->m_mark)107{108count=1;109index=j;110ps[count++]=m_pstu[index];111}112elseif(m_pStu[j卜>m_mark==mpStu[index]->mmark)113{114index=j;115pS[count++]=m_pstu[index];116}117}118returncount;119}120voidmain()121{122TeacherTeacher;123Student*pStudent[NMAX];124cout<<"輸入的學(xué)生信息."<DisplayMsg();134}135}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:friendclassrreacher;(2)將“if()”補(bǔ)充完整為:if(index!=j)(3)添加語(yǔ)句:pS[0]=mpStu[0];知識(shí)點(diǎn)解析:類(lèi)Student含有三個(gè)成員變量:姓名、五個(gè)英文字符的學(xué)號(hào)和精確到小數(shù)點(diǎn)后一位的一科成績(jī),類(lèi)Teacher含有Student對(duì)象數(shù)組的指針Student*m_pStu[NMAX]、m_average和m_count三個(gè)成員變量,類(lèi)Teacher有多個(gè)成員函數(shù),完成學(xué)生數(shù)據(jù)輸入、排序、查找最好成績(jī)和打印等功能。[解題思路](1)學(xué)生的信息受到嚴(yán)密保護(hù)和限制,任課老師可以修改學(xué)生數(shù)據(jù),比如本科升到研究需要修改學(xué)號(hào)等信息,因此老師類(lèi)(Teacher)可以訪問(wèn)學(xué)生類(lèi)(Student),故老師類(lèi)是學(xué)生類(lèi)友元類(lèi),故第1個(gè)標(biāo)識(shí)下應(yīng)添加“friendclassTeacher;”。(2)SortScore()成員函數(shù)是實(shí)現(xiàn)按成績(jī)高低的排序,函數(shù)結(jié)構(gòu)是二重循環(huán),采用的是選擇法排序,每次在內(nèi)層循環(huán)中尋找成績(jī)最高的元素的下標(biāo),如果找到的最高成績(jī)的元素的下標(biāo)和現(xiàn)在的位置(外層循環(huán)變量i+l的值)不同則兩者交換,故第2個(gè)標(biāo)識(shí)下的判斷條件為“if(index!=j)”。(3)BestScore(Student*pS[])實(shí)現(xiàn)查找成績(jī)最高學(xué)生名單,即利用循環(huán)查找數(shù)組中的每個(gè)元素的成績(jī)值,先假設(shè)第一個(gè)元素的成績(jī)最高,然后再循環(huán)中逐個(gè)比較,如果有成績(jī)更高的,那么將更高的成績(jī)保存下來(lái),搜索整個(gè)數(shù)組就能找到成績(jī)最高的學(xué)生,即第3標(biāo)識(shí)下應(yīng)添加“pS[0]=mpStu[0];”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第9套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:cTest注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。#includevoidmain(){∥********error********charC=“C”;cout<標(biāo)準(zhǔn)答案:(1)charc=‘c’;(2)intb=1024;(3)b+=1024;知識(shí)點(diǎn)解析:本題的功能是輸出字符c和字符串。Test。因?yàn)楸绢}程序中不存在復(fù)雜的結(jié)構(gòu),解題思路,從已定源程序的main主函數(shù)依次處理錯(cuò)誤提示下的語(yǔ)句即可。解題思路(1)打開(kāi)modil.cpp,調(diào)試程序,顯示錯(cuò)誤提示為第一標(biāo)識(shí)下“odi1.cpp(5):errorC2440:‘initializing’:cannotconveafrom’char[2]‘to’char”。變量c的類(lèi)型為字符型,字符型值應(yīng)該是用單引號(hào),雙引號(hào)是字符串型。所以這里修改為“charc=‘c’:”。(2)根據(jù)第3個(gè)標(biāo)識(shí)下的語(yǔ)句知道,b的值加上1024,然后判斷b的值是否為2048,所以這里b的類(lèi)型應(yīng)該是整型,而不是字符型,所以修改為“intb=1024;”。(3)顯示第3個(gè)標(biāo)識(shí)下的語(yǔ)句“b+=1024;”的錯(cuò)誤提示modil.cpp(10):errorC2018:unknowncharacter’0xaY,因?yàn)檎Z(yǔ)句中的“;”為中文輸入法下的輸入,并不是英文下的“;”,所以修改為“b+=1024;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。完成函數(shù)fun(char*str,char*s)空出部分。函數(shù)fun(char*str,char*s)的功能是:將在字符串str中下標(biāo)為偶數(shù)位置上的字符,緊隨其后重復(fù)出現(xiàn)一次,放在一個(gè)新串S中,S中字
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國(guó)旋轉(zhuǎn)式殺菌鍋行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 個(gè)人質(zhì)保合同范本
- 供房按揭合同范本
- 買(mǎi)工程抵押房合同范例
- 三福正式員工合同范例
- 前期物業(yè)咨詢(xún)合同范例
- 農(nóng)村公共路燈維修合同范例
- 兼職安裝合同范例
- 人員反聘合同范例
- 2025至2030年中國(guó)氦檢漏回收裝置數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024年WPS計(jì)算機(jī)二級(jí)考試題庫(kù)350題(含答案)
- 2024年4月27日浙江省事業(yè)單位招聘《職業(yè)能力傾向測(cè)驗(yàn)》試題
- 2024年6月浙江省高考地理試卷真題(含答案逐題解析)
- 物業(yè)管理服務(wù)應(yīng)急響應(yīng)方案
- 醫(yī)院培訓(xùn)課件:《如何撰寫(xiě)護(hù)理科研標(biāo)書(shū)》
- 風(fēng)車(chē)的原理小班課件
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期末考試 數(shù)學(xué) 含答案
- 2024年山東省濟(jì)南市中考英語(yǔ)試題卷(含答案)
- 2024年北師大版八年級(jí)上冊(cè)全冊(cè)數(shù)學(xué)單元測(cè)試題含答案
- 江蘇省南京市第二十九中2025屆數(shù)學(xué)高二上期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含解析
- 八年級(jí)下學(xué)期期末考試語(yǔ)文試題(PDF版含答案)
評(píng)論
0/150
提交評(píng)論