版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級C++機試(函數(shù))模擬試卷1(共7套)(共201題)國家二級C++機試(函數(shù))模擬試卷第1套一、選擇題(本題共28題,每題1.0分,共28分。)1、下列關(guān)于函數(shù)的描述中,錯誤的是()。A、函數(shù)可以沒有返回值B、函數(shù)可以沒有參數(shù)C、函數(shù)可以是一個類的成員D、函數(shù)不能被定義為模板標準答案:D知識點解析:C++是一種強類型語言,它要求對于每一個實現(xiàn)都要有一個實例,這給程序員帶來很多不便性。函數(shù)模板提供一種用來自動生成各種類型函數(shù)實例的算法,程序員只需要初始化其中部分參數(shù)和返回值,或者都不初始化,只需要申明通用的類型,而函數(shù)體則不需要改變。2、下列關(guān)于C++函數(shù)的說明中,正確的是()。A、內(nèi)聯(lián)函數(shù)就是定義在另一個函數(shù)體內(nèi)部的函數(shù)B、函數(shù)體的最后一條語句必須是return語句C、標準C*要求在調(diào)用一個函數(shù)之前,必須先聲明其原型D、編譯器會根據(jù)函數(shù)的返回值類型和參數(shù)表來區(qū)分函數(shù)的不同重載形式標準答案:C知識點解析:此題考查的是有關(guān)函數(shù)的概念。內(nèi)聯(lián)函數(shù)是在函數(shù)定義之前加關(guān)鍵字inline來聲明的函數(shù),而不是定義在另一個函數(shù)體內(nèi)部的函數(shù),故選項A錯誤;無返回值的函數(shù)在執(zhí)行完最后一條語句后,會自動返回而不必加入return語句,故選項B錯誤;如果函數(shù)只是返回值類型不同,而其它完全相同,則不能作為函數(shù)重載來使用,故選項D錯誤。3、若有下面的函數(shù)調(diào)用:fun(a+b,3,max(n-1,b))則fun的實參個數(shù)是()。A、3B、4C、5D、6標準答案:A知識點解析:此蹶考查的是函數(shù)的調(diào)用,C++中函數(shù)調(diào)用的一般形式為:函數(shù)名(實參表),其中實參表是用逗號分隔的一系列表達式。因此,本題中fun()函數(shù)的實參表由a+b、3和max(n-1,b)組成。4、有如下程序:#include<iostream>usingnamcspacestd;voidfunction2(intn);voidfunctionl(intn){if(n<=0)return;function2(n-2);}voidfunction2(intn){if(n<=0)return;functionl(n-1);}intmain(){function1(5);return0;}下列關(guān)于程序運行情況的描述中,正確的是()。A、function1運行1次,function2運行2次B、function1運行2次,function2運行1次C、function1運行2次,function2運行3次D、function1運行2次,function2運行2次標準答案:D知識點解析:在主函數(shù)中執(zhí)行function1(5)時,會調(diào)用function2(3),function2(3)又會調(diào)用function1(2),function1(2)又會調(diào)用function2(0),到此相互調(diào)用結(jié)束。所以function1()和function2()各執(zhí)行了2次。5、已知函數(shù)FA調(diào)用FB,若要把這兩個函數(shù)定義在同一個文件中,則()。A、FA必須定義在FB之前B、FB必須定義在FA之前C、若FA定義在FB之后,則FA的原型必須出現(xiàn)在FB的定義之前D、若FB定義在FA之后,則FB的原型必須出現(xiàn)在FA的定義之前標準答案:D知識點解析:在C++中,在調(diào)用任何函數(shù)之前,必須確保它已有原型說明。函數(shù)原型說明通常放在程序文件的頭部,以使得該文件中所有函數(shù)都能調(diào)用它們。在本題中,當函數(shù)FA調(diào)用FB時,函數(shù)FB可以定義在FA的后面,但是FB的原型必須出現(xiàn)在FA的定義之前,因而選項D為正確答案。6、下列函數(shù)原型聲明中,錯誤的是()。A、intfunction(intm,intn);B、intfunction(int,int);C、intfunction(intm=3,intn);D、intfunction(int&m,int&n);標準答案:C知識點解析:在C++中,函數(shù)在使用之前要預(yù)先聲明。這種聲明在標準C++中稱為函數(shù)原型,函數(shù)原型給出了函數(shù)名、返回類型以及在調(diào)用函數(shù)時必須提供的參數(shù)個數(shù)和類型。其語法為:<返回類型><函數(shù)名>(<形參列表>);使用函數(shù)原型說明有兩種形式:①直接使用函數(shù)定義的頭部,并在后面加上一個分號;②在函數(shù)原型說明中省略參數(shù)列表中的形參變量名,僅給出函數(shù)名、函數(shù)類型、參數(shù)個數(shù)及次序。在選項C中,給出了形參變量m的初值。7、關(guān)于函數(shù)中的<返回類型>,下列表述中錯誤的是()。A、<返回類型>中有可能包含關(guān)鍵字intB、<返回類型>中有可能包含自定義標識符C、<返回類型>中有可能包含字符*D、<返回類型>中可能包含[]標準答案:D知識點解析:<返回類型>又稱為函數(shù)類型,表示一個函數(shù)所計算(或運行)的結(jié)果值的類型。它可以是C++中已定義的數(shù)據(jù)類型,也可能是用戶自定義的數(shù)據(jù)類型。但是不能包含[],因為符號[]不是一個數(shù)據(jù)類型。8、若一個函數(shù)的原型為“int*Xfunl(intx,int&y,charz);”,則該函數(shù)的返回值類型為()。A、int*B、intC、int&D、char標準答案:A知識點解析:由“int*Xfunl(intx,int&y,charz);”的定義可知,其返回值為指向int指針的函數(shù)。9、有如下程序:#include<iostream>risingnamespacestd;classA{public:staticinta;voidinit(){a=1;}A(inta=2){int();a++;}.};intA::a=0;Aobj;intmain(){cout<<obj.a(chǎn):return0;j}運行時輸出的結(jié)果是()。A、0B、1C、2D、3標準答案:B知識點解析:此題實際考查的是變量作用域的屏蔽效應(yīng)。在C++中,當標識符的作用域發(fā)生重疊時,在一個函數(shù)中聲明的標識符可以屏蔽函數(shù)外聲明的標識符或全局標識符。聲明類A的全局對象時,構(gòu)造函數(shù)首先調(diào)用int函數(shù),但由于靜態(tài)成員變量a被構(gòu)造函數(shù)內(nèi)部的形參a所屏蔽所以a++改變的是形參a的值,對靜態(tài)成員變量a沒有影響。10、有如下程序:#include<iostream>voidfun(int&x,inty){intt=x;x=yw=t;}intmain(){inta[2]={23,42};fun(a[1],a[0]);std::cout<<a[0]<<’’,’’<<a[1]<<std::end1;return0;}執(zhí)行后的輸出結(jié)果是()。A、42,42B、23,23C、23,42D、42,23標準答案:B知識點解析:此題考查是是函數(shù)的調(diào)用以及參數(shù)值的傳遞。函數(shù)fun中的第一個參數(shù)是引用傳值方式,是雙向的:第二個參數(shù)是按值傳遞,是單向的。11、有如下程序:#include<iostream>usingnamespacestd;intmain(){voidfunction(doubleval);doubleval;function(val);cout<<val;return0;}voidfunction(doubleval){val=3;}編譯運行這個程序?qū)⒊霈F(xiàn)的情況是()。A、編譯出錯,無法運行B、輸出:3C、輸出:3.0D、輸出一個不確定的數(shù)標準答案:D知識點解析:此題考查的是函數(shù)參數(shù)的傳遞。C++語言中,函數(shù)在傳遞參數(shù)時,總是將實參的值傳遞給被調(diào)用函數(shù)的形參,即傳值調(diào)用。因此,在函數(shù)中對形參所作的任何操作都不會改變實參的值。12、有如下函數(shù)定義:voidfunc(inta,int&b){a++;b++;}若執(zhí)行代碼段:intx=0,y=1;func(x,y);則變量x和y的值分別是()。A、0和1B、1和1C、0和2D、1和2標準答案:C知識點解析:此題考查的是函數(shù)參數(shù)的傳遞方式。此題中形參a是普通參數(shù),即傳值調(diào)用,函數(shù)中對a增1不會影響到實參x的值;形參b是傳址調(diào)用,函數(shù)中對b增1同時會改變實參y的值。故最終結(jié)果是0和2。13、已知函數(shù)f的原型是voidf(int*a,long&b);,變量v1、v2的定義是:intv1;loongv2;下列調(diào)用語句中正確的是()。A、f(vl,&v2);B、f(v1,v2);C、f(&v1,&v2);D、f(&v1,v2);標準答案:D知識點解析:此題考查的是函數(shù)的調(diào)用。因為變量的定義是intv1;longv2,而函數(shù)f()的第一個參數(shù)是指針,第二個參數(shù)是引用,所以選項D為正確引用。14、在下列原型所示的C++函數(shù)中,按“傳值”方式傳遞參數(shù)的是()。A、voidfi(intx);B、voidf2(int*x);C、voidf3(constint*x);D、voidf4(int&x);標準答案:A知識點解析:傳值方式是將實參復(fù)制到形參中,因此實參和形參是兩個不同的變量,有各自的存儲空間,可以把函數(shù)的形參看做是函數(shù)的局部變量。其中BC選項為按低值傳遞D選賢為按引用傳遞。15、下列關(guān)于函數(shù)參數(shù)的敘述中,正確的是()。A、在函數(shù)原型中不必聲明形參類型B、函數(shù)的實參和形參共享內(nèi)存空間C、函數(shù)形參的生存期與整個程序的運行期相同D、函數(shù)的形參在函數(shù)被調(diào)用時獲得初始值標準答案:D知識點解析:函數(shù)的實參與形參是兩個不同的變量,有各自的存儲空間。函數(shù)形參是函數(shù)的局部變量,在函數(shù)調(diào)用時獲得初始值。16、有如下程序:#include<iostream>usingnamespacestd;voidf1(intax,int&y){intz=x;x=y;y=z;}voidf2(intx,inty){intz=x;x=y;y=z;}intmain(){intx=10,y=26;f1(x,y);f2(x,y);cout<<y<<end1;return0;}運行時的輸出結(jié)果是()。A、10B、16C、26D、36標準答案:A知識點解析:子函數(shù)f1中的形參是引用變量,所以執(zhí)行子函數(shù)實現(xiàn)了變量x,y值的交換,變量x的值等于26,而變量y的值等于10。而子函數(shù)f2中的形參是普通變量,因為C++的函數(shù)之間的參數(shù)傳遞是傳值,所以執(zhí)行函數(shù)f2不能實現(xiàn)變量x,y值的交換。17、已知函數(shù)f的原型是“voidf(int*x,int&y);”,變量v1、v2的定義是“intv1,v2;”,下列調(diào)用語句中,正確的是()。A、f(v1,v2);B、f(v1,&V2);C、f(&v1,v2);D、f(&v1,&v2);標準答案:C知識點解析:在函數(shù)f的形參表達式中第一個形參為整型指針變量,第二個為整型引用變量,所以用實參v1的指針初始化第一個形參,用實參v2初始化第二形參。18、有如下程序:#include<iostream>usingnarnespacestd;voidfl(int&x){x++;}voidf2(intx){++x;}intmain(){intx=10,y=12;f1(x);f2(y);cout<<x+y<<end1;return0;}運行這個程序的輸出結(jié)果是()。A、22B、23C、24D、25標準答案:B知識點解析:在函數(shù)f1(int&x){x++;}中,是對變量x的引用,所以當在main函數(shù)中執(zhí)行“f1(x);”語句后,變量x的值等于ll,而在函數(shù)voidf2(intx){++x;}中,對變量x的傳遞調(diào)用,在main函數(shù)中執(zhí)行“f2(y);”語句后,變量y的值仍然等于12,所以輸出x+y的值等于23。19、有如下程序:#include<iostream>usingnamespacestd;classAA{intn;public:AA(intk):n(k){}intget0{returnn;}intgetoconst{returnn+1;}};intmain(){AAa(5);constAAb(6);cout<<a.get()<<b.get();return0;}執(zhí)行后的輸出結(jié)果是()。A、55B、57C、75D、77標準答案:B知識點解析:此題考查的是常成員函數(shù)和函數(shù)的重載。所謂函數(shù)重載,是指同一個函數(shù)名可以對應(yīng)著多個函數(shù)實現(xiàn)。一般對象a既可以調(diào)用普通成員函數(shù)get,也可以調(diào)用常成員函數(shù)get,由于常成員函數(shù)不能更新對象的數(shù)據(jù)成員,所以題目中通過對象a調(diào)用的函數(shù)為常成員函數(shù):常對象b只能調(diào)用普通成員函數(shù)。20、關(guān)于函數(shù)重載,下列敘述中錯誤的是()。A、重載函數(shù)的函數(shù)名必須相同B、重載函數(shù)必須在參數(shù)個數(shù)或類型上有所不同C、重載函數(shù)的返回值類型必須相同D、重載函數(shù)的函數(shù)體可以有所不同標準答案:C知識點解析:此題考查的是函數(shù)重載。在C++語言中,允許定義一系列函數(shù)名相同,但形參的個數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對返回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。21、有如下程序:#include<iostream>usingnamespacestd;classMyClass{public:MyClass(intx):val(x){}voidPrint()const{cout<<’’const:val=’’<<val<<’\t’;}voidPrint(){cout<<’’val=’’<<val<<’t’;}private:intval;};intmain(){constMyClassobj1(10);MyClassobj2(20);obj1.Print();obj2.Print();return0;}程序的輸出結(jié)果是()。A、val=10const:val=20B、const:val=10const:val=20C、const:val=10val=20D、val=10val=20標準答案:C知識點解析:此題考查的是常成員函數(shù)的重載。常成員函數(shù)是使用const關(guān)鍵字說明的函數(shù)。const關(guān)鍵字可用于區(qū)分重載函數(shù)。此時,常對象調(diào)用常成員函數(shù),一般對象調(diào)用一般成員函數(shù);題目中的Print()就是通過const重載的兩個成員函數(shù),主函數(shù)中聲明的obi1是常對象,obj2是一般對象。故輸出結(jié)果是const::val=10val=20。22、若已經(jīng)聲明了函數(shù)原型“voidfun(inta,doubleb=0.0);”,則下列重載函數(shù)聲明中正確的是()。A、voidfun(inta=90,doubleb=0.0);B、intfun(inta,doubleb);C、voidfun(doublea,intb);D、boolfun(inta,doubleb=0.0);標準答案:C知識點解析:函數(shù)重載的原則就是至少要在參數(shù)個數(shù)或參數(shù)類型上有所不同。且如果函數(shù)只是函數(shù)類型不同的,而其他完全相同,也不能作為重載函數(shù)來使用。23、對C++編譯器區(qū)分重載函數(shù)無任何意義的信息是()。A、參數(shù)類型B、參數(shù)個數(shù)C、返回值類型D、常成員函數(shù)關(guān)鍵字const標準答案:C知識點解析:如果重載函數(shù)只是函數(shù)類型不同,而參數(shù)個數(shù)和類型完全相同,C++編譯器則無法區(qū)別它們。24、已知函數(shù)fun的原型為intfun(int,int,int);下列重載函數(shù)原型中錯誤的是()。A、charfun(int,int);B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);標準答案:D知識點解析:重載函數(shù)至少要在參數(shù)個數(shù)或參數(shù)類型上不同。而選項D中的函數(shù)與原函數(shù)只是函數(shù)類型不同,而其他完全相同(參數(shù)個數(shù)及類型),則不能作為重載函數(shù)來使用。25、下列關(guān)于函數(shù)重載的敘述中,錯誤的是()。A、重載函數(shù)的參數(shù)個數(shù)可以不同B、重載函數(shù)的參數(shù)類型可以不向C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)個數(shù)或參數(shù)類型必須有所不同標準答案:C知識點解析:兩個或兩個以上的函數(shù),具有相同的函數(shù)名,但是形參的個數(shù)或者類型不同,編譯器根據(jù)實參和形參的類型及個數(shù)進行最佳匹配,自動確定調(diào)用哪個函數(shù),這就是函數(shù)的重載。26、為了取代C中帶參數(shù)的宏,在C++中使用()。A、重載函數(shù)B、內(nèi)聯(lián)函數(shù)C、遞歸函數(shù)D、友元函數(shù)標準答案:B知識點解析:此題考查的是內(nèi)聯(lián)函數(shù)。C++語言引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C語言的預(yù)處理宏函數(shù)。故選項B正確。27、為了提高函數(shù)調(diào)用的實際運行速度,可以將較簡單的函數(shù)定義為()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、遞歸函數(shù)D、函數(shù)模板標準答案:A知識點解析:C++引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C中盼預(yù)處理宏函數(shù)。兩者的區(qū)別在于,宏函數(shù)是由預(yù)處理器對宏進行替換,而內(nèi)聯(lián)函數(shù)是通過編譯器來實現(xiàn)的。內(nèi)聯(lián)函數(shù)在調(diào)用時像宏函數(shù)一樣展開,所以它沒有一般函數(shù)的參數(shù)壓棧和退棧操作,減少了調(diào)用開銷,因此,內(nèi)聯(lián)函數(shù)比普通函數(shù)有更高的執(zhí)行效率。28、計算斐波那契數(shù)列第n項的函數(shù)定義如下:intfib(intn){if(n==0)return1;elseif(n=1)return2;elsereturnfib(n-1)+fib(n-2);}若執(zhí)行函數(shù)調(diào)用表達式fib(2),函數(shù)fib被調(diào)用的次數(shù)是()。A、1B、2C、3D、4標準答案:B知識點解析:斐波那契數(shù)列是遞歸函數(shù),所以fib(2)=fib(1)+fib(0)=2+1=3。因而執(zhí)行函數(shù)調(diào)用表達式fib(2)時,函數(shù)fib被調(diào)用的次是2次。國家二級C++機試(函數(shù))模擬試卷第2套一、選擇題(本題共31題,每題1.0分,共31分。)1、下列關(guān)于函數(shù)的描述中,錯誤的是()。A、函數(shù)可以沒有返回值B、函數(shù)可以沒有參數(shù)C、函數(shù)可以是一個類的成員D、函數(shù)不能被定義為模板標準答案:D知識點解析:C++是一種強類型語言,它要求對于每一個實現(xiàn)都要有一個實例,這給程序員帶來很多不便性。函數(shù)模板提供一種用來自動生成各種類型函數(shù)實例的算法。程序員只需要初始化其中部分參數(shù)和返回值,或者都不初始化,只需要申明通用的類型,而函數(shù)體則不需要改變。2、下列關(guān)于C++函數(shù)的說明中,正確的是()。A、內(nèi)聯(lián)函數(shù)就是定義在另一個函數(shù)體內(nèi)部的函數(shù)B、函數(shù)體的最后一條語句必須是return語句C、標準C++要求在調(diào)用一個函數(shù)之前,必須先聲明其原型D、編譯器會根據(jù)函數(shù)的返回值類型和參數(shù)表來區(qū)分函數(shù)的不同重載形式標準答案:C知識點解析:此題考查的是有關(guān)函數(shù)的概念。內(nèi)聯(lián)函數(shù)是在函數(shù)定義之前加關(guān)鍵字inline來聲明的函數(shù),而不是定義在另一個函數(shù)體內(nèi)部的函數(shù),故選項A錯誤;無返回值的函數(shù)在執(zhí)行完最后一條語句后,會自動返回而不必加入retum語句,故選項B錯誤;如果函數(shù)只是返回值類型不同,而其它完全相同,則不能作為函數(shù)重載來使用,故選項D錯誤。3、若有下面的函數(shù)調(diào)用:fun(a+b,3,max(n—1,b))則fun的實參個數(shù)是()。A、3B、4C、5D、6標準答案:A知識點解析:此題考查的是函數(shù)的調(diào)用。C++中函數(shù)調(diào)用的一般形式為:函數(shù)名(實參表),其中實參表是用逗號分隔的一系列表達式。因此,本題中fun0函數(shù)的實參表由a+b、3和max(n—1,b)組成。4、有如下程序:#inc1ude<iostream>usingnamespacestd;voidfunction2(intn);voidfunctionl(intn){if(n<=0)return;function2(n—2);)voidfunction2(intn){if(n<=0)return;functionl(n—1);}intmain(){functionl(5);return0;}下列關(guān)于程序運行情況的描述中,正確的是()。A、function1運行1次,function2運行2次B、function1運行2次,function2運行1次C、function1運行2次,function2運行3次D、function1運行2次,function2運行2次標準答案:D知識點解析:在主函數(shù)中執(zhí)行functionl(5)時,會調(diào)用function2(3),function2(3)又會調(diào)用functionl(2),functionl(2)又會調(diào)用function2(0),到此相互調(diào)用結(jié)束。所以funaion1()和function2()各執(zhí)行了2次。5、假設(shè)函數(shù)fun已經(jīng)定義,其原型為“voidfun(inta,intb—7,char*p="**");”下列函數(shù)調(diào)用中錯誤的是()。A、fun(5)B、fun(5,8)C、fun(6,"##")D、fun(0,0,"==")標準答案:C知識點解析:根據(jù)函數(shù)fun()的定義,其前兩個形參為整型變量,第三個形參為字符型變量。所以在調(diào)用時,必須符合形參的數(shù)據(jù)類型,而選項C)的第二個實參的數(shù)據(jù)類型為字符串,不符合第二個形參的數(shù)據(jù)類型。6、已知函數(shù)FA調(diào)用FB,若要把這兩個函數(shù)定義在同一個文件中,則()。A、FA必須定義在FB之前B、FB必須定義在FA之前C、若FA定義在FB之后,則FA的原型必須出現(xiàn)在FB的定義之前D、若FB定義在FA之后,則FB的原型必須出現(xiàn)在FA的定義之前標準答案:D知識點解析:在C++中,在調(diào)用任何函數(shù)之前,必須確保它已有原型說明。函數(shù)原型說明通常放在程序文件的頭部,以使得該文件中所有函數(shù)都能調(diào)用它們。在本題中,當函數(shù)FA調(diào)用FB時,函數(shù)FB可以定義在FA的后面,但是FB的原型必須出現(xiàn)在FA的定義之前,因而選項D)為正確答案。7、在對函數(shù)進行原型聲明時,下列語法成分中,不需要的是()。A、函數(shù)返回類型B、函數(shù)參數(shù)列表C、函數(shù)名D、函數(shù)體標準答案:D知識點解析:在C++中函數(shù)在使用之前要預(yù)先聲明,這種聲明在標準C++中稱為函數(shù)原型。函數(shù)給出了函數(shù)名、返回類型以及在調(diào)用函數(shù)時必須指明參數(shù)個數(shù)和類型。8、關(guān)于函數(shù)中的<返回類型>,下列表述中錯誤的是()。A、<返回類型>中有可能包含關(guān)鍵字intB、<返回類型>中有可能包含自定義標識符C、<返回類型>中有可能包含字符牛D、<返回類型>中可能包含[]標準答案:D知識點解析:<返回類型>又稱為函數(shù)類型,表示一個函數(shù)所計算(或運行)的結(jié)果值的類型.它可以是C++中已定義的數(shù)據(jù)類型,也可能是用戶自定義的數(shù)據(jù)類型,但是不能包含[],因為符號[]不是一個數(shù)據(jù)類型。9、若一個函數(shù)的原型為“int*Xfunl(intx,int&y,charz);”,則該函數(shù)的返回值類型為()。A、int*B、intC、int&D、char標準答案:A知識點解析:由“int.Xfiml(intx,int&y’charz);”的定義可知,其返回值為指向int指針的函數(shù)。10、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assA{public:staticinta;voidinit(){a=1;}A(inta=2){int();a++;)};intA::a=0;Aobj;intmain(){cout<<obj.a(chǎn);return0:j}運行時輸出的結(jié)果是()。A、0B、1C、2D、3標準答案:B知識點解析:此題實際考查的是變量作用域的屏蔽效應(yīng)。在C++中,當標識符的作用域發(fā)生重疊時,在一個函數(shù)中聲明的標識符可以屏蔽函數(shù)外聲明的標識符或全局標識符.聲明類A的全局對象時,構(gòu)造函數(shù)首先調(diào)用u}t函數(shù),但由于靜態(tài)成員變量a被構(gòu)造函數(shù)內(nèi)部的形參a所屏蔽所以a++改變的是形參a的值,對靜態(tài)成員變量a沒有影響。11、有如下程序:#inc1ude<iostream>voidfun(int&x,inty){intt=x;x=y;y=t;}intmain(){inta[2]={23,42};std::cout<<a[0]<<","a[1]std::end1;return0;}執(zhí)行后的輸出結(jié)果是()。A、42,42B、23,23C、23,42D、42,23標準答案:B知識點解析:此題考查是是函數(shù)的調(diào)用以及參數(shù)值的傳遞。函數(shù)fun中的第一個參數(shù)是引用傳值方式,是雙向的:第二個參數(shù)是按值傳遞,是單向的。12、有如下函數(shù)定義:voidfunc(inta,int&b){a++;b++;}若執(zhí)行代碼段:intx=0,y=1;func(x,y);則變量x和y的值分別是()。A、0和1B、1和1C、0和2D、1和2標準答案:C知識點解析:此題考查的是函數(shù)參數(shù)的傳遞方式。此題中形參a是普通參數(shù),即傳值調(diào)用,函數(shù)中對a增l不會影響到實參x的值;形參b是傳址調(diào)用,函數(shù)中對b增1隨時會改變實參y的值。故最終結(jié)果是0和2。13、已知函數(shù)f的原型是voidf(int*a,long&b);,變量v1、v2的定義是:intv1;loongv2;下列調(diào)用語句中正確的是()。A、f(v1,&v2);B、f(v1,v2);C、f(&v1,&v2);D、f(&v1,v2);標準答案:D知識點解析:此題考查的是函數(shù)的調(diào)用。因為變量的定義是intv1;longv2,而函數(shù)fo的第一個參數(shù)是指針,第二個參數(shù)是引用,所以選項D為正確引用。14、在下列原型所示的C++函數(shù)中,按“傳值”方式傳遞參數(shù)的是()。A、voidf1(intx);B、voidf2.(int*x);C、voidB(constint*x);D、voidf4(int&x);標準答案:A知識點解析:傳值方式是將實參復(fù)制到形參中,因此實參和形參是兩個不同的變量,有各自的存儲空間,可以把函數(shù)的形參看做是函數(shù)的局部變量。其中BC選項為按低值傳遞D選賢為按引用傳遞。15、下列關(guān)于函數(shù)參數(shù)的敘述中,正確的是()。A、在函數(shù)原型中不必聲明形參類型B、函數(shù)的實參和形參共享內(nèi)存空間C、函數(shù)形參的生存期與整個程序的運行期相同D、函數(shù)的形參在函數(shù)被調(diào)用時獲得初始值標準答案:D知識點解析:函數(shù)的實參與形參是兩個不同的變量,有各自的存儲空間。函數(shù)形參是函數(shù)的局部變量,在函數(shù)調(diào)用時獲得初始值。16、有如下程序;#inc1ude<iostream>usingnamespacestd;voidfl(int&x,int&y){intx;x=y;y=z;}voidfZ(:intx,inty){intx;x=y;y=z;}intmain(){intx=10,y=26;f1(x,y);f2(x,y);cout<<y<<end1:retum0;}運行時的輸出結(jié)果是()。A、10B、16C、26D、36標準答案:A知識點解析:子函數(shù)f1中的形參是引用變量,所以執(zhí)行子函數(shù)實現(xiàn)了變量x,y值的交換,變量x的值等于26,而變量y的值等于10。而子函數(shù)f2中的形參是普通變量,因為C++的函數(shù)之間的參數(shù)傳遞是傳值,所以執(zhí)行函數(shù)f2不能實現(xiàn)變量x,y值的交換。17、已知函數(shù)f的原型是“voidflint*x,int&y);”,變量v1.v2的定義是“intv1,v2;”,下列調(diào)用語句中,正確的是()。A、f(vl,v2);B、fNl,&v2);C、fj(&v1,v2);D、fi(&v1,&v2);標準答案:C知識點解析:在函數(shù)f的形參表達式中第一個形參為整型指針變量,第二個為整型引用變量,所以用實參v1的指針初始化第一個形參,用實參v2初始化第二形參。18、有如下程序:#inc1ude<iostream>usingnamespacestd;voidfl(int&x){x++;}voidf2(intx){++x;}intmain(){intx=10,y=12;f1(x);f2(y);cout<<x+y<<end1;return0;}運行這個程序的輸出結(jié)果是()。A、22B、23C、24D、25標準答案:B知識點解析:在函數(shù)fl(irit&x){XH,)中,是對變量x的引用,所以當在maln函數(shù)中執(zhí)行“n(x);”語句后,變量x的值等于11,而在函數(shù)voidf2(intx){++x;)中,對變量x的傳遞調(diào)用,在main函數(shù)中執(zhí)行“f2(y);”語句后,變量y的值仍然等于12,所以輸出x+y的值等于23。19、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assAA{intn;public:AA(intk):n(k){}intget0{returnn;}intget()const{retumn+1;)};intmain(){AAa(5);constAAb(6);eout<e_a.get()<<b.get();return0;}執(zhí)行后的輸出結(jié)果是()。A、55B、57C、75D、77標準答案:B知識點解析:此題考查的是常成員函數(shù)和函數(shù)的重載。所謂函數(shù)重載,是指同一個函數(shù)名可以對應(yīng)著多個函數(shù)實現(xiàn)。一般對象a既可以調(diào)用普通成員函數(shù)get,也可以調(diào)用常成員函數(shù)get,由于常成員函數(shù)不能更新對象的數(shù)據(jù)成員,所以題目中通過對象a調(diào)用的函數(shù)為常成員函數(shù):常對象b只能調(diào)用普通成員函數(shù)。20、下面是重載為非成員函數(shù)的運算符函數(shù)原型,其中錯誤的是()。A、Fractionoperator+(Fraction,Fraction);B、Fractionoperator—(Fraction);C、Fraction&operator=(Fraction&,Fraction);D、Fraction&operator+=(Fraction&,Fraction);標準答案:C知識點解析:此題考查的是運算符重載。C++語言規(guī)定,“=”運算符只能作為成員函數(shù)重載。21、關(guān)于函數(shù)重載,下列敘述中錯誤的是()。A、重載函數(shù)的函數(shù)名必須相同B、重載函數(shù)必須在參數(shù)個數(shù)或類型上有所不同C、重載函數(shù)的返回值類型必須相同D、重載函數(shù)的函數(shù)體可以有所不同標準答案:C知識點解析:此題考查的是函數(shù)重載。在C++語言中,允許定義一系列函數(shù)名相同,但形參的個數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對返回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。22、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assMyClass{public:MyClass(intx):val(x){}voidPrint()const{cout<<"const:val="<<val<<’\t’;}voidPrint(){cout<<"val="<<val<<’t’;}private:intval,};intmain(){constMyClassobj1(10);MyClassobj2(20);obj1.Print();obj2.Print();return();}程序的輸出結(jié)果是()。A、val=10const:val=20B、const:val=10const:val=20C、const:val=10val=20D、val=10val=20標準答案:C知識點解析:此題考查的是常成員函數(shù)的重載。常成員函數(shù)是使用const關(guān)鍵字說明的函數(shù)。const關(guān)鍵字可用于區(qū)分重載函數(shù)。此時,常對象調(diào)用常成員函數(shù),一般對象調(diào)用一般成員函數(shù):題目中的Print()就是通過const重載的兩個成員函數(shù),主函數(shù)中聲明的objl是常對象,obj2是一般對象。故輸出結(jié)果是const::val=10val—20。23、下列有關(guān)函數(shù)重載的敘述中,錯誤的是()。A、函數(shù)重載就是用相同的函數(shù)名定義多個函數(shù)B、重載函數(shù)的參數(shù)列表必須不同C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)可以帶有默認值標準答案:C知識點解析:此題考查的是函數(shù)重載的概念。在C++語言中,允許定義一系列函數(shù)名相同,但形參的個數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對返回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。故選項C錯誤。24、若已經(jīng)聲明了函數(shù)原型“voidfun(inta,doubleb=0.0);”,則下列重載函數(shù)聲明中正確的是()。A、voidfun(inta=90,doubleb=0.0);B、intfun(inta,doubleb);C、voidfun(doublea,intb)D、boolfun(inta,doubleb=0.0);標準答案:C知識點解析:函數(shù)重載的原則就是至少要在參數(shù)個數(shù)或參數(shù)類型上有所不同,且如果函數(shù)只是函數(shù)類型不同的,而其他完全相同,也不能作為重載函數(shù)來使用。25、對C++編譯器區(qū)分重載函數(shù)無任何意義的信息是()。A、參數(shù)類型B、參數(shù)個數(shù)C、返回值類型D、常成員函數(shù)關(guān)鍵字const標準答案:C知識點解析:如果重載函數(shù)只是函數(shù)類型不同,而參數(shù)個數(shù)和類型完全相同,C++編譯器則無法區(qū)別它們。26、已知函數(shù)fun的原型為intfun(int,int,int),下列重載函數(shù)原型中錯誤的是()。A、charfun(int,int),B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);標準答案:D知識點解析:重載函數(shù)至少要在參數(shù)個數(shù)或參數(shù)類型上不同。而選項D中的函數(shù)與原函數(shù)只是函數(shù)類型不同,而其他完全相同(參數(shù)個數(shù)及類型),則不能作為重載函數(shù)來使用。27、下列關(guān)于函數(shù)重載的敘述中,錯誤的是()。A、重載函數(shù)的參數(shù)個數(shù)可以不同B、重載函數(shù)的參數(shù)類型可以不同C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)個數(shù)或參數(shù)類型必須有所不同標準答案:C知識點解析:兩個或兩個以上的函數(shù),具有相同的函數(shù)名,但是形參的個數(shù)或者類型不同,編譯器根據(jù)實參和形參的類型及個數(shù)進行最佳匹配,自動確定調(diào)用哪個函數(shù),這就是函數(shù)的重載。28、下列有關(guān)內(nèi)聯(lián)函數(shù)的敘述中,正確的是()。A、內(nèi)聯(lián)函數(shù)在調(diào)用時發(fā)生控制轉(zhuǎn)移B、內(nèi)聯(lián)函數(shù)必須通過關(guān)鍵字inline來定義C、內(nèi)聯(lián)函數(shù)是通過編譯器來實現(xiàn)的D、內(nèi)聯(lián)函數(shù)函數(shù)體的最后一條語句必須是return語句標準答案:C知識點解析:此題考查的是內(nèi)聯(lián)函數(shù)的概念。在調(diào)用時,內(nèi)聯(lián)函數(shù)會像宏函數(shù)一樣的展開,將調(diào)用表達式用內(nèi)聯(lián)函數(shù)體來替換所以它沒有一般函數(shù)的參數(shù)壓棧和和退棧操作,所以選項A錯誤;即使沒有使用inline說明,編譯器也會將在類的說明部分定義的函數(shù)認定為內(nèi)聯(lián)函數(shù),所以選項B錯誤:內(nèi)聯(lián)函數(shù)只是比普通函數(shù)有更高的執(zhí)行效率,所以選項D錯誤。29、為了取代C中帶參數(shù)的宏,在C++中使用()。A、重載函數(shù)B、內(nèi)聯(lián)函數(shù)C、遞歸函數(shù)D、友元函數(shù)標準答案:B知識點解析:此題考查的是內(nèi)聯(lián)函數(shù)。C++語言引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C語言的預(yù)處理宏函數(shù)。故選項B正確。30、為了提高函數(shù)調(diào)用的實際運行速度,可以將較簡單的函數(shù)定義為()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、遞歸函數(shù)D、函數(shù)模板標準答案:A知識點解析:C++引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C中的預(yù)處理宏函數(shù)。兩者的區(qū)別在于,宏函數(shù)是由預(yù)處理器對宏進行替換,而內(nèi)聯(lián)函數(shù)是通過編譯器來實現(xiàn)的。內(nèi)聯(lián)函數(shù)在調(diào)用時像宏函數(shù)一樣展開,所以它沒有一般函數(shù)的參數(shù)壓棧和退棧操作,減少了調(diào)用開銷,因此,內(nèi)聯(lián)函數(shù)比普通函數(shù)有更高的執(zhí)行效率。31、計算斐波那契數(shù)列第n項的函數(shù)定義如下:intfib(intn){if(n==0)retum1;elseif(n=1)retum2;elsereturnfib(n—1)+fib(n—2);}若執(zhí)行函數(shù)調(diào)用表達式fib(2),函數(shù)fib被調(diào)用的次數(shù)是()。A、1B、2C、3D、4標準答案:B知識點解析:斐波那契數(shù)列是遞歸函數(shù),所以fib(2)=fib(1)+fib(0)=2+1=3。因而執(zhí)行函數(shù)調(diào)用表達式fib(2)時,函數(shù)fib被調(diào)用的次是2次。國家二級C++機試(函數(shù))模擬試卷第3套一、選擇題(本題共27題,每題1.0分,共27分。)1、下列關(guān)于函數(shù)的描述中,錯誤的是()。A、函數(shù)可以沒有返回值B、函數(shù)可以沒有參數(shù)C、函數(shù)可以是一個類的成員D、函數(shù)不能被定義為模板標準答案:D知識點解析:C++是一種強類型語言,它要求對于每一個實現(xiàn)都要有一個實例,這給程序員帶來很多不便性。函數(shù)模板提供一種用來自動生成各種類型函數(shù)實例的算法,程序員只需要初始化其中部分參數(shù)和返回值,或者都不初始化,只需要申明通用的類型,而函數(shù)體則不需要改變。2、若有下面的函數(shù)調(diào)用:fun(a+b,3,max(n一1,b))則fun的實參個數(shù)是()。A、3B、4C、5D、6標準答案:A知識點解析:此題考查的是函數(shù)的調(diào)用。C++中函數(shù)調(diào)用的一般形式為:函數(shù)名(實參表),其中實參表是用逗號分隔的一系列表達式。因此,本題中fun0函數(shù)的實參表由a+b、3和max(n一1,b)組成。3、有如下程序:#inc1ude<iostream>usingnamespacestd;voidfunction2(intn);voidfunctionl(intn){if(n<=0)return;function2(n一2);}voidfunction2(intn){if(n<=0)return;functionl(n一1);}intmain(){functionl(5);return0:}下列關(guān)于程序運行情況的描述中,正確的是()。A、functionl運行1次,function2運行2次B、functionl運行2次,function2運行1次C、functionl運行2次,function2運行3次D、functionl運行2次,function2運行2次標準答案:D知識點解析:在土函數(shù)中執(zhí)行functionl(5)時,會調(diào)用function2(3),function2(3)又會調(diào)用functionl(2),functionl(2)又會調(diào)用function2(0),到此相互調(diào)用結(jié)束。所以functionl()和function20各執(zhí)行了2次。4、假設(shè)函數(shù)fun已經(jīng)定義,其原型為“voidfun(inta,intb=7,char*p="**");”下列函數(shù)調(diào)用中錯誤的是()。A、fun(5)B、fun(5,8)C、fun(6,"##")D、fun(0,0,"==")標準答案:C知識點解析:根據(jù)函數(shù)fun()的定義,其前兩個形參為整型變量,第三個形參為字符型變量。所以在調(diào)用時,必須符合形參的數(shù)據(jù)類型,而選項C)的第二個實參的數(shù)據(jù)類型為字符串,不符合第二個形參的數(shù)據(jù)類型。5、己知函數(shù)FA調(diào)用FB,若要把這兩個函數(shù)定義在同一個文件中,則()。A、FA必須定義在FB之前B、FB必須定義在FA之前C、若FA定義在FB之后,則FA的原型必須出現(xiàn)在FB的定義之前D、若FB定義在FA之后,則FB的原型必須出現(xiàn)在FA的定義之前標準答案:D知識點解析:在C++中,在調(diào)用任何函數(shù)之前,必須確保它已有原型說明。函數(shù)原型說明通常放在程序文件的頭部,以使得該文件中所有函數(shù)都能調(diào)用它們。在本題中,當函數(shù)FA調(diào)用FB時,函數(shù)FB可以定義在FA的后面,但是FB的原型必須出現(xiàn)在FA的定義之前,因而選項D)為正確答案。6、下列函數(shù)原型聲明中,錯誤的是()。A、intfunction(intm,intn);B、intfunction(int,int);C、intfunction(intm=3,intn);D、intfunction(int&m,int&n).標準答案:C知識點解析:在C++中,函數(shù)在使用之前要預(yù)先聲明。這種聲明在標準C++中稱為函數(shù)原型,函數(shù)原型給出了函數(shù)名、返回類型以及在調(diào)用函數(shù)時必須提供的參數(shù)個數(shù)和類型。其語法為:<返回類型><函數(shù)名>(<形參列表>);使用函數(shù)原型說明有兩種形式:①直接使用函數(shù)定義的頭部,并在后面加上一個分號;②在函數(shù)原型說明中省略參數(shù)列表中的形參變量名,僅給出函數(shù)名、函數(shù)類型、參數(shù)個數(shù)及次序。在選項C)中,給出了形參變量m的初值。7、在對函數(shù)進行原型聲明時,下列語法成分中,不需要的是()。A、函數(shù)返回類型B、函數(shù)參數(shù)列表C、函數(shù)名D、函數(shù)體標準答案:D知識點解析:在C++中函數(shù)在使用之前要預(yù)先聲明,這種聲明在標準C++中稱為函數(shù)原型。函數(shù)給出了函數(shù)名、返回類型以及在調(diào)用函數(shù)時必須指明參數(shù)個數(shù)和類型。8、關(guān)于函數(shù)中的<返回類型>,下列表述中錯誤的是()。A、<返回類型>中有可能包含關(guān)鍵字intB、<返回類型>中有可能包含自定義標識符C、<返回類型>中有可能包含字符*D、<返回類型>中可能包含[]標準答案:D知識點解析:<返回類型>又稱為函數(shù)類型,表示一個函數(shù)所計算(或運行)的結(jié)果值的類型。它可以是C++中已定義的數(shù)據(jù)類型,也可能是用戶自定義的數(shù)據(jù)類型。但是不能包含[],因為符號[]不是一個數(shù)據(jù)類型。9、若一個函數(shù)的原型為“int*Xfunl(intx,int&y,charz);”,則該函數(shù)的返回值類型為()。A、int*B、intC、int&D、char標準答案:A知識點解析:由“int*Xfunl(intx,int&y,charz);”的定義可知,其返回值為指向int指針的函數(shù)。10、有如下程序:#inc1ude<iostream>voidfun(int&x,inty){intt=x;x=y;y=t;}intmain(){inta[2]={23,42};return0,}執(zhí)行后的輸出結(jié)果是()。A、42,42B、23,23C、23,42D、42,23標準答案:B知識點解析:此題考查是是函數(shù)的調(diào)用以及參數(shù)值的傳遞。函數(shù)fun中的第一個參數(shù)是引用傳值方式,是雙向的;第二個參數(shù)是按值傳遞,是單向的。11、有如下程序:#inc1ude<iostream>usingnamespacestd;intmain(){voidfunction(doubleval);doubleval;function(val),cout<<val,retum0;}voidfunction(doubleval){val=3;}編譯運行這個程序?qū)⒊霈F(xiàn)的情況是()。A、編譯出錯,無法運行B、輸出:3C、輸出:3.0D、輸出一個不確定的數(shù)標準答案:D知識點解析:此題考查的是函數(shù)參數(shù)的傳遞。C++語言中,函數(shù)在傳遞參數(shù)時,總是將實參的值傳遞給被調(diào)用函數(shù)的形參,即傳值調(diào)用。因此,在函數(shù)中對形參所作的任何操作都不會改變實參的值。12、有如下函數(shù)定義:voidfunc(inta,int&b){a++;b++;)若執(zhí)行代碼段:intx=0,y=1;func(x,y);則變量x和y的值分別是()。A、0和1B、1和1C、0和2D、1和2標準答案:C知識點解析:此題考查的是函數(shù)參數(shù)的傳遞方式。此題中形參a是普通參數(shù),即傳值調(diào)用,函數(shù)中對a增1不會影響到實參x的值;形參b是傳址調(diào)用,函數(shù)中對b增l同時會改變實參y的值。故最終結(jié)果是0和2。13、有如下程序:#inc1ude<iostream>usingnamespacestd;voidf1(int&x,int&y){intz=x;x=y;y=z;)voidf2(intx,inty){intz=x;x=y;y=z;}intmain(){intx=10,y=26;f1(x,y);f2(x,y);cout<<y<<end1;retum0;}運行時的輸出結(jié)果是()。A、10B、16C、26D、36標準答案:A知識點解析:子函數(shù)fl中的形參是引用變量,所以執(zhí)行子函數(shù)實現(xiàn)了變量x,y值的交換,變量x的值等’二26,而變量y的值等于10。而子函數(shù)f2中的形參是普通變量,因為C++的函數(shù)之間的參數(shù)傳遞是傳值,所以執(zhí)行函數(shù)f2不能實現(xiàn)變量x,y值的交換。14、有如下程序:#inc1ude<iostream>usingnamespacestd;voidf1(int&x){x++}voidf2(intx){++x;}intmain(){intx=10,y=12;f1(x);f2(y);cout<<x+y<<end1;return0;}運行這個程序的輸出結(jié)果是()。A、22B、23C、24D、25標準答案:B知識點解析:在函數(shù)f1(int&x){x++;}中,是對變量x的引用,所以當在main函數(shù)中執(zhí)行“f1(x);”語句后,變量x的值等于11,而在函數(shù)voidf2(intx){++x;}中,對變量x的傳遞調(diào)用,在main函數(shù)中執(zhí)行“f2(y);”語句后,變量y的值仍然等于12,所以輸出x+y的值等于23。15、有如下程序:#inc1ude<iostream>usingnamespacestd;classAA{intn;public:AA(intk):n(k){}intget(){retumn;}intget()const{returnn+1,}};intmain(){AAa(5);constAAb(6);cout<<a.get()<<b.get();+return0;}執(zhí)行后的輸出結(jié)果是()。A、55B、57C、75D、77標準答案:B知識點解析:此題考查的是常成員函數(shù)和函數(shù)的重載。所謂函數(shù)重載,是指同一個函數(shù)名可以對應(yīng)著多個函數(shù)實現(xiàn)?!銓ο骯既可以調(diào)用普通成員函數(shù)get,也可以調(diào)用常成員函數(shù)get,由于常成員函數(shù)不能更新對象的數(shù)據(jù)成員,所以題目中通過對象a調(diào)用的函數(shù)為常成員函數(shù):常對象b只能調(diào)用普通成員函數(shù)。16、下面是重載為非成員函數(shù)的運算符函數(shù)原型,其中錯誤的是()。A、Fractionoperator+(Fraction,F(xiàn)raction);B、Fractionoperator一(Fraction);C、Fraction&operator=(Fraction&,F(xiàn)raction);D、Fraction&operator+=(Fraction&,F(xiàn)raction);標準答案:C知識點解析:此題考查的是運算符重載。C++語言規(guī)定,“=”運算符只能作為成員函數(shù)重載。17、關(guān)于函數(shù)重載,下列敘述中錯誤的是()。A、重載函數(shù)的函數(shù)名必須相同B、重載函數(shù)必須在參數(shù)個數(shù)或類型上有所不同C、重載函數(shù)的返回值類型必須相同D、重載函數(shù)的函數(shù)體可以有所不同標準答案:C知識點解析:此題考查的是函數(shù)重載。在C++語言中,允許定義一系列函數(shù)名相同,但形參的個數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對返回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。18、有如下程序:#inc1ude<iostream>usingnamespacestd;classMyclass{public:Myclass(intx):val(x){}voidPrint()const{cout<<"const:val="<<Val<<’\t’;)voidPrint(){cout<<"yal="<<Val<<’t’;)private:intval,};intmain(){constMyclassobj1(10);Myclassobj2(20);obj1.Print();obj2.Print();return0;}程序的輸出結(jié)果是()。A、val=10const:val=20B、const:val=10const:val=20C、const:val=10val=20D、val=10val=20標準答案:C知識點解析:此題考查的是常成員函數(shù)的重載。常成員函數(shù)是使用const關(guān)鍵字說明的函數(shù)。const關(guān)鍵字可用于區(qū)分重載函數(shù)。此時,常對象調(diào)用常成員函數(shù),一般對象調(diào)用一般成員函數(shù);題目中的Print()就是通過const重載的兩個成員函數(shù),主函數(shù)中聲明的objl是常對象,obj2是一般對象。故輸出結(jié)果是const::val=10val=20。19、下列有關(guān)函數(shù)重載的敘述中,錯誤的是()。A、函數(shù)重載就是用相同的函數(shù)名定義多個函數(shù)B、重載函數(shù)的參數(shù)列表必須不同C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)可以帶有默認值標準答案:C知識點解析:此題考查的是函數(shù)重載的概念。在C++語言中,允許定義一系列函數(shù)名相同,但形參的個數(shù)和類型不完全相同的函數(shù),即函數(shù)的重載。重載函數(shù)對返回值類型不做要求,返回值類型也不參與區(qū)分函數(shù)的重載形式。故選項C錯誤。20、若已經(jīng)聲明了函數(shù)原型“voidfun(inta,doubleb=0.0);”,則下列重載函數(shù)聲明中正確的是()。A、voidfun(inta=90,doubleb=0.0);B、intfun(inta,doubleB);C、voidfun(doublea,intB);D、boolfun(inta,doubleb=0.0);標準答案:C知識點解析:函數(shù)重載的原則就是至少要在參數(shù)個數(shù)或參數(shù)類型上有所不同,且如果函數(shù)只是函數(shù)類型不同的,而其他完全相同,也不能作為重載函數(shù)來使用。21、對C++編譯器區(qū)分重載函數(shù)無任何意義的信息是()。A、參數(shù)類型B、參數(shù)個數(shù)C、返回值類型D、常成員函數(shù)關(guān)鍵字const標準答案:C知識點解析:如果重載函數(shù)只是函數(shù)類型不同,而參數(shù)個數(shù)和類型完全相同,C++編譯器則無法區(qū)別它們。22、已知函數(shù)fun的原型為intfun(int,int,int),下列重載函數(shù)原型中錯誤的是()。A、charfun(int,int);B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);標準答案:D知識點解析:重載函數(shù)至少要在參數(shù)個數(shù)或參數(shù)類型上不同。而選項D中的函數(shù)與原函數(shù)只是函數(shù)類型不同,而其他完全相同(參數(shù)個數(shù)及類型),則不能作為重載函數(shù)來使用。23、下列關(guān)于函數(shù)重載的敘述中,錯誤的是()。A、重載函數(shù)的參數(shù)個數(shù)可以不同B、重載函數(shù)的參數(shù)類型可以不同C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)個數(shù)或參數(shù)類型必須有所不同標準答案:C知識點解析:兩個或兩個以上的函數(shù),具有相同的函數(shù)名,但是形參的個數(shù)或者類型不同,編譯器根據(jù)實參和形參的類型及個數(shù)進行最佳匹配,自動確定調(diào)用哪個函數(shù),這就是函數(shù)的重載。24、下列有關(guān)內(nèi)聯(lián)函數(shù)的敘述中,正確的是()。A、內(nèi)聯(lián)函數(shù)在調(diào)用時發(fā)生控制轉(zhuǎn)移B、內(nèi)聯(lián)函數(shù)必須通過關(guān)鍵字inline來定義C、內(nèi)聯(lián)函數(shù)是通過編譯器來實現(xiàn)的D、內(nèi)聯(lián)函數(shù)函數(shù)體的最后一條語句必須是retum語句標準答案:C知識點解析:此題考查的是內(nèi)聯(lián)函數(shù)的概念。在調(diào)用時,內(nèi)聯(lián)函數(shù)會像宏函數(shù)一樣的展開,將調(diào)用表達式用內(nèi)聯(lián)函數(shù)體來替換所以它沒有一般函數(shù)的參數(shù)壓棧和和退棧操作,所以選項A錯誤:即便沒有使用inline說明,編譯器也會將在類的說明部分定義的函數(shù)認定為內(nèi)聯(lián)函數(shù),所以選項B錯誤;內(nèi)聯(lián)函數(shù)只是比普通函數(shù)有更高的執(zhí)行效率,所以選項D錯誤。25、為了取代C中帶參數(shù)的宏,在C++中使用()。A、重載函數(shù)B、內(nèi)聯(lián)函數(shù)C、遞歸函數(shù)D、友元函數(shù)標準答案:B知識點解析:此題考查的是內(nèi)聯(lián)函數(shù)。C++語言引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C語言的預(yù)處理宏函數(shù)。故選項B正確。26、為了提高函數(shù)調(diào)用的實際運行速度,可以將較簡單的函數(shù)定義為()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、遞歸函數(shù)D、函數(shù)模板標準答案:A知識點解析:C++引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C中的預(yù)處理宏函數(shù)。兩者的區(qū)別在于,宏函數(shù)是由預(yù)處理器對宏進行替換,而內(nèi)聯(lián)函數(shù)是通過編譯器來實現(xiàn)的。內(nèi)聯(lián)函數(shù)在調(diào)用時像宏函數(shù)一樣展開,所以它沒有一股函數(shù)的參數(shù)壓棧和退棧操作,減少了調(diào)用開銷,因此,內(nèi)聯(lián)函數(shù)比普通函數(shù)有更高的執(zhí)行效率。27、計算斐波那契數(shù)列第n項的函數(shù)定義如下:intfib(intn){if(n==0)return1;elseif(n=1)return2;elseretumfib(n一1)+fib(n一2);}若執(zhí)行函數(shù)調(diào)用表達式fib(2),函數(shù)fib被調(diào)用的次數(shù)是()。A、1B、2C、3D、4標準答案:B知識點解析:斐波那契數(shù)列是遞歸函數(shù),所以fib(2)=fib(1)+fib(0)=2+1=3。因而執(zhí)行函數(shù)調(diào)用表達式fib(2)時,函數(shù)fib被調(diào)用的次是2次。國家二級C++機試(函數(shù))模擬試卷第4套一、選擇題(本題共30題,每題1.0分,共30分。)1、下列關(guān)于函數(shù)的描述中,錯誤的是()。A、函數(shù)可以沒有返回值B、函數(shù)可以沒有參數(shù)C、函數(shù)可以是一個類的成員D、函數(shù)不能被定義為模板標準答案:D知識點解析:C++是一種強類型語言,它要求對于每一個實現(xiàn)都要有一個實例,這給程序員帶來很多不便性。函數(shù)模板提供一種用來自動生成各種類型函數(shù)實例的算法,程序員只需要初始化其中部分參數(shù)和返回值,或者都不初始化,只需要申明通用的類型,而函數(shù)體則不需要改變。2、下列關(guān)于C++函數(shù)的說明中,正確的是()。A、內(nèi)聯(lián)函數(shù)就是定義在另一個函數(shù)體內(nèi)部的函數(shù)B、函數(shù)體的最后一條語句必須是return語句C、標準C++要求在調(diào)用一個函數(shù)之前,必須先聲明其原型D、編譯器會根據(jù)函數(shù)的返回值類型和參數(shù)表來區(qū)分函數(shù)的不同重載形式標準答案:C知識點解析:此題考查的是有關(guān)函數(shù)的概念。內(nèi)聯(lián)函數(shù)是在函數(shù)定義之前加關(guān)鍵字inline來聲明的函數(shù),而不是定義在另一個函數(shù)體內(nèi)部的函數(shù),故選項A錯誤;無返回值的函數(shù)在執(zhí)行完最后一條語句后,會自動返回而不必加入return語句,故選項B錯誤;如果函數(shù)只是返回值類型不同,而其它完全相同,則不能作為函數(shù)重載來使用,故選項D錯誤。3、若有下面的函數(shù)調(diào)用:fun(a+b,3,max(n-1,b))則fun的實參個數(shù)是()。A、3B、4C、5D、6標準答案:A知識點解析:此題考查的是函數(shù)的調(diào)用。C++中函數(shù)調(diào)用的一般形式為:函數(shù)名(實參表),其中實參表是用逗號分隔的一系列表達式。因此,本題中fun()函數(shù)的實參表由a+b、3和max(n-1,b)組成。4、有如下程序:#includeusingnamespacestd;voidfunction2(intn);voidfunction1(intn){if(n<=0)return;function2(n-2);}voidfunction2(intn){if(n<=0)return;function1(n-1);}intmain(){function1(5);return0;}下列關(guān)于程序運行情況的描述中,正確的是()。A、function1運行1次,function2運行2次B、function1運行2次,function2運行1次C、function1運行2次,function2運行3次D、function1運行2次,function2運行2次標準答案:D知識點解析:在主函數(shù)中執(zhí)行functionl(5)時,會調(diào)用function2(3),function2(3)又會調(diào)用functionl(2),functionl(2)又會調(diào)用function2(0),到此相互調(diào)用結(jié)束。所以functionl()和。function2()各執(zhí)行了2次。5、假設(shè)函數(shù)fun已經(jīng)定義,其原型為“voidfun(inta,intb=7,char*p="**");”下列函數(shù)調(diào)用中錯誤的是()。A、fun(5)B、fun(5,8)C、fun(6,"##")D、fun(O,0,"==")標準答案:C知識點解析:根據(jù)函數(shù)fun()的定義,其前兩個形參為整型變量,第三個形參為字符型變量。所以在調(diào)用時,必須符合形參的數(shù)據(jù)類型,而選項C)的第二個實參的數(shù)據(jù)類型為字符串,不符合第二個形參的數(shù)據(jù)類型。6、已知函數(shù)FA調(diào)用FB,若要把這兩個函數(shù)定義在同一個文件中,則()。A、FA必須定義在FB之前B、FB必須定義在FA之前C、若FA定義在FB之后,則FA的原型必須出現(xiàn)在FB的定義之前D、若FB定義在FA之后,則FB的原型必須出現(xiàn)在FA的定義之前標準答案:D知識點解析:在C++中,在調(diào)用任何函數(shù)之前,必須確保它已有原型說明。函數(shù)原型說明通常放在程序文件的頭部,以使得該文件中所有函數(shù)都能調(diào)用它們。在本題中,當函數(shù)FA調(diào)用FB時,函數(shù)FB可以定義在FA的后面,但是FB的原型必須出現(xiàn)在FA的定義之前,因而選項D)為正確答案。7、下列函數(shù)原型聲明中,錯誤的是()。A、intfunction(intm,intn);B、intfunction(int,int);C、intfunction(intm=3,intn);D、intfunction(int&m,int&n);標準答案:C知識點解析:在C++中,函數(shù)在使用之前要預(yù)先聲明。這種聲明在標準C++中稱為函數(shù)原型,函數(shù)原型給出了函數(shù)名、返回類型以及在調(diào)用函數(shù)時必須提供的參數(shù)個數(shù)和類型。其語法為:<返回類型><函數(shù)名>(<形參列表>);使用函數(shù)原型說明有兩種形式:①直接使用函數(shù)定義的頭部,并在后面加上一個分號;②在函數(shù)原型說明中省略參數(shù)列表中的形參變量名,僅給出函數(shù)名、函數(shù)類型、參數(shù)個數(shù)及次序。在選項C)中,給出了形參變量m的初值。8、關(guān)于函數(shù)中的<返回類型>,下列表述中錯誤的是()。A、<返回類型>中有可能包含關(guān)鍵字intB、<返回類型>中有可能包含自定義標識符C、<返回類型>中有可能包含字符*D、<返回類型>中可能包含[]標準答案:D知識點解析:<返回類型>又稱為函數(shù)類型,表示一個函數(shù)所計算(或運行)的結(jié)果值的類型。它可以是C++中已定義的數(shù)據(jù)類型,也可能是用戶自定義的數(shù)據(jù)類型。但是不能包含[],因為符號[]不是一個數(shù)據(jù)類型。9、有如下程序:#includeusingnamespacestd;classA{public:staticinta;voidinit(){a=1;}A(inta=2){int();a++;}};intA::a=0:Aobj;intmain(){cout<A、0B、1C、2D、3標準答案:B知識點解析:此題實際考查的是變量作用域的屏蔽效應(yīng)。在C++中,當標識符的作用域發(fā)生重疊時,在一個函數(shù)中聲明的標識符可以屏蔽函數(shù)外聲明的標識符或全局標識符。聲明類A的全局對象時,構(gòu)造函數(shù)首先調(diào)用int函數(shù),但由于靜態(tài)成員變量a被構(gòu)造函數(shù)內(nèi)部的形參a所屏蔽所以a++改變的是形參a的值,對靜態(tài)成員變量a沒有影響。10、有如下程序:#includevoidfun(int&x,inty){intt=x;x=y;y=t;}intmain(){inta[2]={23,42};fun(a[1],a[0]);std::cout<A、42,42B、23,23C、23,42D、42,23標準答案:B知識點解析:此題考查是是函數(shù)的調(diào)用以及參數(shù)值的傳遞。函數(shù)fun中的第一個參數(shù)是引用傳值方式,是雙向的;第二個參數(shù)是按值傳遞,是單向的。11、有如下程序:#includeusingnamespacestd;intmain(){voidfunction(doubleval);dOubleval;function(val);cout<A、編譯出錯,無法運行B、輸出:3C、輸出:3.0D、輸出一個不確定的數(shù)標準答案:D知識點解析:此題考查的是函數(shù)參數(shù)的傳遞。C++語言中,函數(shù)在傳遞參數(shù)時,總是將實參的值傳遞給被調(diào)用函數(shù)的形參,即傳值調(diào)用。因此,在函數(shù)中對形參所作的任何操作都不會改變實參的值。12、有如下函數(shù)定義:voidfunc(inta,int&b){a++;b++;}若執(zhí)行代碼段:intx=0,y=1;func(x,y);則變量x和y的值分別是()。A、0和1B、1和1C、0和2D、1和2標準答案:C知識點解析:此題考查的是函數(shù)參數(shù)的傳遞方式。此題中形參a是普通參數(shù),即傳值調(diào)用,函數(shù)中對a增l不會影響到實參x的值;形參b是傳址調(diào)用,函數(shù)中對b增1同時會改變實參v的值。故最終結(jié)果是0和2。13、已知函數(shù)f的原型是voidf(int*a,long&b);,變量v1、V2的定義是:intv1:longv2;下列調(diào)用語句中正確的是()。A、f(v1,&v2);B、f(v1,V2);C、f(&v1,&V2);D、f(&v1,v2);標準答案:D知識點解析:此題考查的是函數(shù)的調(diào)用。因為變量的定義是intv1;longv2,而函數(shù)f()的第一個參數(shù)是指針,第二個參數(shù)是引用,所以選項D為正確引用。14、在下列原型所示的C++函數(shù)中,按“傳值”方式傳遞參數(shù)的是()。A、voidf1(intx);B、voidf2(int-x);C、voidf3(constint木x);D、voidf4(int&x);標準答案:A知識點解析:傳值方式是將實參復(fù)制到形參中,因此實參和形參是兩個不同的變量,有各自的存儲空間,可以把函數(shù)的形參看做是函數(shù)的局部變量。其中BC選項為按低值傳遞D選賢為按引用傳遞。15、有如下程序:#includeusingnamespacestd;voidf1(int&X,int&y){intz=x;x=y;y=z;}voidf2(intx,inty){intz=x;x=y;y==z;}intmain(){intx=10,y=26;fl(x,y);f2(x,y);cout<A、10B、16C、26D、36標準答案:A知識點解析:子函數(shù)n中的形參是引用變量,所以執(zhí)行子函數(shù)實現(xiàn)了變量x,y值的交換,變量x的值等于26,而變量y的值等于10。而子函數(shù)f2中的形參是普通變量,因為C++的函數(shù)之間的參數(shù)傳遞是傳值,所以執(zhí)行函數(shù)f2不能實現(xiàn)變量x,y值的交換。16、已知函數(shù)f的原型是“voidflint*x,int&y);”,變量v1、v2的定義是“intv1,v2;”,下列調(diào)用語句中,正確的是()。A、f(v1,V2);B、f(v1,&V2);C、f(&v1,v2);D、f(&v1,&v2);標準答案:C知識點解析:在函數(shù)f的形參表達式中第一個形參為整型指針變量,第二個為整型引用變量,所以用實參v1的指針初始化第一個形參,用實參v2初始化第二形參。17、有如下程序:#includeusingnamespacestd;voidf1(int&x){x++;}voidf2(intx){++x;}intmain(){intx=10,y=12;f1(X);f2(y);cout<A、22B、23C、24D、25標準答案:B知識點解析:在函數(shù)n(int&x){x++;}中,是對變量x的引用,所以當在main函數(shù)中執(zhí)行“n(x);”語句后,變量x的值等于11,而在函數(shù)voidf2(intx){++x;}中,對變量x的傳遞調(diào)用,在main函數(shù)中執(zhí)行“f2(y);”語句后,變量y的值仍然等于12,所以輸出x+y的值等于23。18、有如下程序:#includeusingnamespacestd;classAA{intn:public:AA(intk):n(k){)intget(){returnn;}intgetoconst{returnn+1;}};intmain(){AAa(5);constAAb(6);cout<A、55B、57C、75D、77標準答案:B知識點解析:此題考查的是常成員函數(shù)和函數(shù)的重載。所謂函數(shù)重載,是指同一個函數(shù)名可以對應(yīng)著多個函數(shù)實現(xiàn)。一般對象a既可以調(diào)用普通成員函數(shù)get,也可以調(diào)用常成員函數(shù)get,由于常成員函數(shù)不能更新對象的數(shù)據(jù)成員,所以題目中通過對象a調(diào)用的函數(shù)為常成員函數(shù);常對象b只能調(diào)用普通成員函數(shù)。19、下面是重載為非成員函數(shù)的運算符函數(shù)原型,其中錯誤的是()。A、Fractionoperator+(Fraction,F(xiàn)raction);B、Fractionoperator一(Fraction);C、Fraction&ope
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版KTV食品安全管理與監(jiān)控合同3篇
- 二零二五版電力設(shè)備供應(yīng)商能源采購及節(jié)能減排合同3篇
- 二零二五年度木工培訓(xùn)與技術(shù)承包合同4篇
- 2025年度體育場館場地平整及體育設(shè)施安裝合同4篇
- 二零二五年度出口合同執(zhí)行流程專業(yè)指導(dǎo)合同4篇
- 2025版圖書館圖書采購與版權(quán)審查合同3篇
- 2025年度企業(yè)采購合同付款臺賬管理及風險防控指南3篇
- 二零二四年度信息產(chǎn)業(yè)委托擔保合作協(xié)議3篇
- 二零二四年度信用證欺詐風險防范合同范本3篇
- 二零二五年度汽車租賃公司車輛質(zhì)押擔保協(xié)議8篇
- 中央2025年國務(wù)院發(fā)展研究中心有關(guān)直屬事業(yè)單位招聘19人筆試歷年參考題庫附帶答案詳解
- 外呼合作協(xié)議
- 小學(xué)二年級100以內(nèi)進退位加減法800道題
- 保險公司2025年工作總結(jié)與2025年工作計劃
- 2024年公司領(lǐng)導(dǎo)在新年動員會上的講話樣本(3篇)
- 眼科護理進修專題匯報
- GB/T 33629-2024風能發(fā)電系統(tǒng)雷電防護
- 全球250個國家中英文名稱及縮寫
- 深靜脈血栓(DVT)課件
- 2023年四川省廣元市中考數(shù)學(xué)試卷
- GB/T 19885-2005聲學(xué)隔聲間的隔聲性能測定實驗室和現(xiàn)場測量
評論
0/150
提交評論