國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共26題)_第1頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共26題)_第2頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共26題)_第3頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共26題)_第4頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共26題)_第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ī)試(操作題)模擬試卷1(共9套)(共26題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正確運(yùn)行,并且使程序輸出的結(jié)果為:30130注意:錯(cuò)誤的語(yǔ)句在//********error********的下面,修改該語(yǔ)句即可。1#include2inta=10;3classcobj4{5public:6CObj()7{8a=b=0;9}10voiddisplay()11{12//********error********13cout<標(biāo)準(zhǔn)答案:(1)cout<a+=a;(3)a+=::a;知識(shí)點(diǎn)解析:程序當(dāng)中定義了全局變量a和類COhj,類CObj含有成員變量a和b,類CObj的變量a和全局變量a均為整型變量,名字完全一樣,使用時(shí)需要注意區(qū)分。類COhj成員函數(shù)display()打印變量a和b的值,func(inta)函數(shù)和func2()均使類成員變量a增加,但是增加方式不同。[解題思路](1)成員函數(shù)display()打印變量a和b的值,即cout輸出a和b的值,cout流中的數(shù)據(jù)是用流插入運(yùn)算符“<<”順序加入的,因此“<”不正確,因此第1個(gè)標(biāo)識(shí)下應(yīng)改成cOut<a+=a:”。(3)func20函數(shù)雖然沒(méi)有參數(shù),但是成員變量a和全局變量a重名,第3個(gè)標(biāo)識(shí)下“a+=a”也會(huì)有歧義,分不清楚是全局變量加倍還是類成員變量加倍或者其他情況,調(diào)用rune20函數(shù)后,輸出“130”,說(shuō)明a為13,b為0,因此是成員變量與全局變量a的和賦給成員變量a,正確的寫(xiě)法是“a+=::a:”,“::a”表示是全局變量a。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,補(bǔ)充空出的代碼。函數(shù)convert(char*des,char*str)實(shí)現(xiàn)的功能是,如果字符串str里面有空格或者不可打印字符,則全部去掉,將轉(zhuǎn)化后的字符串放在字符串des里,然后返回該字符串。注意:不能修改程序的其他部分,只能補(bǔ)充convert()函數(shù)。1#include2#include3#defineMAXLEN10244char*convert(char*deS,char*str)5{67}8voidmain()9{10chardest[MAXLEN];11char*str="AbcDeFhJK";12cout<標(biāo)準(zhǔn)答案:1intj=0;2for(inti=0;str[i]!=NULL;i++)3{4if(str[i]!=’’&&isprint(str[i]))//判斷是否是可打印的而且非空格字符5{6des[j++]=str[i];//添加7}8}9des[j]=NULL;//最后一個(gè)字符為空10returndes;知識(shí)點(diǎn)解析:函數(shù)convert(char木des,char*str)實(shí)現(xiàn)的功能是:如果字符串str里面有空格或者不可打印字符,則全部刪除,將轉(zhuǎn)化后的字符串放在字符串des里??捎醚h(huán)方式檢查str中的每個(gè)字符,判斷是不是空格或者不可打印字符,如果不是則放入des中,否則不放入des中。[解題思路](1)由審題分析可知,可利用循環(huán)來(lái)逐個(gè)檢索str中的字符,循環(huán)變量i從0開(kāi)始,直到str數(shù)組的結(jié)束,即str[i1==0為循環(huán)結(jié)束條件。(2)在循環(huán)中用if語(yǔ)句判斷該字符是否是空格或者不可打印字符:if(str[i]!=’’&&isprint(str[i])),如果滿足條件說(shuō)明不是空格或者不是不可打印字符添加到des中,不滿足則無(wú)須添加到des中。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp,其中定義了類baseA、priAl和priA2,其中priAl類由baseA類公有派生,priA2類由priAl類公有派生。上述三個(gè)類的定義并不完整,請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。程序輸出結(jié)果如下:1051057(1)定義類baseA的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個(gè)整型的參數(shù)m,在構(gòu)造函數(shù)中請(qǐng)將m賦值給數(shù)據(jù)成員a。請(qǐng)?jiān)谧⑨尅埃狭狭狭?料料料料”之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)定義類priAl的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個(gè)整型的參數(shù)m和n,在構(gòu)造函數(shù)中請(qǐng)將m賦值給數(shù)據(jù)成員b,將n作為基類baseA構(gòu)造函數(shù)的參數(shù)值傳入。請(qǐng)?jiān)谧⑨尅埃?*******2********"之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)定義類priA2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有三個(gè)整型的參數(shù)m,n和k,在構(gòu)造函數(shù)中請(qǐng)將m賦值給數(shù)據(jù)成員c,將n和k分別賦值給基類priAl構(gòu)造函數(shù)的參數(shù)m和n。請(qǐng)?jiān)谧⑨尅埃?*******3********之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成類priA2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸出基類私有成員a和b及類priA2自身的數(shù)據(jù)成員C的值,上述三個(gè)值在輸出時(shí)以空格隔開(kāi)。請(qǐng)?jiān)谧⑨尅埃?*******4********“之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。1#include2classbaSeA3{4inta;5public:6//********1********78intgeta(){returna;)9};10classpriAl:publicbaseA11{12intb;13public:14//********2********1516intgetb(){returnb;)17};18classpriA2:publicpriAl19{20intC;21public:22//********3********2324voidshow()25{26//********4********2728}29};30voidmain()31{32priA2a(7,5,10);33cout<標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:baseA(intm){a=m;)(2)添加語(yǔ)句:priAl(intm,intn):baseA(n){b=m;)(3)添加語(yǔ)句:priA2(intm,intn,intk):priAl(n,k){c=m;)(4)添加語(yǔ)句:cout<知識(shí)點(diǎn)解析:程序當(dāng)中定義了類baseA、priAl和priA2,其中priAl類由baseA類公有派生,priA2類由priAl類公有派生。構(gòu)造函數(shù)是類的一種特殊的成員函數(shù),其函數(shù)名和類名一致。構(gòu)造函數(shù)可以帶參數(shù)也可以不帶參數(shù),帶參數(shù)的構(gòu)造函數(shù)根據(jù)構(gòu)造函數(shù)內(nèi)部賦值語(yǔ)句可知其參數(shù)形式。公有派生類可以訪問(wèn)基類的公有成員,因此priA2類可以調(diào)用類baseA的geta()函數(shù)和priAl類的getb0函數(shù),通過(guò)調(diào)用這兩個(gè)函數(shù)得到基類私有成員a和b。[解題思路](1)根據(jù)題目l要示,構(gòu)造函數(shù)函數(shù)名和類名一致,顯然baseA構(gòu)造函數(shù)名為baseAO,在baseAOOO通過(guò)參數(shù)m完成對(duì)成員變量a的賦值,因此構(gòu)造函數(shù)名為baseA(intm),在函數(shù)內(nèi)部對(duì)成員a賦值,故第1個(gè)標(biāo)識(shí)下應(yīng)添加“baseA(intm){a=m;)”。(2)根據(jù)題目2要示,構(gòu)造函數(shù)形式為priAl(intm,int11),m賦值給priAl類成員b,將11作為基類baseA構(gòu)造函數(shù)的參數(shù)值傳入,故第2個(gè)標(biāo)識(shí)下應(yīng)添加“priAl(intm,intn):baseA(n){b=m;}”。(3)根據(jù)題目3要示,函數(shù)形式為priA2(intm,intn,intk),在構(gòu)造函數(shù)中將m賦值給數(shù)據(jù)成員c,將n和k分別賦值給基類priAl構(gòu)造函數(shù)的參數(shù)m和n,因此第3個(gè)標(biāo)識(shí)下應(yīng)添加“priA2(intm,intn,intk):priAl(n,k){c=m;)”。(4)根據(jù)題目4要示,priA2類公有派生于priA1,而priA1公有派生于baseA,因此在priA2類中可以調(diào)用基類的geta()和getb()來(lái)獲得基類私有成員a和b,再輸出priA2的私有成員C即滿足要求,因此第4個(gè)標(biāo)識(shí)下應(yīng)添加“cout<國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi.epp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正其中的錯(cuò)誤,使得程序正確運(yùn)行。程序輸出:S1:n=20s2:n=10執(zhí)行s3.a(chǎn)dd(s1,s2)s3:n=30s4:n=30注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。#include<10Stream.h>C1assTestClass{intn;public:TestClass(){)Testelass(intm){n=m;}∥********error********TestClassadd(TestClasssl,s2){thiS一>n=s1.n+s2.n;∥********error********return(thiS);}voiddisp(){cout<<“n=”<標(biāo)準(zhǔn)答案:(1)TestClassadd(TestClasss1,TestClasss2)(2)return(*this);(3)};知識(shí)點(diǎn)解析:本題中的功能是設(shè)置類中的成員數(shù)值,然后利用成員函數(shù)add求和。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序首先通過(guò)類TestClass中的成員函數(shù)實(shí)現(xiàn)題目中的輸出要求。解題思路(1)打開(kāi)modil.cpp,調(diào)試程序,根據(jù)顯示的錯(cuò)誤提示,知道語(yǔ)句“TestClassadd(TestClasss1,s2)”中的變量“s2”沒(méi)有聲明類型,所以補(bǔ)充“s2”的類型,即“TestClassadd(TestClasss1,TestClasss2)”。(2)“this一>n=s1.n+s2.n:”語(yǔ)句中的this變量為指針變量,所以第2個(gè)標(biāo)識(shí)下的“return(this);”返回語(yǔ)句中的this變量,應(yīng)該返回指針型,所以修改為“retumf*this);”。(3)C++中類的定義格式應(yīng)為“class類名{};”,以分號(hào)為結(jié)尾,所以第3個(gè)標(biāo)識(shí)下,類結(jié)尾處補(bǔ)充分號(hào)“;”,即修改為“};”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。函婁factor(int*des,int&length,intn)實(shí)現(xiàn)的功能是:將11所有基數(shù)存放到des中,通過(guò)length引用返回因數(shù)的個(gè)數(shù),比如fator(a,length,20)執(zhí)行后,則a={1,2,4,5,10,20),length=6。注意:只能補(bǔ)充函數(shù)factor0,請(qǐng)勿改動(dòng)其他部分的內(nèi)容。#include#defineMAXNLEN100voidfactor(int*des,int&length,intn){}voidmain(){inta[MAXNLEN],length;intn=20;factor(a,length,n);for(inti=0;i標(biāo)準(zhǔn)答案:1length=0;2for(inti=1;i<=n;i++)3{4if(n%i==0)//判斷是否n的因數(shù)5{6des[1ength]=i7iength++8}9}知識(shí)點(diǎn)解析:(1)找到n的每一個(gè)因數(shù)可采用循環(huán)方法,循環(huán)變量從1:開(kāi)始到n,逐個(gè)取n和循環(huán)變量的余數(shù)。(2)如果余數(shù)為0說(shuō)明是n的因數(shù),添加到des中,參數(shù)length是采用的引用傳遞方式,形參的改變會(huì)影響實(shí)參,因此可直接將length的值加1表示des中元素個(gè)數(shù)加1。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)完成構(gòu)造函數(shù),設(shè)置數(shù)組元素的個(gè)數(shù)為0,請(qǐng)?jiān)谧⑨尅?*******1********之后添加語(yǔ)句。(2)完成函數(shù)AddMember(intn),如果參數(shù)rl包含在類的數(shù)據(jù)成員數(shù)組中,則返回0,否則把數(shù)據(jù)寫(xiě)入數(shù)組,然后返回1,請(qǐng)?jiān)谧⑨尅?*******2********之后添加語(yǔ)句。(3)完成函數(shù)DelMember(intn),如果變量在數(shù)據(jù)中,則刪除該變量,并且返回1,如果不存在則返回0,請(qǐng)?jiān)谧⑨尅?*******3********之后添加語(yǔ)句。(4)完成成員函數(shù)islnclude(intn)的定義,該函數(shù)檢查參數(shù)n是否在類的數(shù)據(jù)成員數(shù)組elems中,如果在返回1,否則返回0。清在注釋∥********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(Array[i]一n)或if(n==Array[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ù)組中的位置。如果11存在于數(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套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾projl下的工程pmjl,其中有“沙發(fā)”類Sofa和主函數(shù)main的定義。程序中位于每個(gè),/ERROR**********found**********下的語(yǔ)句行有錯(cuò)誤,請(qǐng)加以更正。更正后程序的輸出應(yīng)該是:座位數(shù):3顏色:紅色注意:只能修改每爪//ERROR**********found**********下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#includeusingnamespacestd;classSofa{//“沙發(fā)”類intseats;//座位數(shù)charcolor[10];//顏色public://ERROR**********found**********Sofa(intS,constchar*CO){//ERROR**********found**********if(CO=NULL)color[0]=’\0’;elSestrcpy(color,CO);}//ERROR******found******constchar*getSeats()const{returnseats;)constcharsgetColor()const{returncolor;)};intmain(){Sofasafa(3);cout<<“座位數(shù):”<標(biāo)準(zhǔn)答案:(1)Sofa(ints,constchar*co=“紅色”):seats(s){(2)if(co==NULL)(3)intqetSeats()const{returnseats;)知識(shí)點(diǎn)解析:程序定義Sofa類,它包含兩個(gè)數(shù)據(jù)成員:字符數(shù)組color和整型變量seats;還包含一個(gè)構(gòu)造函數(shù),兩個(gè)公有成員函數(shù),getSeats()函數(shù)返回成員seats的值,getColor()函數(shù)返回字符數(shù)組color的地址Sofa類的定義體中,有三個(gè)錯(cuò)誤:(1)Sofa類的構(gòu)造函數(shù)錯(cuò)誤:由main()函數(shù)中定義Sofa類對(duì)象時(shí)可知:構(gòu)造函數(shù)雖然有兩個(gè)參數(shù),但是可以只傳人一個(gè)整型變量,所以另一個(gè)參數(shù)co需要提供一個(gè)默認(rèn)值,由題意可知程序運(yùn)行結(jié)果輸出顏色是紅色,所以co的默認(rèn)字符串值為“紅色”;另外程序需要輸出座位數(shù):3,所以成員seats需要使用形參s完成初始化,構(gòu)造函數(shù)體中并未對(duì)seats進(jìn)行賦值。(2)sofa類的構(gòu)造函數(shù)中,需要根據(jù)形參co的值是否為空,完成color的賦值,此處的if判斷需要使用相等關(guān)系運(yùn)算符,而不是賦值運(yùn)算符。(3)成員函數(shù)getSeats()返回的是seats的值,所以返回值應(yīng)該是int類型,而不是constchar*類型。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,該工程中包含一個(gè)程序文件main.cpp,其中有類AutoMobile(“汽車”)及其派生類Car(“小轎車”)、Truck(“卡車”)的定義,還有主函數(shù)main的定義。請(qǐng)?jiān)跈M線處填寫(xiě)適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:車牌號(hào):冀ABCl234品牌:ForLand類別:卡車當(dāng)前檔位:0最大載重量:12車牌號(hào):冀ABCl234品牌:ForLand類別:卡車當(dāng)前檔位:2最大載重量:12車牌號(hào):滬XYZ5678品牌:QQ類別:小轎車當(dāng)前檔位:0座位數(shù):5車牌號(hào):滬XYZ5678品牌:QQ類別:小轎車當(dāng)前檔位:一1座位數(shù):5注意:只能在橫線處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#include#include#includeusingnamespacestd;classAutoMobile{//“汽車”類char*brand;//汽車品牌char*number;//車牌號(hào)intspeed;//檔位:1、2、3、4、5,空檔:0,倒檔:一1public:AutoMobile(constchar*thebrand,constchar*the_number):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(intthe_speed){//換到指定檔位if(speed>=一1&&speed<=5)speed=the_speed;}virtualconstchar*category()const=0,//類別:卡車、小轎車等virtualvoidshow()const{cout<<”車牌號(hào):”<標(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ù)的掌握情況,在上一條語(yǔ)句程序給brand指針?lè)峙淞丝臻g,在這里要復(fù)制字符串the_brand,即strepy(brand,the—brand);。(2)主要考查考生對(duì)動(dòng)態(tài)分配的掌握情況,參考brand指針的復(fù)制過(guò)程完成該語(yǔ)句,先給指針number分配空間,通過(guò)new來(lái)完成:number=newchar[strlen(the_number)+1];。(3)主要考查考生對(duì)成員函數(shù)的掌握,由程序可知這里要輸出的是品牌,因此調(diào)用成員函數(shù)theBrand()來(lái)輸出品牌。(4)主要考查考生對(duì)純虛函數(shù)的掌握,根據(jù)純虛函數(shù)的定義:virtualconstchar*category()const=0;,可知在這里要填寫(xiě):const{return”卡車”;}。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj3下的工程proj3,其中聲明的CDeepCopy是一個(gè)用于表示矩陣的類。請(qǐng)編寫(xiě)這個(gè)類的賦值運(yùn)算符成員函數(shù)operator=,以實(shí)現(xiàn)深層復(fù)制。要求:補(bǔ)充編制的內(nèi)容寫(xiě)在“//**********333**********”與“//**********666**********”之間。不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//CDeepCopy.h#include#includeusingnamespacestd;classCDeepCopy{public:intn;//動(dòng)態(tài)數(shù)組的元素個(gè)數(shù)int*p;//動(dòng)態(tài)數(shù)組首地址CDeepCopy(int);~CDeepCopy();CDeepCopy&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)CDeepCopy&CDeepCopy::operator=(constCDeepCopy&r)//賦值運(yùn)算符函數(shù)實(shí)現(xiàn){//********333********//********666********}intmain(){CDeepCopya(2),d(3);a.P[o]=1;d.P[0]=666;//對(duì)象a,d數(shù)組元素的賦值{CDeepCopyb(3);a.P[0]=88;b=a;//調(diào)用賦值運(yùn)算符函數(shù)cout<標(biāo)準(zhǔn)答案:n=r.n;//把對(duì)象r字符長(zhǎng)度賦值給ndelete[]p;//刪除動(dòng)態(tài)數(shù)組pp=newint[n];//給動(dòng)態(tài)數(shù)組p分配空間為nfor(inti=0;i知識(shí)點(diǎn)解析:主要考查考生對(duì)運(yùn)算符重載的掌握,由注釋可知此處要實(shí)現(xiàn)賦值運(yùn)算符函數(shù)。要重載的運(yùn)算符是“=”,該類的成員是動(dòng)態(tài)數(shù)組p,數(shù)組元素個(gè)數(shù)為n,因此先釋放原來(lái)的動(dòng)態(tài)數(shù)組,再分配空間,然后逐個(gè)復(fù)制元素即可。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,即使程序在界面輸出以下類似內(nèi)容:0012FF6810012FF3C50012FF6C20012FF4440012FF7030012FF4C30023FF7440012FF5420012FF7850012FF5C1006AFDCC~006AFDEF數(shù)據(jù)可能因?yàn)闄C(jī)器的不同,程序的輸出的內(nèi)容會(huì)有差異。只要相差為4的連續(xù)地址即可。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在∥********error********的下面。#includeusingnamespacestd;intmain(){int*p,a[5]={1,2,3,4,5};double*q,b[5]={5.0,4.0,3.0,2.0,1.0),intx;P=a;q=b;∥********error********for(x=0;x<=5;x++)∥********error********cout<<p+x<<“”<<(p+x)<<”“<標(biāo)準(zhǔn)答案:(1)for(x=0;x<5;x++)(2)cout<知識(shí)點(diǎn)解析:本題的程序功能是輸出相差為4的連續(xù)地址。從己定源程序的main主函數(shù)開(kāi)始入手,依次執(zhí)行程序中的語(yǔ)句,重點(diǎn)分析、調(diào)試標(biāo)識(shí)下的錯(cuò)誤語(yǔ)句,輸出題目要求的結(jié)果。解題思路(1)根據(jù)數(shù)組a、b定義,它們都是5個(gè)元素,而第1個(gè)標(biāo)識(shí)下的“for(x:0;x<=5;x++)”循環(huán)了6次,應(yīng)該是5次,所以第1個(gè)標(biāo)識(shí)下的將其修改為“for(x=0;x<5;x++)”(2)第2個(gè)標(biāo)識(shí)下的p變量為指針型變量,p+x為指向數(shù)組中第x個(gè)元素的地址,這里要輸出的是存儲(chǔ)單元的內(nèi)容,所以使用“*”指針元素符,即修改為“cout<二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。該程序從鍵盤(pán)讀入整數(shù),并按從大到小的順序輸出輸入整數(shù)中互不相等的那些整數(shù)。程序一邊讀入整數(shù),一邊構(gòu)造一個(gè)以大到小順序鏈接的鏈表,直至輸入0時(shí)結(jié)束。然后順序輸出鏈表上各表元的整數(shù)值。主函數(shù)每讀入一個(gè)整數(shù),就調(diào)用函數(shù)fun(),函數(shù)fun()將還未出現(xiàn)在鏈表上的整數(shù)按從大到小的順序插入到鏈表中。為了插入方便,鏈表在表首有一個(gè)輔助表元。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#includeclassNODE{public:intdata;NODE*next;};voidfun(NODE*list,intx){}voidmain(){intX;NODE*head,*P;/*首先建立只有輔助表元的空鏈表*/head=newNODE;head->next=NULL;std::cout<<“Enterintegers,endwith0”<>x;if(x==0)break;fun(head,x);}for(p=head一>next;P!=NULL;p=p一>next)std::cout<data<<’’;std::cout<next;deletehead;head=P;}while(p);}標(biāo)準(zhǔn)答案:NODE*u,*v,*p;u=list;V=u一>next;while(v!=NULL,&&xdata)//尋找插入的位置{U=V;V=V一>next;}if(V==NULL-‖x>v一>data)//判斷是否為新的元素{p=newNODE;p一>data=x;//生成新的元素p一>next=v;u一>next=p;//插入新的元素}知識(shí)點(diǎn)解析:(1)該程序功能是構(gòu)造一個(gè)以大到小順序鏈接的鏈表。它的解題思路,首先尋找插入的位置,然后判斷是否為新元素,最后插入。(2)從己給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)voidfun(NODE*list,intx)中的list參數(shù)為單鏈表,x為要插入的數(shù)據(jù)。【解題思路】(1)首先利用while循環(huán)尋找插入元素的位置。(2)然后判斷要插入的元素是否為新元素。(3)如果為新元素,那么執(zhí)行單鏈表的操作,插入元素。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義私有數(shù)據(jù)成員year、month、day,分別用于年、月、日,它們都是int型的數(shù)據(jù),請(qǐng)?jiān)谧⑨尅?*******error********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成判斷數(shù)據(jù)成員date2是否是閏年函數(shù)intDate::IsLeapYear0定義,返回?cái)?shù)據(jù)成員date2是否是閏年的值,是則返回1,否則返回0。請(qǐng)?jiān)谧⑨尅?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)設(shè)置SetData0的默認(rèn)時(shí)間為:2004.12.1,請(qǐng)?jiān)谧⑨尅?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成主函數(shù)main(),完成輸出date2isaleapyear,請(qǐng)?jiān)谧⑨尅?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。提示:公元紀(jì)年的年數(shù)可以被四整除,即為閏年;被100整除而不能被400整除為平年;被100整除也可被400整除的為閏年。注意:增加或修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。1#include2usingnamespacestd;3C1assDate4{5public:6∥********3********7voidSetDate(inty,intm,intn);8intIsLeapYear();9VOidPrint()10{cout<標(biāo)準(zhǔn)答案:(1)intyear,month,day;(2)將“return”補(bǔ)充完整為:return(year%400==0)ll(year%4==0&&year%1001=0);(3)將“voidSetDate(intY,intm,intn);”補(bǔ)充完整為:voidSetDate(inty=2004,intm=12,intn=1);(4)將“cout<<“date2is”<<(*’:"not?!?<<”aleapyear.fI<知識(shí)點(diǎn)解析:本題中程序的功能是判斷2004年是否為閏年。其中成員函數(shù)SetDate設(shè)置日期,IsLeapYear函數(shù)判斷是否為閏年。在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類Date和和其成員函數(shù)實(shí)現(xiàn)各種功能。解題思路(1)題目1要求“定義私有數(shù)據(jù)成員year、month、day,分別用于年、月、日,它們都是int型的數(shù)據(jù)”。在程序中的Date類中的priate區(qū)域添加數(shù)據(jù)成員year、month、day的定義即可,其中它們的類型根據(jù)題目要求定義為int型。即在第1個(gè)標(biāo)識(shí)下添加“intyear,month,day;”0(2)題目2要求“完成判斷數(shù)據(jù)成員date2是否是閏年函數(shù)intDate::IsLeapYear0的定義”。公元紀(jì)年的年數(shù)可以被100整除而不能被400整除為平年;被100整除也可被400整除的為閏年。用程序語(yǔ)言表達(dá)為“(year%400~0)ll(year%4=0&&year%100!=0)”,即在第2個(gè)標(biāo)識(shí)補(bǔ)充的返回值語(yǔ)句為“return(year%0400=0)‖(year%4=0&&year%100!=0);”。(3)題目3要求“設(shè)置SetData()的默認(rèn)時(shí)間為:2004-12-1”。程序中類Date的成員函數(shù)定義為“voidSetDate(inty,intm,intn);”,設(shè)置默認(rèn)時(shí)間為:2004—12-1,就是設(shè)置SetDate函數(shù)中的變量值分別為2004,12,1。即成員函數(shù)的定義語(yǔ)句修改為“voidSetDate(inty=2004,intm=12,intn=1);”。(4)題目4要求“完成主函數(shù)main(),完成輸出date2isaleapyear”。標(biāo)識(shí)4下的語(yǔ)句“cout<<“date2is“<<(“”:“not”)<<“aleapyear.”<國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.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********Product=number1*number2*number3;//********error********cout<<"number1="<標(biāo)準(zhǔn)答案:(1)doubleProduCt=number1*number2*number3;(2)cout<<"numberl="<二、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)類CBase有一個(gè)常數(shù)變量Numberl,在構(gòu)造函數(shù)時(shí)對(duì)其初始化,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)類CPri是CBase的公共繼承類,請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)類CPri構(gòu)造函數(shù)有兩個(gè)形式參數(shù),第一個(gè)是對(duì)CBase的初始化,第二個(gè)缺省為0,用來(lái)對(duì)變量Number2進(jìn)行初始化。請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)類CPri的函數(shù)display()重載于CBase的打印函數(shù)。完成對(duì)變量Number2的輸出,然后調(diào)用基類的打印函數(shù),請(qǐng)?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。輸出的內(nèi)容如下:Number2=12Number=8注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#inCludeClassCBaSe{private:intNumber;public://********1********CBaSe(intx){}Voiddisplay(){cout<<"Number="<標(biāo)準(zhǔn)答案:(1)將“CBase(intx)”補(bǔ)充完整為:CBase(intx):Number(x)(2)將“classCPri”補(bǔ)充完整為:classCPri:publicCBase(3)將“CPri(intx,inty=0)”補(bǔ)充完整為:Cpri(intx,inty=0):CBase(x)(4)添加語(yǔ)句:cout<<"Number2="<知識(shí)點(diǎn)解析:(1)構(gòu)造函數(shù)完成類成員變量的初始化,第1個(gè)標(biāo)識(shí)下是對(duì)Number1初始化,帶參數(shù)的構(gòu)造函數(shù)初始化有多種方式,可以在函數(shù)體內(nèi)完成初始化,或利用參數(shù)初始化表來(lái)完成初始化,顯然這里不能在函數(shù)體完成初始化,只能是在函數(shù)首部實(shí)現(xiàn)對(duì)數(shù)據(jù)成員的初始化,因此只能通過(guò)參數(shù)初始化表來(lái)完成,這種方法不在函數(shù)體內(nèi)對(duì)數(shù)據(jù)成員初始化,而是在函數(shù)首部實(shí)現(xiàn),即第1個(gè)標(biāo)識(shí)下應(yīng)改為“CBase(intx1:Number(x)”。(2)第2標(biāo)識(shí)下是聲明類CPri,且類CPri是CBase的公共繼承類,定義派生類的一般格式為:class<派生類名>:<繼承方式1><基類名1>,<繼承方式2><基類名2>,<繼承方式n><基類名n>{<派生類新定義成員>};類CPri是CBase的公共繼承類,因此第2個(gè)標(biāo)識(shí)下應(yīng)改為“classCPri:publicCBase”。(3)CPri構(gòu)造函數(shù)有兩個(gè)形式參數(shù),第一個(gè)是對(duì)CBase的初始化,第二個(gè)缺省為0,用來(lái)對(duì)變量Number2進(jìn)行初始化,這里對(duì)CBase的初始化也不能在函數(shù)體內(nèi)完成,因此也必須采用參數(shù)初始化表來(lái)完成,即第3個(gè)標(biāo)識(shí)下應(yīng)改為“CPri(intx,inty=0):CBase(x)”,調(diào)用CBase的構(gòu)造函數(shù)完成對(duì)CBase的初始化。(4)函數(shù)display()重載于CBase的打印函數(shù)。完成對(duì)變量Number2的輸出,然后調(diào)用基類的打印函數(shù)display(),基類的display()和派生類的display()重名,調(diào)用基類的display()應(yīng)過(guò)類名來(lái)直接調(diào)用,即第4個(gè)標(biāo)識(shí)下應(yīng)添加“cout<<"Number2="<國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:在3×4的矩陣中找出在行上最大、在列上最小的那個(gè)元素,若沒(méi)有符合條件的元素則輸出相應(yīng)信息。例如,有下列矩陣:12134781063597程序執(zhí)行結(jié)果為:find:a[2][2]=9請(qǐng)?jiān)诔绦虻闹欣ㄌ?hào)處填入正確的內(nèi)容并把中括號(hào)刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#defineM3#defineN4voidfun(int(*a)[N]){inti=0,j,find=0,rmax,c,k;while((i標(biāo)準(zhǔn)答案:(1)j(2)0(3)i++知識(shí)點(diǎn)解析:本題是在矩陣中找出在行上最大、在列上最小的那個(gè)元素。填空0:找出行上最大的數(shù),并將該數(shù)的列數(shù)j保存在c中,所以應(yīng)填j。填空2:使用while循環(huán)語(yǔ)句和控制變量find,如果該數(shù)不是列中的最小數(shù),那么把find置0,所以應(yīng)填0。填空3:i是while的控制變量,所以每做一次循環(huán),該數(shù)值要加1,所以應(yīng)填i++。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:求S的值。例如,當(dāng)k為10時(shí),函數(shù)的值應(yīng)為1.533852。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#include#include/*********found*********/fun(intk){intn;floats,w,p,q;n=1;s=1.0;while(n<=k){w=2.0*n;P=w一1.0;q=w+1.0;s=s*w*w/p/q;n++:}/*********found*********/returns}voidmain(){system("CLS");printf("%f\n",fun(10));}標(biāo)準(zhǔn)答案:(1)doublefun(intk)(2)returns;知識(shí)點(diǎn)解析:(1)此處為函數(shù)定義錯(cuò)誤,根據(jù)返回值的類型可知函數(shù)類型標(biāo)識(shí)符應(yīng)為double。(2)語(yǔ)法錯(cuò)誤。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:將ss所指字符串中所有下標(biāo)為奇數(shù)位置的字母轉(zhuǎn)換為大寫(xiě)(若該位置上不是字母,則不轉(zhuǎn)換)。例如,若輸入"abc4Efg",則應(yīng)輸出"aBc4EFg"。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include#inClude#include#includevoidfun(char*ss){}voidmain(){FILE*wf;chartt[81],s[81]="abc4Efg";system("CLS");printf("\nPleaseenteranstringwithin80characters:\n");gets(tt);printf("\n\nAfterchanging,thestring\n%s”,tt);fun(tt);printf("\nbecomes\n%s\n",tt);/********************/wf=fopen("out.dat","w");fun(s);fprintf(wf,"%s",a);fclose(wf);/*********************/}標(biāo)準(zhǔn)答案:voidfun(char*ss){int1;for(i=0;ss[i]!=’\0’;i++)/*將ss所指字符串中所有下標(biāo)為奇數(shù)位置的字母轉(zhuǎn)換為大寫(xiě)水/if(i%2==1&&ss[i]>=’a’&&ss[i]<=’z’)ss[i]=ss[i]-32;}知識(shí)點(diǎn)解析:該題要求將給定字符串中奇數(shù)位置的字母轉(zhuǎn)換為大寫(xiě),需要先判斷奇數(shù)位置以及是否是小寫(xiě)字母,如果是再通過(guò)其轉(zhuǎn)換方法進(jìn)行轉(zhuǎn)換。從C語(yǔ)言的學(xué)習(xí)中知道,只要將小寫(xiě)字母減去32即轉(zhuǎn)成大寫(xiě)字母,將大寫(xiě)字母加上32即轉(zhuǎn)成小寫(xiě)字母。本程序用if語(yǔ)句實(shí)現(xiàn)轉(zhuǎn)換功能。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、程序通過(guò)定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)學(xué)生的學(xué)號(hào)、姓名和三門(mén)課的成績(jī)。函數(shù)fun的功能是:將形參a中的數(shù)據(jù)進(jìn)行修改,把修改后的數(shù)據(jù)作為函數(shù)值返回主函數(shù)進(jìn)行輸出。例如,若傳給形參a的數(shù)據(jù)中學(xué)號(hào)、姓名和三門(mén)課的成績(jī)依次是:10001、“ZhangSan”、95、80、88,修改后的數(shù)據(jù)應(yīng)為:10002、“LiSi”、96、81、89。請(qǐng)?jiān)诔绦虻闹欣ㄌ?hào)處填入正確的內(nèi)容并將中括號(hào)刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#includestructstudentflongsno;charname[10];floatscore[3];};/*********found*********/【1】fun(structstudenta){inti;a.sno=10002;/*********found*********/strcpy(【2】,”Lisi”);/*********found*********/for(i=o;i<3;i++)【3】+:1;returna;}main(){structstudents={10001,"ZhangSan",95,80,88},t;inti;printf("\n\nTheoriginaldata:\n");printf("\nNo:%1dName:%s\nscores:",s.sno,s.name);for(i=0;i<3;i++)pr2ntf("%6.2f",s.score[i]);printf("\n");t=fun(s);printf("\nThedataaftermodified:\n");printf("\nNo:%1dName:%s\nscores:”,t.sno,t.name);for(i=0;i<3;i++)printf("%6.2f",t.score[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)structstudent(2)a.Name(3)a.score[i]知識(shí)點(diǎn)解析:填空1:函數(shù)定義時(shí),類型標(biāo)識(shí)符指明了本函數(shù)的類型,函數(shù)的類型實(shí)際上是函數(shù)返回值的類型。本題中,用結(jié)構(gòu)類型定義函數(shù)類型。填空2和填空3:此處考查結(jié)構(gòu)體變量成員的表示方法,a.name和a.score[i]分別表示學(xué)生的姓名和成績(jī)。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、下列給定程序的功能是:讀入一個(gè)英文文本行,將其中每個(gè)單詞的第一個(gè)字母改成大寫(xiě),然后輸出此文本行(這里”單詞”是指由空格隔開(kāi)的字符串)。例如,若輸入”Iamastudenttotaketheexamination”,則應(yīng)輸出”IAmAStudentToTakeTheExamination”。請(qǐng)改正程序中的錯(cuò)誤,使程序能得出正確的結(jié)果。注意:部分源程序在文件MODIl.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#include#include#include#include/*********found*********/voidupfst(charP){intk=0;for(;*p;p++)if(k){if(*p==’’)k=0;)else{if(*p!=’’){k=1;*p=toupper(*p);}}}voidmain(){charchrstr[81];System("CLS");printf("\nPleaseenteranEnglishtextline:");gets(chrstr);printf("\nBoforechanging:\n%s",chrstr);upfst(chrstr);printf("\nAfterchanging:\n%s\n",chrstr);}標(biāo)準(zhǔn)答案:voidupfst(char·*p)知識(shí)點(diǎn)解析:主函數(shù)中fun函數(shù)的調(diào)用方式說(shuō)明函數(shù)fun的參數(shù)應(yīng)為指針類型。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)函數(shù)fun,其功能是:移動(dòng)字符串中的內(nèi)容,移動(dòng)的規(guī)則是把第1~m個(gè)字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。例如,字符串中原有的內(nèi)容為”ABCDEFGHIJK”,m的值為3,移動(dòng)后,字符串中的內(nèi)容應(yīng)該是”DEFGHIJKABC”。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include#include#defineN80voidfun(char*w,intm){}voidmain(){FILE*wf;chara[N]="ABCDEFGHIJK",b[N]="ABCDEFGHIJK";intm;printf("Theoriginastring:\n");puts(a);printf("\n\nEnterm:");scanf("%d",&m);fun(a,m);printf("\nThestringaftermoving:\n");puts(a);printf("\n\n");/*********found*********/wf=fopen("out.dat","w");fun(b,3);fprintf(wf,"%s",b);fclose(wf);/*********found*********/}標(biāo)準(zhǔn)答案:voidfun(char*w,intm){inti,j;chart;for(i=1;i<=m;i++)/*進(jìn)行m次的循環(huán)左移木/(t=w[0];for(j=1;w[j]!=’\0’;j++)/*從第2個(gè)字符開(kāi)始以后的每個(gè)字符都依次前移一個(gè)字符*/w[j一1]=w[j];w[j一1]=t;/*將第1個(gè)字符放到最后一個(gè)字符中*/}}知識(shí)點(diǎn)解析:本題應(yīng)采用“循環(huán)左移”的算法,多層循環(huán)用于控制移動(dòng)的字符的個(gè)數(shù),即需進(jìn)行多少次循環(huán),內(nèi)嵌循環(huán)的作用是將從第2個(gè)字符以后的每個(gè)字符依次前移一個(gè)位置,最后將第1個(gè)字符放到最后一個(gè)字符中。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果為:Maxis7提示:max()函數(shù)實(shí)現(xiàn)找出兩個(gè)數(shù)中的最大值,并作為函數(shù)值返回。注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。#include<iostream>usingnamespacestd;//********error********intmax(inta,intb){if(a<b){intt=a;a=b;b=t;}returnb;}intmain(){intm=-3;intn=7;//********error********max(-3,n);cout<<"Maxis"<<m<<endl;return0;}標(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,int&b)。(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<iostream.h>#defineN10voidsort(intA[N],intn){}intmain(){intA[N]={5,7,4,6,10,13,78,-4,9,20};sort(A,10);for(inti=0;i<sizeof(A)/sizeof(int);i++){cout<<A[i]<<’’;}cout<<endl;return0;}標(biāo)準(zhǔn)答案:int=i,j,k,t;for(i=0;i<n-1;i++){for(k=i,j=i+1;j<n;j++)if(A[k]<A[j])//如果前面的比后面的小則需要交換k=j;if(k!=i)//交換{t=A[i];A[i]=A[k];A[k]=t;}}知識(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)谧⑨專狭狭狭蟣料料料料后添加適當(dāng)?shù)恼Z(yǔ)句。(2)在類A2前增加A1的聲明,請(qǐng)?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)在類Cl中聲明友元函數(shù)boolfunc(A2&a,A1&b),請(qǐng)?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)實(shí)現(xiàn)函數(shù)boolfunc(A2&obi1,A1&obj2)功能,檢查兩個(gè)類的值都為T(mén)RUE,則返回TRUE,請(qǐng)?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。#include<iostream.h>//********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:boolm_A1;//********3********public:A1(){m_A1=TRUE;}public:voidsetA1(booln){m_A1=n;}};boolfunc(A2&obj1,A1&obj2){//********4********return}intmain(){A2obj0;A1obj1;cout<<func(obj0,obj1)<<endl;obj0.setA2(TRUE);obj1.setA1(TRUE);cout<<func(obj0,obj1)<<endl;return0;}標(biāo)準(zhǔn)答案:(1)添加語(yǔ)句:#defineTRUE1(2)添加語(yǔ)句:classA1;(3)添加語(yǔ)句:friendboolfunc(A2&obj1,A1&obj2);(4)將“re七urn”補(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&obi2);”。(4)函數(shù)。func返回變量m_A2和m_A1的邏輯與運(yùn)算結(jié)果,因此第4標(biāo)識(shí)下應(yīng)改為“returnobi1_mA2==TRUE&&obj2.m_A1==TRUE;”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第9套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果是:nember=1nember=10nember=100注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。#includeClassTestClass{public:TestClass(inti){nember=i;}voidS

溫馨提示

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