




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級(C++)筆試模擬試卷26(共9套)(共426題)國家二級(C++)筆試模擬試卷第1套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、在一個長度為n的線性表中刪除一個元素,最壞情況下需要移動的數(shù)據(jù)元素數(shù)目為()。A、1B、n-1C、n+1D、n/2標準答案:2知識點解析:在一般情況下,要刪除第i個元素時,首先是從第i+1個元素開始,直到第n個元素之間共n-i個元素依次向前移動一個位置,刪除結(jié)束后,線性表的長度減1。最壞情況指的是刪除線性表的第一個元素,則需要移動表中第1個元素以外所有的元素,答案為B。2、下列敘述中,正確的是()。A、入棧運算只需將新元素插到棧頂指針指向的位置B、出棧運算只需將棧頂元素賦給一個指定變量C、出棧運算與讀棧頂元素是相同的操作D、讀棧頂元素不刪除棧頂元素標準答案:8知識點解析:入棧運算需先將棧頂指針加1,然后將新元素插到棧頂指針指向的位置,選項A是錯誤的。出棧運算需將棧頂元素賦給一個指定變量,然后將棧頂指針減1,選項B是錯誤的。出棧運算與讀棧頂元素不同之處在于讀棧頂元素不刪除棧頂元素。答案是選項D。3、在一個單鏈表HL中,若要向表頭插入一個由指針p指向的節(jié)點,則需要執(zhí)行語句序列()。A、HL=p;p->next=HL;B、p->next=HL;HL=p;C、p->next=HL;p=HL;D、p->next=HL->next;HL->next=p標準答案:2知識點解析:HL為鏈表的頭指針。HL指示鏈表中第一個節(jié)點的存儲位置,在表頭插入一個由指針p指向的節(jié)點后,頭指針指向p,p的指針域指向原鏈表中第一個節(jié)點4、已知二叉樹的前序序列為ABDCEFG,中序序列為DBCAFEG,則其后序序列為()。A、DCBAFGEB、DCBFGEAC、DCBFEGAD、DCBGFEA標準答案:2知識點解析:本題先可用排除法,由二叉樹的前序序列為ABDCEFG可知:二叉樹的根節(jié)點為A,因此選項A錯誤。通過分析可知,B、E是A的左右子節(jié)點,D、C是B的左右子節(jié)點,F(xiàn)、G是E的左右子節(jié)點。5、一組記錄的排序碼為(46,79,56,38,40,84),則利用快速排序的方法,以第一個記錄為基準得到的一次劃分結(jié)果為()。A、38,40,46,56,79,84B、40,38,46,79,56,84C、40,38,46,56,79,84D、40,38,46,84,56,79標準答案:2知識點解析:快速排序的思想是:從線性表中選取一元素,如本題中的46,將線性表后面小于46的元素移到前邊,而前面大于46的元素移到后邊。本題中46是第一個元素,因此只需將線性表后面小于46的元素移到前邊。6、下列關(guān)于嚴格控制goto語句使用的理解中,錯誤的是()。A、用一個非結(jié)構(gòu)化的程序設(shè)計語言實現(xiàn)一個結(jié)構(gòu)化的構(gòu)造B、若不使用goto語句會使功能模糊C、在某種可以改善而不是損害程序可讀性的情況下D、goto語句可以完全不用標準答案:8知識點解析:goto語句會造成程序的混亂,但在某些地方goto語句還是需要的,若不使用goto語句會使功能模糊。7、下面不屬于軟件設(shè)計原則的是()。A、抽象B、模塊化C、自底向上D、信息隱蔽標準答案:4知識點解析:在軟件開發(fā)過程中,必須遵循軟件工程的基本原則。這些原則使用于所有軟件項目。這些基本原則包括:抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性、可驗證性。選項C是錯誤的,它是一種軟件開發(fā)的方法,而不屬于軟件工程的基本原則。8、規(guī)范化理論中消除其中多余的數(shù)據(jù)相關(guān)性是靠分解()。A、關(guān)系運算B、內(nèi)模式C、外模式D、視圖標準答案:1知識點解析:本題考核數(shù)據(jù)庫規(guī)范化理論。數(shù)據(jù)庫規(guī)范化的基本思想是逐步消除數(shù)據(jù)依賴中不合適的部分,根本思想是通過分解關(guān)系運算來消除多余的數(shù)據(jù)相關(guān)性。9、常用的關(guān)系運算是關(guān)系代數(shù)和()。A、集合代數(shù)B、邏輯演算C、關(guān)系演算D、字段標準答案:4知識點解析:本題考核關(guān)系代數(shù)運算。關(guān)系運算包括關(guān)系代數(shù)和關(guān)系演算。10、源程序中應包含一些內(nèi)部文檔,以幫助閱讀和理解源程序,源程序的內(nèi)部文檔通常包括選擇合適的標識符、注解和()。A、程序的視覺組織B、盡量不用或少用GOTO語句C、檢查輸入數(shù)據(jù)的有效性D、設(shè)計良好的輸出報表標準答案:1知識點解析:源程序文檔化主要包括3個方面的內(nèi)容:標識符的命名、程序中添加注釋以及程序的視覺組織。二、選擇題(本題共20題,每題1.0分,共20分。)11、下列關(guān)于類概念的描述中,錯誤的是()。A、類是抽象數(shù)據(jù)類型的實現(xiàn)B、類是具有共同行為的若干對象的統(tǒng)一描述體C、類是創(chuàng)建對象的模板D、類就是C語言中的結(jié)構(gòu)類型標準答案:8知識點解析:類是創(chuàng)建對象的模板,它包含著所創(chuàng)建對象的狀態(tài)描述和方法的定義。類的完整描述包含了外部接口和內(nèi)部算法以及數(shù)據(jù)結(jié)構(gòu)的形式。12、字符串常量"hello"的字符個數(shù)是()。A、3B、4C、5D、6標準答案:8知識點解析:本題考核的是字符串常量這個知識點。字符串常量實際上是一個數(shù)組,組成數(shù)據(jù)的字符除顯式給出的外,還包括字符結(jié)尾處標識字符串結(jié)束的符號’\0’。所以字符串的字符個數(shù)等于字符個數(shù)加1,C++語言編譯器會自動在字符串的末尾加上’\0’,作為字符串結(jié)束標識。故本題答案選項是:D。13、“or(intx=0,y=0;!x&&y<=5;y++)”語句執(zhí)行循環(huán)的次數(shù)是()。A、0B、5C、6D、無數(shù)次標準答案:4知識點解析:此題是典型的考題。題中x=0,則!x永遠為真,對于條件表達式“!x&&y<=5”只考慮“y<=5”,由于每次循環(huán)y都增加1,而且y從0開始到5。所以可知,總共循環(huán)了6次。14、有如下程序段,請指出”p所代表的是()。int**p,*s,k=20;S=&k;p=&s;A、sB、&kC、*pD、k標準答案:8知識點解析:在程序中,指針變量p是int類型的指針類型。從程序中可看出:①賦值語句“s=&k;”,使s指向k,即s的值為k在內(nèi)存中地址,*s代表k的值;②賦值語句“p=&s;”,使p指向s,*p代表s中的值,即k在內(nèi)存中的地址:③因為*p代表s中的值,即k在內(nèi)存中的地址,所以“p代表的是k的值20。15、在函數(shù)聲明中,下面哪項是不必要的()。A、函數(shù)參數(shù)的類型和參數(shù)名B、函數(shù)名C、函數(shù)的類型D、函數(shù)體標準答案:8知識點解析:本題考核函數(shù)的原型聲明格式。解析此題時,要注意函數(shù)定義和函數(shù)聲明的區(qū)別。①C++中每一個函數(shù)的定義都是由4個部分組成的,即函數(shù)類型、函數(shù)名、函數(shù)參數(shù)表和函數(shù)體。②函數(shù)的聲明是為了消除函數(shù)定義的位置影響。不管函數(shù)是在何處定義的,只要在調(diào)用前進行函數(shù)的聲明,就可保證函數(shù)調(diào)用的合法性。③函數(shù)原型的說明格式為:<類型><函數(shù)名>(<形參表>);16、若有以下函數(shù)調(diào)用語句:f(m+n,x+y,f(m+n,z,(x,y)));在此函數(shù)調(diào)用語句中實參的個數(shù)是()。A、6B、5C、4D、3標準答案:8知識點解析:本題考察對函數(shù)參數(shù)表的掌握程度。調(diào)用函數(shù)時,在函數(shù)名后面跟參數(shù),參數(shù)用逗號隔開。調(diào)用時,實參與形參的個數(shù)相等,類型一致,且按順序一一對應傳遞數(shù)據(jù),同時實參是實際調(diào)用函數(shù)時所給定的有確定值的常量、變量或表達式。根據(jù)以上知識點,可以得到此函數(shù)調(diào)用語句中實參的個數(shù)是3。故本題答案是:D。17、下列關(guān)于類和對象描述中,錯誤的是()。A、對象(Object)是現(xiàn)實世界中的客觀事物,對象具有確定的屬性B、類是具有相同屬性和行為的一組對象的集合C、對象是類的抽象,類是對象的實例D、類是對象的抽象,對象是類的實例標準答案:4知識點解析:C++中,類是用戶自定義的一種數(shù)據(jù)類型,對象是類的實例,類定義了屬于該類的所有對象的共同特性。一個類作為一種數(shù)據(jù)類型,它可以定義多個對象。18、下面關(guān)于繼承機制的描述中,不正確的是()。A、派生類不僅可以繼承基類的成員,也可以添加自己的成員B、設(shè)置protected成員是為派生類訪問基類成員之用C、采用不同的繼承方式,將限制派生類對基類成員的訪問D、采用私有繼承,派生類只能得到基類的公有成員標準答案:8知識點解析:本題主要考察C++中繼承機制的特點。C++中允許利用已有的數(shù)據(jù)類型來定義新的數(shù)據(jù)類型,這種機制稱為繼承機制,并稱已存在的用來派生新類的類稱為基類,由已存在的類派生出的新類稱為派生類。派生類有3種繼承方式可以采用,即public、private和protected方式。派生類除了繼承基類中的數(shù)據(jù)成員和成員函數(shù)外,還可以添加具有自身特點的成員,這是繼承機制的真正用意所在。因此選項A的敘述正確。采用不同的繼承方式,將限制派生類對基類成員的訪問權(quán)限,因此選項C的敘述正確。對于類本身,protected成員和private成員對外的訪問權(quán)限是相同的,即外界函數(shù)都無法直接訪問這兩類成員。對于類作為基類被繼承產(chǎn)生派生類時,protected成員又和public成員性質(zhì)相同,即在所有繼承方式下都可以被派生類所繼承,在public繼承時可以被派生類對象訪問,在protected和private繼承方式下無法被派生類的子類訪問。這也正是C++設(shè)置protected訪問權(quán)限成員的真正用途,即為派生類繼承基類隱蔽成員之用途。因此選項B的敘述正確。19、實現(xiàn)運行時的多態(tài)性要使用()。A、重載函數(shù)B、析構(gòu)函數(shù)C、構(gòu)造函數(shù)D、虛函數(shù)標準答案:8知識點解析:本題考核虛函數(shù)的應用。動態(tài)聯(lián)編一直要到程序運行時才能確定調(diào)用哪個函數(shù)。虛函數(shù)是實現(xiàn)動態(tài)聯(lián)編的必要條件之一。沒有虛函數(shù)一定不能實現(xiàn)動態(tài)聯(lián)編,但有虛函數(shù)存在時,必須同時滿足下列條件,才能實現(xiàn)動態(tài)聯(lián)編:類之間滿足子類型關(guān)系;調(diào)用虛函數(shù)操作的是指向?qū)ο蟮闹羔樆驅(qū)ο笠?,或者是由成員函數(shù)調(diào)用虛函數(shù)。20、下列對模板的聲明中,正確的是()。A、temvlate<T>B、template<classT1,T2>C、temvlate<classT1,classT2>D、template<classT1;classT2>標準答案:4知識點解析:本題考核模板的定義。模板定義的<類型參數(shù)表>中包含一個或多個由逗號分隔的類型參數(shù)項,每一項由關(guān)鍵詞class后跟一個用戶命名的標識符,此標識符為類型參數(shù),它不是一種數(shù)據(jù)類型,但可以同一般數(shù)據(jù)類型一樣使用。在使用類模板時,必須將其實例化,即用實際的數(shù)據(jù)類型代替它。21、若有以下程序段:#include<iostream>usingnamespacestd;intmain(){inta[]={1,4,5};int*p=&a[0],x=6,y,z;for(y=0;y<3;y++)z=((*(p+y)<x)?*(p+y):x);cout<<z<<end1;return0;}程序運行后的輸出結(jié)果是()。A、1B、4C、5D、2標準答案:4知識點解析:本題考核指針的運算。程序首先定義了一整型數(shù)組a,并賦初值1,4,5。即a[0],a[1]和a[2]的值分別為1,4和5。程序還定義了一個整型指針p,并將其初始化且指向數(shù)組元素a[0]。在for循環(huán)語句中,賦值語句“z=((*(p+y)<x)?*(p+y):x);”可等價為“z=(a[y]<x)?a[y]:x”。因為表達式中的“*(p+y)=p[y]=a[y]”。for語句每循環(huán)一次,就給變量z重新賦值一次,z的值其實就是數(shù)組和x相比較,將數(shù)組a中的最大值賦給z。當y=2后,退出循環(huán),輸出結(jié)果是5。22、以下4個程序中,不能實現(xiàn)兩個實參值進行交換的是()。A、voidswap(float*p,float*q){float*t,a;t=&a;t=p;*p=*q;*q=*t;}voidmain(){floatx=8.0;y=9.0;swap(&x,&y);cout<<x<<","<<y<<B、voidswap(float*p,float*q){floata;a=*p;*p=*q;*q=a;}voidmain(){floatx=8.0;y=9.0;swap(&x,&y);cout<<x<<","<<y<<end1;C、voidswap(float*p,float*q){floatx;x=*p;*p=*q;*q=x;}voidmain(){floata,b.;*a=8.0;*b=9.0;swap(a,b);D、voidswap(float&p,float&q){floata;a=p;p=q;q=a;}voidmain(){floata=8.0,b=9.0;swap(a,b);cout<<x<<","<<y<<標準答案:4知識點解析:本題考核指針和引用作為函數(shù)形參。做此類題時,應學會整體比較,要不然花費的時間不亞于一個大的編程題。①首先,這4個程序都是調(diào)用swap函數(shù),而且目的都一致,交換傳入的兩個實參值。②分析被調(diào)函數(shù)swap()。在選項A、B和C中都是指針作為形參,只有在選項D中,函數(shù)swap()是以引用作為形參。由指針和引用作為函數(shù)形參的特點可知,只要調(diào)用了函數(shù),就能達到交換兩個實參變量的值,所以這幾個被調(diào)函數(shù)沒有問題。③再看主函數(shù)。在選項C中,沒有定義指針類型變量,而是直接給指針變量賦值:“floata,b;*a=8.0;*b=9.0;”,這顯然是非法的。想直接開辟存儲空間,交換兩個常量值,是不可能的。所以只有選項C是錯誤的。23、有以下程序:#include<iostream>#include<string>usingnamespacestd;intmain(){chars[]="\n123\\";cout<<strlen(s)<<","<<sizeof(s)<<end1;return0;}A、賦初值的字符串有錯B、6,7C、5,6D、6,6標準答案:4知識點解析:本題考核字符串的長度和字符型數(shù)組所占的字節(jié)數(shù)。本題在定義字符數(shù)組時沒有定義數(shù)組長度,但賦給數(shù)組初值,初值的個數(shù)即為數(shù)組的長度。故數(shù)組長度為6(包括’\0’)。字符串的長度為有效字符的個數(shù),為5。所以程序最后輸出5,6。24、若有如下程序:#include<iostream>usingnamespacestd;ints=0;classsample{staticintn;public:sample(inti){n=i;}staticvoidadd(){s+=n;}};intsample::s=0;intmain(){samplea(2),b(5);sample::add();cout<<s<<end1;return0;}程序運行后的輸出結(jié)果是()。A、2B、5C、7D、3標準答案:2知識點解析:本題考核靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)的應用。程序中定義一個類sample,它包括一個靜態(tài)數(shù)據(jù)成員n和一個靜態(tài)成員函數(shù)add(),并在類的構(gòu)造函數(shù)中給類私有靜態(tài)數(shù)據(jù)成員n賦值。在主函數(shù)中,定義對象a(2)時,通過構(gòu)造函數(shù)使靜態(tài)數(shù)據(jù)成員n的值變?yōu)?,在定義對象b(5)時,通過構(gòu)造函數(shù)使靜態(tài)數(shù)據(jù)成員n=5(覆蓋了前面的n=2),再執(zhí)行“sample::add()”使全局變量s=5。25、有以下程序:#include<iostream>usingnamespacestd;classB{private:inta,b;public:B(){}B(inti,intj);voidprintb();};classA{BC;public:A(){}A(inti,intj);voidprinta();};A::A(inti,intj):c(i,j){}voidA::printa(){c.printb();}B::B(inti,intj){a=i;b=j;}voidB::printb(){cout<<a<<","<<b<<end1;}intmain(){Am(7,8);m.printa();return0;}該程序運行后的輸出結(jié)果是()。A、5,6B、7,8C、8,9D、9,10標準答案:2知識點解析:本題考核類的定義和應用。程序首先定義了兩個類A和B。在類A中,其私有數(shù)據(jù)成員c為類B的對象。類A的成員函數(shù)printa()中,調(diào)用私有成員對象c的成員函數(shù)printb()輸出類B私有數(shù)據(jù)成員a和b的值。26、為了使程序的輸出的正確結(jié)果為:Nowis2004.7.1010:10:10.那么應在下列程序劃線處填入的正確語句是()。那么應在下列程序劃線處填入的正確語句是()。#include<iostream>usingnamespacestd;classTIME;classDATE{public:DATE(inty=2004,intm=1,intd=1){year=y;month=m;day=d;}friendvoidDateTime(DATE&d,TIME&t);private:intyear,month,day;};classTIME{public:TIME(ihth=0,intm=0,ints=0){hour=h;minute=m;second=s;}friendvoidDateTime(DATE&d,TIME&t);private:inthour,minute,second;};______________________//函數(shù)DateTime的首部{cout<<"Nowis"<<d.year<<’.’<<d.month<<’.’<<d.day<<’’<<t.hour<<":"<<t.minute<<’:’<<t.second<<’.’<<end1;}intmain(){DATEd(2004,7,10);TIMEt(10,10,10);DateTime(d,t);return0;}A、voidDateTime(DATE&d,TIME&t)B、voidTIME::DateTime(DATE&d,TIME&t)constC、friendvoidDateTime(DATE&d,TIME&t)D、voidDATE::DateTime(DATE&d,TIME&t)標準答案:1知識點解析:本題程序中,分別在類DATE和TIME中將普通函數(shù)DateTime聲明為友元函數(shù),但該友元函數(shù)的定義是在類體外進行的。友元函數(shù)是一個普通函數(shù),它雖然可以訪問類對象的私有成員,但它畢竟不是類中的成員函數(shù),因此在類體外定義友元函數(shù)時,不需要像成員函數(shù)一樣在函數(shù)名前加上“類名::”。函數(shù)首部的其他定義照抄類中友元函數(shù)的聲明。所以函數(shù)DateTime的首部為voidDateTime(DATE&d;TIME&t),即選項A。27、若有以下程序:#include<iostream>usingnamespacestd;classA{private:intx;protected:inty;public:intz;voidsetx(inti){x=i;}intgetx(){returnx;};classB:protectedA{public:voidsetvalue(inta,intb,intc){setx(a);y=b;z=c;}voiddisplay(){cout<<getx()<<","<<y<<","<<z<<","<<end1;}};intmain(){Bobj;obj.setvalue(5,6,7);obj.display();return0;}程序運行后的輸出結(jié)果是()。A、產(chǎn)生語法錯誤B、7,6,5C、5,6,7D、7,5,6標準答案:4知識點解析:本題考核保護繼承中對類成員的訪問權(quán)限。①在保護繼承中,基類公有成員和保護成員都以保護成員身份出現(xiàn)在派生類中,而基類私有成員不可訪問。②基類的公有成員和保護成員被繼承以后作為派生類的保護成員,這樣,派生類的其他成員可以直接訪問它們。③由保護派.生的類聲明的對象,不能訪問任何基類的成員。在本題中,基類A中的數(shù)據(jù)成員y和函數(shù)setx,經(jīng)過保護繼承以后,在派生類B中成為保護成員,派生類B的對象不能訪問它們。而派生類B中的函數(shù)setvalue和display都是公有成員,可以通過對象對它們進行訪問。所以程序中對各成員的訪問是正確的。本程序的功能是對類中各數(shù)據(jù)成員進行賦值,然后查看賦值是否正確。28、若有以下程序:#include<iostream>usingnamespacestd;classA{protected:inta;public:A(){a=10;}};classA1:publicA{public:A1(){a=a+1;}};classA2:publicA{public:A2(){a=a+2;}};classB:publicA1,publicA2{public:B(){}voidprint(){cout<<a<<end1;}};intmain(){Bobj;obj.print();return0;}程序運行后的輸出結(jié)果是()。A、產(chǎn)生語法錯誤B、11C、12D、10標準答案:1知識點解析:本題考核派生類的定義和使用。本程序有語法錯誤,這是由于類B中的print函數(shù)中的語句“cout<<a<<end1;”要輸出成員a的值,從而產(chǎn)生了二義性。分析如下:程序中定義了類A,類A1和類A2都是在類A的基礎(chǔ)上以公有繼承方式產(chǎn)生的派生類,而類B是在類A1和類A2的基礎(chǔ)上經(jīng)過多重繼承方式產(chǎn)生的派生類,所以在類B中成員a有兩個拷貝,系統(tǒng)無法區(qū)分是從A1繼承過來的a,還從A2類繼承過來的a。修改方法有以下兩種:①在被訪問的成員加上作用域分辨符“::”。將類B中的print()函數(shù)體中語句改為:cout<<A1::a<<end1;或cout<<A2::a<<end1;但兩者的輸出結(jié)果不同,前者輸出11,而后者輸出12。②采用虛基類的方法。就是在定義A1和A2時,在派生方式前加上關(guān)鍵詞“virtual”。29、有以下程序:#include<iostream>usingnamespacestd;classBase{public:Base(){}virtualvoidwho(){cout<<"BaseClass"<<end1;}~Base(){}};classDerivel:publicBase{public:voidwho(){cout<<"DerivelClass"<<end1;}};classDerive2:publicBase{public:voidwho(){cout<<"Derive2Class"<<end1;}};intmain(){Base*p;Derivelobj1;Derive2obj2;p=&obj1;p=&obj2;p->who();return0;}執(zhí)行程序后的輸出結(jié)果是()。A、BaseClassB、DerivelClassC、Derive2ClassD、程序編譯時出錯標準答案:4知識點解析:本題考核虛函數(shù)的應用。本題中,先定義了一個基類Base,它含有一個虛成員函數(shù)who(),隨后定義的類Derivel和Derive2都是基類Base的公有派生類。在主函數(shù)中定義了一個指向Base類的指針,它也被允許指向其派生類。在執(zhí)行過程中,不斷改變它所指向的對象,p->who就能調(diào)用不同的函數(shù)實現(xiàn)。這是因為使用了虛函數(shù),因而進行動態(tài)聯(lián)編。程序最后把指針p指向派生類Derive2的對象,由于函數(shù)who()在基類Base中是虛函數(shù),所以系統(tǒng)調(diào)用Derive2中的who()函數(shù),最后輸出Derive2Class。30、在進行了任何C++流的操作后,都可以用C++流的有關(guān)成員函數(shù)檢測流的狀態(tài),其中用于是否進行了非法操作的函數(shù)名是()。A、failB、eofC、badD、good標準答案:4知識點解析:C++中可以用文件流對象的下列成員函數(shù)來判別文件流的當前狀態(tài)。①函數(shù)isopen判定流對象是否與一個打開的文件相聯(lián)系,若是,返回true,否則返回false。②函數(shù)good剛進行的操作成功時返回true,否則返回false。③函數(shù)fail與good()相反,剛進行的操作失敗時返回true,否則返回false。④函數(shù)bad如果進行了非法操作返回true,否則返回false。⑤函數(shù)eof進行輸入操作時,若到達文件尾返回true,否則返回false。其中,eof函數(shù)只能用于輸入流操作。三、公共基礎(chǔ)填空題(本題共4題,每題1.0分,共4分。)31、已知序列{17,18,60,40,7,32,73,65,85},采用冒泡排序法對該序列作降序排序時,第4趟的結(jié)果是【】。標準答案:60,40,73,65,85,32,18,17,7知識點解析:冒泡排序法的算法基本思想是:通過無序區(qū)中相鄰記錄關(guān)鍵詞間的比較和位置交換,使關(guān)鍵詞最小的記錄如氣泡一般逐漸往上“漂浮”直至“水面”。整個算法是從最下面的記錄開始,對每兩個相鄰的關(guān)鍵詞進行比較,且使關(guān)鍵詞較小的記錄換至關(guān)鍵詞較大的記錄之前,使得經(jīng)過一趟冒泡排序后,關(guān)鍵詞最小的記錄達到最上端。接著,再在剩下的記錄中找關(guān)鍵詞最小的記錄,并把它換在第2個位置上。依此類推,一直到所有記錄都有序為止。根據(jù)這種思想,每趟的排序結(jié)果如下:初始:17,18,60,40,7,32,73,65,85第一趟18,60,40,17,32,73,65,85,7第二趟60,40,18,32,73,65,85,17,7第三趟60,40,32,.73,65,85,18,17,7第四趟60,40,73,65,85,32,18,17,7第五趟60,73,65,85,40,32,18,17,7第六趟73,65,85,60,40,32,18,17,7第七趟73,85,65,60,40,32,18,17,7第八趟85,73,65,60,40,32,18,17,732、【】是按照程序語句行的自然順序,依次執(zhí)行語句。標準答案:順序執(zhí)行知識點解析:結(jié)構(gòu)化程序設(shè)計語言僅僅使用順序、選擇和循環(huán)3種基本結(jié)構(gòu)。其中,順序結(jié)構(gòu)是最基本、最常用的結(jié)構(gòu),它采用順序執(zhí)行的結(jié)構(gòu),即按照程序語句行的自然順序,依次執(zhí)行語句。33、調(diào)試方法中的【】最適合小規(guī)模程序的排錯。標準答案:回溯法知識點解析:這種調(diào)試方法是從出現(xiàn)錯誤征兆處開始,人工沿控制流程往回追蹤,直至發(fā)現(xiàn)出錯的根源。這是在小程序中常用的一種有效的調(diào)試方法。程序變大后,可能的回溯路線顯著增加,以致人工進行完全回溯可望而不可及。例如,程序中發(fā)現(xiàn)錯誤處是某個打印語句。通過輸出值可推斷程序在這一點上變量的值,再從這一點出發(fā)?;厮莩绦虻膱?zhí)行過程,反復考慮:“如果程序在這一點上的狀態(tài)(變量的值)是這樣,那么程序在上一點的狀態(tài)一定是這樣……”,直到找到錯誤的位置。34、若a=12,b=14,c=0,則表達式“((y=(a>B)?a:B)>C)?y:c”的值為【】。標準答案:14知識點解析:條件運算符是一種在兩個表達式中選擇一個的操作,它是C++中惟一的三元運算符。在本題中,先計算“(a>B)?a:b”,因為ac的邏輯值為真,所以表達式的值為y的值,即14。四、填空題(本題共7題,每題1.0分,共7分。)35、函數(shù)sstrcmp()的功能是對兩個字符串進行比較。當s所指字符串和t所指字符串相等時,返回值為0:當s所指字符串大于t所指字符串時,返回值大于0;當s所指字符串大于t所指字符串時,返回值大于0(功能等同于strcmp())。請?zhí)羁?。intSstrcmp(char*S,char*t){while(*s&&*t&&*S==*t){s++;t++;}return【】;}標準答案:*s-*t或s[0]-t[0]知識點解析:函數(shù)sstrcmp()有兩個字符型指針變量,用來指向兩個字符串。比較兩個字符串的大小方法是:從第1個字符開始依次向后比較,若對應的字符相等,則接著比較下一個字符,一直到兩個字符串中的對應字符不相等,或有一個為“\0”,此時對應字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為’\0’,且*s和*t相同??瞻滋帒钊敕祷刂?,即“*s-*t”或其等價形式。36、若有以下程序:#include<iostream>usingnamespacestd;intf(intx,inty){return(y-x)*x;}intmain(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));cout<<d<<<end1;return0;}執(zhí)行后的輸出結(jié)果是【】。標準答案:9知識點解析:本題考核函數(shù)的嵌套調(diào)用。在主函數(shù)中執(zhí)行語句“d=f(f(a,b),f(a,c));”調(diào)用了3次f()函數(shù):調(diào)用f(a,b)得到的值為3,調(diào)用f(a,c)得到的值為6,調(diào)用f(3,6)得到的值為9。37、如果一個數(shù)組中的每個元素都是同一類的對象,則該數(shù)組被稱為【】。標準答案:對象數(shù)組知識點解析:對象數(shù)組是指數(shù)組元素為對象的數(shù)組,該數(shù)組中的每一個元素都是同一個類的對象。38、表達式c3=c1.operator+(c2)或c3=operator+(c1,c2)還可以表示為【】標準答案:c3=c1+c2知識點解析:這是運算符重載應用的兩種形式。39、下面程序的打印結(jié)果是【】。#include<iostream>usingnamespacestd;classBase{public:Base(intx){a=x;}voidshow(){cout<<a;}private:inta;};classDerived:publicBase{public:Derived(inti):Base(i+1),b(i){}voidshow(){cout<<b;}private:intb;};intmain(){Baseb(5),*pb;Derivedd(1);pb=&d;pb->show();return0;}標準答案:2知識點解析:基類Base派生出派生類Derived,在主函數(shù)中,定義了基類對象b,基類指針pb,以及派生類對象d,并讓基類指針pb指向派生類對象乙在C++中,當派生類的對象賦值給基類對象時,只能使用派生類對象中從基類繼承的成員。所以最后執(zhí)行語句“pb->show();”是調(diào)用基類的成員函數(shù)show(),輸出a的值2。40、有如下程序:#include<iostream>usingnamespacestd;classAA{public:virtualvoidf(){cout<<"AA";}};classBB:publicAA{public:BB(){cout<<"BB";}};classCC:publicBB{public:virtualvoidf(){BB::f();cout<<"CC";}};intmain(){AAaa,*p;BBbb;CCcc;p=&cc;p->f();returnO;}運行后的輸出結(jié)果【】標準答案:BBBBAACC知識點解析:本題中,函數(shù)f()在基類AA中派生類CC中都聲明為虛函數(shù),所以采用動態(tài)聯(lián)編。主函數(shù)首先定義類AA的對象aa和指針對象p,然后定義了類BB的對象bb,此時調(diào)用了類BB的構(gòu)造函數(shù)輸出BB。再定義類CC的對象cc,由于類CC是類BB的派生類,所以此時又調(diào)用類BB的構(gòu)造函數(shù)輸出BB。最后執(zhí)行語句“p=&cc;p->f();”,輸出AA和CC。41、若有以下程序:#include<iostream>usingnamespacestd;intmain(){charstr[10];cin>>str;cout<<str<<end1;return0;}當輸入為:Thisisaprogram!那么執(zhí)行程序后的輸出結(jié)果是【】。標準答案:This知識點解析:本題考核C++的標準輸入/輸出。提取符可以從輸入流中讀取一個字符序列,即一個字符串。在處理這種字符序列時,字符串被認為是一個以空白字符結(jié)束的字符序列。因此,本題得到的輸入僅僅是第一個空白符之前的字符序列This。所以程序最后的輸出是This。五、填空題(含2小題)(本題共1題,每題1.0分,共1分。)42、函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二位數(shù)組的下半三角,形式如下:其構(gòu)成規(guī)律是:①第0列元素和主對角線元素均為1。②其余元素為其左上方和正上方元素值之和。③數(shù)據(jù)的個數(shù)每行遞增1。請將程序補充完整。#defineN6voidYangHui(intx[N][N]){inti,j;x[0][0]=1;for(i=1;i<N;i++){x[i][0]=【】=1;for(j=1;j<i;j++)x[i][j]=【】;}}標準答案:x[i][0]x[i-1][j-1]+x[i-1][j]知識點解析:本題考核數(shù)組的應用,屬于綜合型考題。在函數(shù)YangHui中,通過嵌套的for語句實現(xiàn)楊輝三角各個位置元素的賦值。①由于楊輝三角中,第0列元素和主對角線元素均為1。所以可知,x[i][0]=1,x[i][i]=1。②楊輝三角中,其余元素為其左上方和正上方元素值之和。若元素為x[i][j],那么其左上方的元素為x[-1][j-1),正上方的元素為x[i-1][j]。所以x[i][j]的值為x[i-1][j-1]+x[i-1][j]。國家二級(C++)筆試模擬試卷第2套一、公共基礎(chǔ)選擇題(本題共32題,每題1.0分,共32分。)1、下列選項中不符合良好程序設(shè)計風格的是A、源程序要文檔化B、數(shù)據(jù)說明的次序要規(guī)范化C、避免濫用goto語句D、模塊設(shè)計要保證高耦合、高內(nèi)聚標準答案:D知識點解析:編程風格是在不影響程序性能的前提下,有效地編排和組織程序,以提高可讀性和可維護性。要按照規(guī)則進行編程。這些規(guī)則包括:①程序文檔化。程序文檔應包含恰當?shù)臉俗R符、適當?shù)淖⒔夂统绦虻囊曈X組織等。②數(shù)據(jù)說明。出于閱讀理解和維護的需要,最好使模塊前的說明語句次序規(guī)范化。③功能模塊化。即把源程序代碼按照功能劃分為低耦合、高內(nèi)聚的模塊。④注意goto語句的使用。合理使用goto語句可以提高代碼的運行效率,但goto語句的使用會破壞程序的結(jié)構(gòu)特性。因此,除非確實需要,否則最好不使用goto語。因此,本題的正確答案是D。2、從工程管理角度,軟件設(shè)計一般分為兩步完成,它們是A、概要設(shè)計與詳細設(shè)計B、數(shù)據(jù)設(shè)計與接口設(shè)計C、軟件結(jié)構(gòu)設(shè)計與數(shù)據(jù)設(shè)計D、過程設(shè)計與數(shù)據(jù)設(shè)計標準答案:A知識點解析:從工程管理的角度,軟件設(shè)計可分為概要設(shè)計和詳細設(shè)計兩大步驟。概要設(shè)計是根據(jù)需求確定軟件和數(shù)據(jù)的總體框架;詳細設(shè)計是將其進一步簡化成軟件的算法或表示和數(shù)據(jù)結(jié)構(gòu)。而在技術(shù)上,概要設(shè)計和詳細設(shè)計又由若干活動組成,包括總體結(jié)構(gòu)設(shè)計、數(shù)據(jù)設(shè)計和過程設(shè)計。因此,本題的正確答案是A。3、下列選項中不屬于軟件生命周期開發(fā)階段任務(wù)的是A、軟件測試B、概要設(shè)計C、軟件維護D、詳細設(shè)計標準答案:C知識點解析:軟件生命周期由軟件定義、軟件開發(fā)和軟件維護3個時期構(gòu)成,每個時期又進一步劃分為若干個階段。軟件定義時期的基本任務(wù)是確定軟件系統(tǒng)的工程需求。軟件定義可分為軟件系統(tǒng)的可行性研究和需求分析兩個階段。軟件開發(fā)時期是具體設(shè)計和實現(xiàn)在前一時期定義的軟件,它通常由5個階段組成:概要設(shè)計、詳細設(shè)計、編寫代碼、組裝測試和確認測試。軟件維護時期的主要任務(wù)是使軟件持久地滿足用戶的需要。即當軟件在使用過程中發(fā)現(xiàn)錯誤時應加以改正:當環(huán)境改變時應該修改軟件,以適應新的環(huán)境;當用戶有新要求時應該及時改進軟件,以滿足用戶的新要求。根據(jù)上述對軟件生命周期的介紹,可知選項c中的軟件維護不是軟件生命周期開發(fā)階段的任務(wù)。因此,本題的正確答案是C。4、在數(shù)據(jù)庫系統(tǒng)中,用戶所見的數(shù)據(jù)模式為A、概念模式B、外模式C、內(nèi)模式D、物理模式標準答案:B知識點解析:數(shù)據(jù)庫管理系統(tǒng)的三級模式結(jié)構(gòu)由外模式、模式和內(nèi)模式組成。外模式也稱子模式或用戶模式,是指數(shù)據(jù)庫用戶所看到的數(shù)據(jù)結(jié)構(gòu),是用戶看到的數(shù)據(jù)視圖。模式也稱邏輯模式,是數(shù)據(jù)庫中對全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述,是所有用戶所見到的數(shù)據(jù)視圖的總和。內(nèi)模式也稱存儲模式或物理模式,是指數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)內(nèi)的存儲介質(zhì)上的表示,即對數(shù)據(jù)的物理結(jié)構(gòu)和存取方法的描述。5、數(shù)據(jù)庫設(shè)計的4個階段是:需求分析、概念設(shè)計、邏輯設(shè)計和A、編碼設(shè)計B、測試階段C、運行階段D、物理設(shè)計標準答案:D知識點解析:數(shù)據(jù)庫的生命周期可以分為兩個階段:一是數(shù)據(jù)庫設(shè)計階段,二是數(shù)據(jù)庫實現(xiàn)階段。數(shù)據(jù)庫的設(shè)計階段又分為4個子階段,即需求分析、概念設(shè)計、邏輯設(shè)計和物理設(shè)計。因此,本題的正確答案是D。6、下列敘述中正確的是A、一個算法的空間復雜度大,則其時間復雜度也必定大B、一個算法的空間復雜度大,則其時間復雜度必定小C、一個算法的時間復雜度大,則其空間復雜度必定小D、上述3種說法都不對標準答案:D知識點解析:時間復雜度是指一個算法執(zhí)行時間的相對度量;空間復雜度是指算法在運行過程中臨時占用的存儲空間大小的度量。有時為了加快算法的運行速度,不得不增加空間開銷;有時為了能有效地存儲算法和數(shù)據(jù),又不得不犧牲運行時間。時間和空間的效率往往是矛盾存在的,但是,這不適用于所有的情況,也就是說,時間復雜度和空間復雜度之間雖然經(jīng)常矛盾,但是二者不存在必然的聯(lián)系。因此,選項A、B、C的說法都是錯誤的。7、在長為64的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為A、63B、64C、6D、7標準答案:B知識點解析:在長度為64的有序線性表中,其中的64個數(shù)據(jù)元素是按照從大到小或從小到大的順序有序排列的。在這樣的線性表中進行順序查找,最壞的情況就是查找的數(shù)據(jù)元素不在線性表中或位于線性表的最后。按照線性表的順序查找算法,首先用被查找的數(shù)據(jù)和線性表的第一個數(shù)據(jù)元素進行比較。若相等,則查找成功;否則,繼續(xù)進行比較,即和線性表的第二個數(shù)據(jù)元素進行比較。同樣,若相等,則查找成功;否則,繼續(xù)進行比較。以此類推,直到在線性表中查找到該數(shù)據(jù)或查找到線性表的最后一個元素,算法才結(jié)束。因此,在長度為64的有序線性表中進行順序查找,最壞的情況下需要比較64次。因此,本題的正確答案為B。8、數(shù)據(jù)庫技術(shù)的根本目標是要解決數(shù)據(jù)的A、存儲問題B、共享問題C、安全問題D、保護問題標準答案:B知識點解析:數(shù)據(jù)庫可以看成是長期存儲在計算機內(nèi)的、大量的、有結(jié)構(gòu)的和可共享的數(shù)據(jù)集合。因此,數(shù)據(jù)庫具有為各種用戶所共享的特點。不同的用戶可以使用同一個數(shù)據(jù)庫,可以取出它們所需要的子集,而且允許子集任意重疊。數(shù)據(jù)庫的根本目標是要解決數(shù)據(jù)的共享問題。因此,選項B的說法是正確的。9、下列有關(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ù)體的最后一條語句必須是return語句標準答案:C知識點解析:內(nèi)聯(lián)函數(shù)也具有函數(shù)的基本功能,可以沒有返回值;內(nèi)聯(lián)函數(shù)由編譯器在調(diào)用該函數(shù)時將函數(shù)體的代碼插入到調(diào)用該函數(shù)的語句處,同時以實參代替形參,以便程序在運行時不再進行函數(shù)調(diào)用,即在調(diào)用時不發(fā)生控制轉(zhuǎn)移。10、下列情況中,不會調(diào)用復制構(gòu)造函數(shù)的是A、用一個對象去初始化同一類的另一個新對象時B、將類的一個對象賦予該類的另一個對象時C、函數(shù)的形參是類的對象,調(diào)用函數(shù)進行形參和實參結(jié)合時D、函數(shù)的返回值是類的對象,函數(shù)執(zhí)行返回調(diào)用時標準答案:D知識點解析:用一個對象去初始化同一類的另一個新對象時,將類的一個對象賦予該類的另一個對象時,函數(shù)的形參是類的對象,調(diào)用函數(shù)進行形參和實參結(jié)合時都會調(diào)用復制構(gòu)造函數(shù),生成一個新的對象,只有返回值為對象時,才調(diào)用構(gòu)造函數(shù),而不是復制構(gòu)造函數(shù),生成一個新對象給函數(shù)返回,故答案為D。11、下列有關(guān)繼承和派生的敘述中,正確的是A、如果一個派生類私有繼承其基類,則該派生類對象不能訪問基類的保護成員B、派生類的成員函數(shù)可以訪問基類的所有成員C、基類對象可以賦值給派生類對象D、如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類標準答案:A知識點解析:派生類的成員函數(shù)在不同的繼承方式下,能訪問的數(shù)據(jù)成員也不一樣。在公有繼承方式下,派生類的成員函數(shù)能訪問基類的公有和保護成員;在保護繼承方式下,能訪問基類的公有和保護成員;而在私有繼承方式下,則不能訪問基類的任何成員??梢詫⑴缮悓ο筚x值給基類對象,但不能將基類對象賦值給派生類對象。如果一個抽象類的派生類中沒有抽象說明純虛函數(shù),則該函數(shù)在派生類中仍然為純虛函數(shù),而這個派生類也仍然是一個抽象類。12、模板對類型的參數(shù)化提供了很好的支持,因此A、類模板的主要作用是生成抽象類B、類模板實例化時,編譯器將根據(jù)給出的模板實參生成一個類C、在類模板中的數(shù)據(jù)成員都具有同樣類型D、類模板中的成員函數(shù)都沒有返回值標準答案:B知識點解析:類模板是一個通用類,不知道其數(shù)據(jù)成員和成員函數(shù)的返回類型和形參類型,系統(tǒng)會根據(jù)實參的類型來取代類模板中的虛擬類型從而實現(xiàn)不同類的功能。類模板中的數(shù)據(jù)成員的類型并非一定要一致。13、下列關(guān)于C++流的敘述中,正確的是A、與鍵盤、屏幕、打印機和通信端口的交互都可以通過流類來實現(xiàn)B、從流中獲取數(shù)據(jù)的操作稱為插入操作,向流中添加數(shù)據(jù)的操作稱為提取操作C、cin是一個預定義的輸入流類D、輸出流有一個名為open的成員函數(shù),其作用是生成一個新的流對象標準答案:A知識點解析:在C++中,所有設(shè)備的交互都通過流來實現(xiàn)。從流中提取數(shù)據(jù)稱為輸入操作,或者提取操作;向流中添加數(shù)據(jù)稱為輸出操作,或者插入操作。cin是標準的輸入流對象,cout標準輸入流對象。文件流中有open成員函數(shù),其作用是使磁盤文件同某一已經(jīng)定義的文件流對象建立關(guān)聯(lián)。14、下列符號中可以用作C++標識符的是A、_radiusB、foo~barC、elseD、3room標準答案:A知識點解析:在C++中,變量標識符必須以大小寫字母、下畫線開始,是由數(shù)字或者字母下畫線等組成的一個字符串,其中C++關(guān)鍵字不能作為標識符,不能包含-、+、*、/等運算符號。15、下列語句中,錯誤的是A、constintbuffer=256;B、constinttemp;C、constdouble*point;D、constdouble*rt=newdouble(5.5);標準答案:B知識點解析:用const修飾常量就變?yōu)槌W兞?,常變量一旦被建立,就不能被更改。在被定義時就應該給常變量賦初始值,而常指針則不同,被定義后,它指向的地址不能發(fā)生改變,但是指向的地址中的數(shù)據(jù)可以改變。16、有如下程序:intx=3:d0{x-=2:cout<<x:}while(!(--x));執(zhí)行這個程序的輸出結(jié)果是A、1B、30C、12D、死循環(huán)標準答案:C知識點解析:Do...while()循環(huán)是先執(zhí)行循環(huán)體,然后判斷條件。第一次進入循環(huán)x=1,打印1,第二次進入循環(huán)x=0,執(zhí)行x-=2后,x=-2,打印x,退出循環(huán)。17、有如下程序:#include<iostream>usingnamespacestd;intmain(){int*P;*P=9;cout<<"ThevalueatP:"<<*P:return0;}編譯運行程序?qū)⒊霈F(xiàn)的情況是A、編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:ThevalueatP:9C、運行時一定輸出:ThevalueatP:*9D、運行時有可能出錯標準答案:D知識點解析:int*p;指針變量定義時沒有被初始化,也沒有指向具體的地址,所以在后面打印時報錯。應當做如下初始化:int*p=newint();18、有如下程序:#include<iostream>usingnamcspacestd;intmain(){voidfunction(doubleval);doubleval;function(val);eout<<val;return0;}voidfunction(doubleval){val=3:}編譯運行這個程序?qū)⒊霈F(xiàn)的情況是A、編譯出錯,無法運行B、輸出:3C、輸出:3.0D、輸出一個不確定的數(shù)標準答案:D知識點解析:在主函數(shù)中的val沒有初始值,而且在調(diào)用函數(shù)function()時采用的是傳值調(diào)用,所以在函數(shù)中改變val的值不會影響到主函數(shù)中的val值,故輸出是一個不確定的值。19、有如下類定義:classAA{inta;public:intgetRef()eonst{return&a;}//①intgetValue()const{returna;}//②voldset(intn)eonst{a=n;}//③friendvoidshow(AAaA)eonst{tout<<a;}//④};其中的4個函數(shù)定義中正確的是A、①B、②C、③D、④標準答案:B知識點解析:友元函數(shù)不能使用const修飾,故④錯誤,①的函數(shù)類型和返回類型不匹配。如果一個類的成員函數(shù)被聲明為const類型,表示該函數(shù)不會改變對象的狀態(tài),也就是說該函數(shù)不會修改類的非靜態(tài)數(shù)據(jù)成員,而③對類的數(shù)據(jù)成員a進行了賦值,故不能用const賦值,故③錯。20、有如下程序:#include<iostream>usingnamespacestd;usingnamespacestd;classBase{public:voidfun(){cout<<"Base::fun"<<endl:}};classDerived:publicBase{public:voidfun(){eout<<"Derived::fun"<<endl:}};intmain(){Derivedd;d.fun();return0;}已知其執(zhí)行后的輸出結(jié)果為:Base::funDerived::fun則程序中下畫線處應填入的語句是A、Base.fun();B、Base::fun();C、Base->fun();D、fun();標準答案:B知識點解析:從打印結(jié)果可以看出,在對象d調(diào)用fun()函數(shù)時調(diào)用了基類的fun()函數(shù),所以,在派生類中應該顯式調(diào)用基類的fun()函數(shù),故應該寫成:Base::fun();。21、下面是重載為非成員函數(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知識點解析:類的賦值運算符“=”只能被重載為成員函數(shù),不能重載為友元函數(shù)。22、有如下函數(shù)模板:template<typenameT,typenaineU>Tcast(Uu){returnu;}其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對模板函數(shù)cast的調(diào)用中正確的是A、cast(i);B、cast<>(i);C、cast<char*,int>(i);D、cast<double,int>(i);標準答案:D知識點解析:選擇A、B錯在沒有給T參數(shù)類型,在函數(shù)的返回值中應該為T確定一個確切的類型。選項C錯在賦給T的類型和函數(shù)中返回值的類型不匹配,故答案為D。23、若磁盤上已存在某個文本文件,其全路徑文件名為d:\ncre\test.txt,下列語句中不能打開該文件的是A、ifstreamfile("d:\ncre\test.txt");B、ifstreamfile("d:\\ncre\\test.txt");C、ifstreamfile;file.open("d:\\ncre\\test.txt");D、ifstream*pFile=newifstream("d:\\ncre\\test.txt");標準答案:A知識點解析:文件流的打開路徑用“\\”隔開,而不是“\”,但可以用“/”隔開。24、有如下類定義:classFoo{public:Foo(intv):value(v){}//①~Foo(){}//②private:Foo(){{//③intvalue=0;//④};其中存在語法錯誤的行是A、①B、②C、③D、④標準答案:D知識點解析:類的數(shù)據(jù)成員只能被定義類型,而不能對其設(shè)置默認值。如果要設(shè)置默認值需要在構(gòu)造函數(shù)的參數(shù)中進行設(shè)置。25、有如下類定義:classPoint{intx_,y_;public:Point():x_(0),y_(0){}Point(intx,inty=0):x_(x),y_(y){}};若執(zhí)行語句:Pointa(2),b[3],*c[4];則Point類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是A、2次B、3次C、4次D、5次標準答案:C知識點解析:a(2)執(zhí)行一次,調(diào)用帶參構(gòu)造函數(shù);b[3]生成一個對象數(shù)組,所以執(zhí)行3次無參構(gòu)造函數(shù),生成3個對象數(shù)組元素;*c[4]定義一個對象指針,并沒產(chǎn)生對象,所以沒有調(diào)用構(gòu)造函數(shù)。26、有如下類定義:classTest{public:Test(){a=0;C=0;t//①intf(intA)const{this->a=a;}//②staticintg(){returna;}//③voidh(intB){Test::b=b;};//④private:inta;staticintb;constintc;};intTest::b=0:在標注號碼的行中,能被正確編譯的是A、①B、②C、③D、④標準答案:D知識點解析:類的常變量一旦被定義就不能更改,所以選項A錯。定義常成員函數(shù)不能更新對象的數(shù)據(jù)成員,也不能調(diào)用該類中的普通函數(shù),更不能改變該類的數(shù)據(jù)成員的值。靜態(tài)成員函數(shù)不能訪問非靜態(tài)數(shù)據(jù)成員。27、有如下程序:#include<lostream>usingnamespacestd;classA{public:A(){cout<<"A";}~A(){cout<<"~A";}};classB:publicA{A*P;public:B(){cout<<"B";P=newA();}~B(){cout<<"~B";deleteP;}};intmain(){Bobj;return0;}程序的輸出結(jié)果是A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A標準答案:B知識點解析:基類與派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù)的執(zhí)行順序是先執(zhí)行基類的構(gòu)造函數(shù),然后執(zhí)行派生類的構(gòu)造函數(shù)。刪除對象時,先執(zhí)行派生類的析構(gòu)函數(shù),最后執(zhí)行基類的析構(gòu)函數(shù)成員。28、有如下類定義:classMyBase{intk;public:MyBase(intn=0):k(n){}intvalue()const{returnk;}};classMyDerived:MyBase{intj;public:MyDerived(inti):j(i){}intgetK()eonst{returnk;}intgetJ()const{returnj;}};編譯時發(fā)現(xiàn)有一處語法錯誤,對這個錯誤最準確的描述是A、函數(shù)getK試圖訪問基類的私有成員變量KB、在類MyDerived的定義中,基類名MyBase前缺少關(guān)鍵字public、protected或privateC、類MyDerived缺少一個無參的構(gòu)造函數(shù)D、類MyDerived的構(gòu)造函數(shù)沒有對基數(shù)數(shù)據(jù)成員K進行初始化標準答案:A知識點解析:派生類的成員函數(shù)不能訪問基類的私有函數(shù)。29、在一個派生類對象結(jié)束其生命周期時A、先調(diào)用派生類的析構(gòu)函數(shù),后調(diào)用基類的析構(gòu)函數(shù)B、先調(diào)用基類的析構(gòu)函數(shù),后調(diào)用派生類的析構(gòu)函數(shù)C、如果基類沒有定義析構(gòu)函數(shù),則只調(diào)用派生類的析構(gòu)函數(shù)D、如果派生類沒有定義析構(gòu)函數(shù),則只調(diào)用基類的析構(gòu)函數(shù)標準答案:B知識點解析:在刪除派生類對象時,應先執(zhí)行派生類的析構(gòu)函數(shù),然后執(zhí)行基類的析構(gòu)函數(shù)。30、有如下運算重載函數(shù)定義:Doubleoperator+(inti,intk){returndouble(i+k);}但定義有錯誤,對這個錯誤的最準確的描述是A、+只能作為成員函數(shù)重載,而這里的+是作為非成員函數(shù)重載的B、兩個int型參數(shù)的和應該是int型,而這里將+的返回類型聲明為doubleC、沒有將運算符重載函數(shù)聲明為某個類的友元D、C++已經(jīng)提供了求兩個int型數(shù)據(jù)之和運算符+,不能再定義同樣的運算符標準答案:C知識點解析:“+”作為雙目運算符,在對其進行重載時,如果重載為成員函數(shù),則只需要定義一個形參;如果重載為友元函數(shù),則需要定義兩個形參。從題干中可以看出,在重載函數(shù)聲明中,沒有friend關(guān)鍵字,卻有兩個形參,故會提示友元函數(shù)重載報錯。31、語句ofstreamf("SALARY.DAT",ios_base::app)的功能是建立流對象f,并試圖打開文件SALARY.DAT與f關(guān)聯(lián),而且A、若文件存在,則將其置為空文件;若文件不存在,則打開失敗B、若文件存在,則將文件指針定位于文件尾;若文件不存在,則建立一個新文件C、若文件存在,則將文件指針定位于文件首;若文件不存在,則打開失敗D、若文件存在,則打開失??;若文件不存在,則建立一個新文件標準答案:B知識點解析:ios_base::app所表示的文件打開方式為:如果文件存在則將文件指針指向文件尾,否則就建立一個新文件。32、有如下程序:#include<iostream>usingnamespacestd:classA{public:virtualvoidfuncl(){cout<<"A1";}voidfunc2(){cout<<"A2";}};classB:publicA{public:voidfuncl(){cout<<"B1";}voidfllnc2(){cout<<"B2";}};intmain(){A*p=newB;p->funcl();p->func2();return0:}運行程序,屏幕上將顯示輸出A、B182B、A1A2C、BlA2D、AlB2標準答案:B知識點解析:基類指針可以指向派生類對象,但是指針只能訪問繼承自基類的成員,而不能訪問派生類中的新增加成員或重新定義后的成員。故p->funcl();p->func2();都執(zhí)行基類的成員函數(shù),打印A1A2。二、公共基礎(chǔ)填空題(本題共9題,每題1.0分,共9分。)33、某二叉樹中度為2的結(jié)點有18個,則該二又樹中有______個葉子結(jié)點標準答案:19知識點解析:暫無解析34、在面向?qū)ο蠓椒ㄖ?,類的實例稱為______。標準答案:對象知識點解析:在面向?qū)ο蟾拍钪?,所有的同類的實體的抽象就構(gòu)成一個類,而類被實例化就形成一個對象。35、診斷和改正程序中錯誤的工作通常稱為______。標準答案:程序調(diào)試知識點解析:暫無解析36、在關(guān)系數(shù)據(jù)庫中,把數(shù)據(jù)表示成二維表,每一個二維表稱為______。標準答案:關(guān)系知識點解析:暫無解析37、問題處理方案的正確而完整的描述稱為______。標準答案:算法知識點解析:暫無解析38、下列程序的輸出結(jié)果是______。#include<iostream>#include<cstring>usingnamespacestd;voidfun(constchar*S,char&C){e=s[strlen(s)/2];}intmain(){charstr[]="ABCDE";charch=str[1];fun(str,ch);cout<<ch;return0;}標準答案:C’知識點解析:暫無解析39、補充完整下面的類定義:constdoublePI=3.14;classCircle{//圓形物體的抽象基類protected:doubler;//半徑public:Circle(doubleradius=0):r(radius){}(13);//計算圓形物體表面積的純虛函數(shù)聲明};classCylinder:publicCircle{//圓柱體類doubleh;//高度public:Cylinder(doubleradius=0,doubleheight=0);Circle(radius),h(height){}VirtualdoubleArea(){return2*PI*r*(r+h);}//計算圓柱體的表面積};標準答案:virtualdoubleArea()=0知識點解析:聲明純虛函數(shù)的一般形式如下:Virtual函數(shù)類型函數(shù)名(參數(shù)表)=0;40、如下程序聲明了一個使用兩個通用數(shù)據(jù)類型的模板類dataClass,其中構(gòu)造函數(shù)用于初始化兩個數(shù)據(jù)成員,成員函數(shù)show用于輸出兩個數(shù)據(jù)成員的數(shù)值。#include<iostream>usingnamespaeestd;______T1i:T2j;public:dataClass(T1a,T2B){i=a;j=b;}voidshow(){tout<<i<<","<<j<<’\n’;}};intmain(){dataClass<int,double>obl(10,0.23);dataClass<char,char*>ob2(’X’,"mydata");obl.show();ob2.show();return0;請將程序補充完整,使程序在運行時輸出:10,0.23X,mydata標準答案:template<classT1,classT2>classdataClass{知識點解析:類模板聲明的一般格式為:template<typename類型參數(shù)>Class類名{類成員聲明};其中類型參數(shù)可以為多個。題中出現(xiàn)了兩個類型參數(shù)T1、T2,故應該在類模板的頭部聲明中聲明兩個類型參數(shù)T1、T2。41、下列程序的輸出結(jié)果為:Ohjectid=0Objectid=1請將程序補充完整。#include<iostream>usingnamespaeestd;classPoint{public:Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}~Point(){countP--;}intGetX(){returnX;}intGetY(){returnY;}staticvoidGetC(){cout<<"Objectid="<<<countP<<endl;}private:intX,Y;staticintcountP;};______//靜態(tài)數(shù)據(jù)成員的初始化intmain(){Point::GetC();PointA(4,5);A.GetC();return0;}標準答案:intP0int::counfP=0;知識點解析:靜態(tài)數(shù)據(jù)成員的初始化格式為:<數(shù)據(jù)類型><類名>::<靜態(tài)數(shù)據(jù)成員名>=<初始值>;國家二級(C++)筆試模擬試卷第3套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、對于算法的每一步,指令必須是可執(zhí)行的。算法的()要求算法在有限步驟之后能夠達到預期的目的。A、可行性B、有窮性C、正確性D、確定性標準答案:1知識點解析:暫無解析2、下列敘述中錯誤的是()。A、一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)B、數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)處理的效率無關(guān)C、數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)處理的效率密切相關(guān)D、數(shù)據(jù)的存儲結(jié)構(gòu)在計算機中所占的空間不一定是連續(xù)的標準答案:2知識點解析:暫無解析3、在結(jié)構(gòu)化程序設(shè)計方法中,下面內(nèi)聚性最弱的是()。A、邏輯內(nèi)聚B、時間內(nèi)聚C、偶然內(nèi)聚D、過程內(nèi)聚標準答案:4知識點解析:暫無解析4、最簡單的交換排序方法是()。A、快速排序B、選擇排序C、堆排序D、冒泡排序標準答案:8知識點解析:暫無解析5、在深度為7的滿二叉樹中,葉子結(jié)點的個數(shù)為()。A、32B、31C、64D、63標準答案:4知識點解析:暫無解析6、在結(jié)構(gòu)化方法中,軟件功能分解屬于下列軟件開發(fā)中的階段是()。A、詳細設(shè)計B、需求分析C、總體設(shè)計D、編程調(diào)試標準答案:4知識點解析:暫無解析7、結(jié)構(gòu)化程序設(shè)計的主要特征是()。A、封裝和數(shù)據(jù)隱藏B、繼承和重用C、數(shù)據(jù)和處理數(shù)據(jù)的過程分離D、把數(shù)據(jù)和處理數(shù)據(jù)的過程看成一個整體標準答案:4知識點解析:暫無解析8、在數(shù)據(jù)庫管理系統(tǒng)的層次結(jié)構(gòu)中,處于最上層的是()。A、應用層B、語言翻譯處理層C、數(shù)據(jù)存取層D、數(shù)據(jù)存儲層標準答案:1知識點解析:暫無解析9、概要設(shè)計是軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計,以下選項中不屬于概要設(shè)計的是()。A、把軟件劃分成模塊B、確定模塊之間的調(diào)用關(guān)系C、確定各個模塊的功能D、設(shè)計每個模塊的偽代碼標準答案:8知識點解析:暫無解析10、數(shù)據(jù)庫關(guān)系模型中可以有三類完整性約束,下列選項中不屬于三類完整性約束的是()。A、實體完整性規(guī)則B、參照完整性規(guī)則C、對象完整性規(guī)則D、用戶自定義完整性規(guī)則標準答案:4知識點解析:暫無解析二、選擇題(本題共25題,每題1.0分,共25分。)11、cout、cerr和clog是()的對象,cout處理標準輸出,cerr和clog都處理標準出錯信息。A、istreamB、ostreamC、celtD、clog標準答案:2知識點解析:暫無解析12、在C++中,用于實現(xiàn)運行時多態(tài)性的是()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、模板函數(shù)D、虛函數(shù)標準答案:8知識點解析:暫無解析13、下列數(shù)組的定義中,會產(chǎn)生錯誤的是()。A、inta[]={’0’,’1’,’2’,’3’,’4’,’5’,’6’};B、inta[10]={0,1,2,3,4,5,6};C、chara[5]="hello";D、chara[5]={’h’,’e’,’l’,’l’,’o’};標準答案:4知識點解析:暫無解析14、若有以下定義和語句:ints[4][5],(*ps)[5];ps=s;則對s數(shù)組元素的正確引用形式是()。A、ps+1B、*(ps+3)C、ps[0][2]D、*(ps+1)+3標準答案:4知識點解析:暫無解析15、不合法的main函數(shù)命令行參數(shù)表示形式是()。A、main(inta,char*c[1])B、main(intarc,char**arv)C、main(intargc,c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人貨車運輸合同標準版
- 2025年醫(yī)療機構(gòu)鋪面租賃合同
- 2025年銷售合同解除協(xié)議
- 2025年二手住宅策劃專屬委托銷售合同協(xié)議
- 餐飲店鋪裝修合同樣本
- 2025年個人住房交易合同策劃樣本
- 2025年合同變更流程圖
- 2025年快速貨運合同轉(zhuǎn)簽
- 中小企業(yè)融資合同范本
- 度關(guān)鍵崗位人員保密合同
- 采購流程各部門關(guān)系圖
- 力士樂工程機械液壓培訓資料(共7篇)課件
- 英語單詞詞根
- 問題學生轉(zhuǎn)化策略課件
- GMP附錄計算機化系統(tǒng)整體及條款解讀
- 村光伏發(fā)電申請書
- 腰椎間盤突出癥中醫(yī)特色療法課件
- 施工現(xiàn)場專項消防安全檢查表
- 如何當好學校的中層干部
- 2022-2023學年廣東省佛山市順德區(qū)高三(下)模擬英語試卷
- 鋼結(jié)構(gòu)廠房吊裝安裝監(jiān)理控制要點演示文稿
評論
0/150
提交評論