計(jì)算機(jī)二級《C++》基礎(chǔ)習(xí)題及答案
在日復(fù)一日的學(xué)習(xí)、工作生活中,我們總免不了要接觸或使用練習(xí)題,學(xué)習(xí)需要做題,是因?yàn)檫@樣一方面可以了解你對知識點(diǎn)的掌握,熟練掌握知識點(diǎn)!同時做題還可以鞏固你對知識點(diǎn)的運(yùn)用!你知道什么樣的習(xí)題才是規(guī)范的嗎?以下是小編幫大家整理的計(jì)算機(jī)二級《C++》基礎(chǔ)習(xí)題及答案,歡迎大家借鑒與參考,希望對大家有所幫助。
計(jì)算機(jī)二級《C++》基礎(chǔ)習(xí)題及答案 1
一、選擇題
1算法的空間復(fù)雜度是指( )。
A.算法在執(zhí)行過程中所需要的計(jì)算機(jī)存儲空間
B.算法所處理的數(shù)據(jù)量
C.算法程序中的語句或指令條數(shù)
D.算法在執(zhí)行過程中所需要的臨時工作單元數(shù)
參考答案:A
參考解析:一個算法的空間復(fù)雜度,一般是指執(zhí)行這個算法所需要的內(nèi)存空間。
2每個C++程序中都必須有且僅有一個( )。
A.類B.預(yù)處理命令C.主函數(shù)D.語句
參考答案:C
參考解析:每個C++程序中都要有且僅有一個主函數(shù),該函數(shù)是程序的入口,而語句、預(yù)處理命令和函數(shù)及類在程序中都可以有多個。
3對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是( )。
A.快速排序B.冒泡排序C.直接插入排序D.堆排序
參考答案:D
參考解析:首先知道有哪些排序的方法及各種排序方法在最壞情況下需要比較的次數(shù),冒泡排序n(n-1)/2、希爾排序0(n1.5)、簡單選擇排序n(n-1)/2、堆排序O(nl0g2n)。
4數(shù)據(jù)庫系統(tǒng)的三級模式不包括( )。
A.概念模式B.內(nèi)模式C.外模式D.數(shù)據(jù)模式
參考答案:D
參考解析:數(shù)據(jù)庫三級模式包括:概念模式、內(nèi)模式、外模式。
5SQL語言又稱為( )。
A.結(jié)構(gòu)化定義語言
B.結(jié)構(gòu)化控制語言
C.結(jié)構(gòu)化查詢語苦
D.結(jié)構(gòu)化操縱語言
參考答案:C
參考解析:SQL語言的全稱為StructuredQueryLanguage,它是一種介于關(guān)系代數(shù)與關(guān)系演算之間的結(jié)構(gòu)化查詢語言,是一種面向數(shù)據(jù)庫的通用數(shù)據(jù)處理語言規(guī)范。它包含數(shù)據(jù)查詢語言、數(shù)據(jù)操縱語言、數(shù)據(jù)定義語言和數(shù)據(jù)控制語言四個部分。
6數(shù)據(jù)處理的最小單位是( )。
A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.數(shù)據(jù)結(jié)構(gòu)
參考答案:C
7假定MyClass為一個類,那么下列的函數(shù)說明中,( )為該類的析構(gòu)函數(shù)。
A.void~MyClass();B.~MyC|ass(intn);C.MyClass();D.~MyClass();
參考答案:D
參考解析:C++語言中析構(gòu)函數(shù)為符號“~”加類名,且析構(gòu)函數(shù)沒有返回值和參數(shù),故前不加void關(guān)鍵字。所以正確的形式應(yīng)該是~MyClass()。第7題 筆記記錄我的筆記(0) | 精選筆記(1)選擇筆記標(biāo)簽:試題內(nèi)容(1)答案解析(0)
8有以下結(jié)構(gòu)體說明和變量的定義,且指針P指向變量a,指針q指向變量b。則不能把結(jié)點(diǎn)b連接到結(jié)點(diǎn)a之后的語句是( )。
structnode
{chardata;
structnode*next;
}a,b,*p=&a,*q=&b;
A.a.next=q;B.P.next=&b;C.p->next=&b;D.(*p).next=q;
參考答案:B
9若有表達(dá)式“(w)?(--x):(++y)”,則其中與w等價的表達(dá)式是( )。
A.w==1B.w==0C.W!=1D.W!=0
參考答案:D
參考解析:本題考查三目運(yùn)算等。條件表達(dá)式的格式為a?b;c。它的含義是,當(dāng)a為真時,取b的值,否則取c的值。在C語言程序中“為真”即“不等于零”,“為假”即等于0。所以和w等價的表達(dá)式是w非零。
10有如下函數(shù)模板聲明:
template
TMax(Ta,Tb){return(a>b)?a:b;}
下列對函數(shù)模板Max( )的調(diào)用中錯誤的是( )。
A.Max(3.5,4.5)B.Max(3.5,4)C.Max(35,4.5)D.Max(3.5,4)
參考答案:B
參考解析:本題考查函數(shù)模板的引用。引用模板函數(shù)和引用一般函數(shù)在語法形式上基本相同。需要注意的是,說明一個函數(shù)模板后,當(dāng)編譯系統(tǒng)發(fā)現(xiàn)有一個對應(yīng)的函數(shù)調(diào)用時,將根據(jù)實(shí)參中的類型來確認(rèn)是否調(diào)用函數(shù)模板中的對應(yīng)形參。本題選項(xiàng)B中,編譯系統(tǒng)從第一個參數(shù)“3.5”獲得信息“double型數(shù)據(jù)”和從第二個參數(shù)獲得信息“int型數(shù)據(jù)”,兩者矛盾。
11C++語言中關(guān)于構(gòu)造函數(shù)的說法正確的是( )。
A.構(gòu)造函數(shù)的函數(shù)名不必和類名相同
B.構(gòu)造函數(shù)只能有一個
C.每個類必定有構(gòu)造函數(shù)
D.構(gòu)造函數(shù)必有返回值
參考答案:C
參考解析:本題考查構(gòu)造函數(shù)的概念。構(gòu)造函數(shù)可以被重載,函數(shù)名必須和類名相同;構(gòu)造函數(shù)可以有一個,也可以有多個;構(gòu)造函數(shù)沒有返回值。
12下列描述中,錯誤的是( )。
A.公有繼承時基類中的公有成員在派生類中仍是公有成員
B.公有繼承時基類中的保護(hù)成員在派生類中仍是保護(hù)成員
C.保護(hù)繼承時基類中的公有成員在派生類中仍是公有成員
D.保護(hù)繼承時基類中的保護(hù)成員在派生類中仍是保護(hù)成員
參考答案:C
參考解析:保護(hù)繼承時,類成員的訪問級別只能降低為保護(hù)模式,因此即使是基類的公有成員也被縮小為保護(hù)模式。
13結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括( )。
A.順序結(jié)構(gòu)B.GOTO跳轉(zhuǎn)C.選擇(分支)結(jié)構(gòu)D.重復(fù)(循環(huán))結(jié)構(gòu)
參考答案:B
參考解析:結(jié)構(gòu)化程序設(shè)計(jì)的三種結(jié)構(gòu)是順序、分支和循環(huán),不包括goto跳轉(zhuǎn),它只是分支結(jié)構(gòu)的一種,也是一個關(guān)鍵字。
14在E—R圖中,用來表示實(shí)體聯(lián)系的圖形是( )。
A.橢圓圖B.矩形C.菱形D.三角形
參考答案:C
參考解析:E—R圖中用矩形表示實(shí)體(等同于表),用橢圓形表示實(shí)體的屬性(等同于表中字段),用菱形表示實(shí)體關(guān)系(等同于外鍵)。
15下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是( )。
A.循環(huán)隊(duì)列B.帶鏈隊(duì)列C.二叉樹D.帶鏈棧
參考答案:C
參考解析:隊(duì)列是一種允許在一端進(jìn)行插入,而在另一端進(jìn)行刪除的線性表。棧也是一種特殊的線性表,其插入與刪除只能在線性表的一端進(jìn)行。
16對長度為n的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為( )。
A.log2nB.n/2C.nD.n+1
參考答案:C
參考解析:對線性表進(jìn)行順序查找,最壞情況下,如果從表頭進(jìn)行查找,要查找到表尾才能得出結(jié)果,因此需要比較n次。
17下面程序的運(yùn)行結(jié)果為( )。#include
voidswap(int&a,intb)
{
inttemp;
temp=a++;
a=b:
b=temp:
}
voidmain()
{
inta=2,b=3;
swap(a,b);
cout<
}
A.2,3B.3,2C.2,2D.3,3
參考答案:D
參考解析:本題考查引用調(diào)用,因?yàn)楹瘮?shù)swap引用調(diào)用參數(shù)a,所以在swap函數(shù)中a的變化會改變主函數(shù)中a的值,即a自加1。但b的值并未改變。
18若有以下程序:
#include
usingnamespacestd;
classBase
{public:
Base()
{x=0;}
intx;};
classDerivedl:virtualpublicBase
{public:
Derivedl()
{x=10;}};
classDerived2:virtua11publicBase
{public:
Derived2()
{x=20;}};
classDerived:publicDerivedl,protectedDerived2{};intmain()
{Derivedobj;
cout<
return0;}
該程序運(yùn)行后的`輸出結(jié)果是( )。
A.20B.30C.10D.0
參考答案:A
參考解析:本題考查虛基類的應(yīng)用。雖然Derivedl和Derived2都是由共同的基類x派生而來的,但由于引入了虛基類,使得它們分別對應(yīng)基類的不同副本。這時數(shù)據(jù)成員x只存在一份副本,不論在類Derivedl中修改,還是在Derived2中修改,都是直接對這唯一副本進(jìn)行操作。本題程序執(zhí)行語句“Derivedobj;”時.就會先調(diào)虛基類Base的構(gòu)造函數(shù),使得X=0,然后執(zhí)行類Derivedl的構(gòu)造函數(shù)使得x=10,再執(zhí)行類Derived2的構(gòu)造函數(shù),使得x=20。最后輸出x的值為20。
19下列選項(xiàng)中不合法的標(biāo)識符是( )。
A.printB.FORC.&aD.-00
參考答案:C
參考解析:標(biāo)識符的概念只能由數(shù)字、字母和下畫線組成,并且只能以字母和下畫線開頭,所以選項(xiàng)C不正確。
20考慮函數(shù)原型voidtest(inta,intb=7,charz=*),下面的函數(shù)調(diào)用中,屬于不合法調(diào)用的是( )。
A.test(5);B.test(5,8);C.test(6,#);D.test(0,0,*);
參考答案:C
參考解析:題中函數(shù)聲明帶有默認(rèn)參數(shù),那么在C選項(xiàng)的調(diào)用中,將會把字符型實(shí)參#賦值給整型形參b,這不符合參數(shù)傳遞規(guī)則。
21當(dāng)需要將一個函數(shù)boolisnunlber(charc)聲明為內(nèi)聯(lián)函數(shù)時,此內(nèi)聯(lián)函數(shù)的函數(shù)原型為( )。
A.enumboolisnumber(charc);
B.defineboolisnumber(charc);
C.inlineboolisnumber(charc);
D.extemboolisnumber(charc);
參考答案:C
參考解析:本題考查內(nèi)聯(lián)函數(shù)的相關(guān)知識點(diǎn)。函數(shù)原型應(yīng)指出函數(shù)名、返回值類型以及在調(diào)用函數(shù)時提供的參數(shù)的個數(shù)和類型,因?yàn)橐暶鳛閮?nèi)聯(lián)函數(shù),故應(yīng)加inline關(guān)鍵字。
22有如下程序:
#include
usingnamespacestd;
intmain( ){
inta[6]={23,l5,64,33,40,58};
ints1,s2;
s1=s2=a[0];
for(int*p=a+1;p
if(sl>*p)s1=*P;
if(s2<*p)s2=*p;
}
cout<
return0;
}
運(yùn)行時的輸出結(jié)果是( )。
A.23B.58C.64D.79
參考答案:D
參考解析:根據(jù)題意,找出數(shù)組a中最大值sl和最小值s2并計(jì)算二者的和。
23以下程序中調(diào)用cin函數(shù)給變量a輸入數(shù)值的方法是錯誤的,其錯誤的原因是( )。
#include(iostream.h)
voidmain( )
{int*P,*q,a,b;
p=&a;
cout<<"inputa:";
cin>>P;
}
A.*P表示的是指針變量P的地址
B.P表示的是變量a的地址,而不是變量a的值
C.*P表示的是指針變量p的值
D.*P只能用來說明P是一個指針變量
參考答案:B
參考解析:p表示的是變量a的地址,定義后*P表示的是變量a的值。
24有以下程序:
classDate
{
public:
Date(inty,intm,intd);
{
year=Y:
month=m;
day=d;
}
Date(inty=2000)
{
year=y;
month=10;
day=1;
}
Date(Date&d)
{
year=d.year;
month=d.month;
day=d.day;
}
voidprint( )
{
cout<
}
private:
intyear,month,day;
};
Datefun(Dated)
{
Datetemp;
temp=d;
returntemp;
}
intmain( )
{
Datedatel(2000,1,1),date2(0,0,0);
Datedate3(datel);
date2=fun(date3);
return0;
}
程序執(zhí)行時,Date類的拷貝構(gòu)造函數(shù)被調(diào)用的次數(shù)是( )。
A.2B.3C.4D.5
參考答案:B
參考解析:本題考核拷貝構(gòu)造函數(shù)。上述程序中,拷貝構(gòu)造函數(shù)一共被調(diào)用了3次:第1次是在執(zhí)行語句Datedate3(date1)時,用已經(jīng)建立的對象date1對正在建立的對象date3進(jìn)行初始化;第2次是在調(diào)用fun函數(shù)時,由于是傳值調(diào)用,因此實(shí)參對象date3要對形參對象d進(jìn)行初始化;第3次是在執(zhí)行fun函數(shù)中的返回語句returntemp;時,系統(tǒng)初始化一個匿名對象時使用了拷貝構(gòu)造函數(shù)。
25下面程序的輸出結(jié)果是( )。
#include
Usingnamespacestd;
ClassBase{
public:
Base(intx=O){count<
}
};
ClassDerived:publicBase{
public:Derved(intx=0{count<
}
private;
Baseval;
};
intmina(){
Derivedd(1);
retrun0;
}
A.0B.1C.01D.001
參考答案:D
26軟件設(shè)計(jì)中劃分模塊的一個準(zhǔn)則是( )。
A.低內(nèi)聚低耦合B.高內(nèi)聚低耦合C.低內(nèi)聚高耦合D.高內(nèi)聚高耦合
參考答案:B
參考解析:耦合性與內(nèi)聚性是模塊獨(dú)立性的兩個定性標(biāo)準(zhǔn),耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各個模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性。
27下列程序的運(yùn)行結(jié)果是( )。
#include
intx=5;
intfun(inta)
{
intc:
c=X*a:
returnC;
}
voidmain()
{
intx=3,a=4;
x=x+fun(a);
cout<<"x="<
}
A.x=15B.x=17C.x=23D.x=25
參考答案:C
參考解析:由主函數(shù)main入手,首先x被賦值為3,a被賦值為4,然后調(diào)用fun函數(shù),參數(shù)為4,所以在fun函數(shù)中的a=4。而主程序中的x作用域是由它定義開始到cout輸出,在fun函數(shù)中無效。而在fun函數(shù)定義前的變量X作用域是整個程序,所以fun函數(shù)中的x值為5,這樣C的值就為20。在主函數(shù)中的x+fun(a)中的x為靠近這條語句的x定義,即3,所以最后x的值為20+3=23。第27題 筆記記錄我的筆記(0) | 精選筆記(0)選擇筆記標(biāo)簽:試題內(nèi)容(0)答案解析(0)
28數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是( )。
A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關(guān)系
參考答案:C
參考解析:數(shù)據(jù)庫系統(tǒng)(DBS)是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng),一般有數(shù)據(jù)庫(DB)、數(shù)據(jù)庫管理系統(tǒng)(DBMS)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶構(gòu)成。
29在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是( )。
A.軟件集成測試計(jì)劃B.軟件詳細(xì)設(shè)計(jì)說明書C.用戶手冊D.軟件需求規(guī)格說明書
參考答案:D
參考解析:需求分析階段只能產(chǎn)生需求分析規(guī)格說明書,A測試說明書是軟件測試階段生成的,B軟件詳細(xì)設(shè)計(jì)說明數(shù)是設(shè)計(jì)階段生產(chǎn),C用戶手冊是軟件發(fā)布時隨軟件一同交付給用戶的。
30有如下程序:
#include
usingnamespacestd;
classXA{
inta;
public:
staticintb;
XA(intaa):a(aa){b++;}
~XA( ){}
intget( ){returna;}
};
intXA:b=0
intmain( ){
XAd1(1),d2(3);
cout<
return0;
}
運(yùn)行時的輸出結(jié)果是( )。
A.5B.6C.7D.8
參考答案:C
參考解析:每調(diào)用一次get函數(shù)時,對新的類A對象進(jìn)行一次實(shí)例化,調(diào)用一次構(gòu)造函數(shù),類A的靜態(tài)成員變量b便加1。
32對于模板定義關(guān)鍵字class和typename說法不正確的是( )。
A.程序中的class并不能都替換為typename
B.class和typename都可互相替換
C.程序中的typename都能替換為class
D.程序中的部分class可以替換為typename
參考答案:B
參考解析:在C++程序中的typename是都可以替換為class的,但class不能都替換為typename。
33下面程序的運(yùn)行結(jié)果為( )。
#include
ClassA
{
public:A( ){cout<<"1";}
~A( ){cout<<"2";}
};
ClassB:public:A
{
public:
B( ){cout<<"3";}
~B( ){cout<<"4";}
};
Voidmain( )
{
Bb;
}
A.1234B.1324C.1342D.3142
參考答案:C
參考解析:本題考查在繼承中構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序,應(yīng)該是先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù),調(diào)用析構(gòu)函數(shù)時的順序是先調(diào)用派生類的析構(gòu)函數(shù),后調(diào)用基類的析構(gòu)函數(shù)。
34有如下程序:
#include
usingnamespacestd;
classPublication{/pic/p>
charname[30];
public:
Publication(char*name=”未知名稱”){
~strcpy(this一>name,name);
}
constchar*getName( )const{returnname;}
virtualconstchar*getType( )const{return”未知類型”;}
};
classBook:publicPublication{/pic/p>
public:
Book(char*name):Publication(name){}
virtualconstchar*getType( )const{return"書";}
};
voidshowPublication(Publication&p){
cout<
endl;
}
intmain( ){
Bookbook(”精彩人生”);
showPublication(book);
return0;
}
運(yùn)行時的輸出結(jié)果是( )。
A.未知類型:未知名稱
B.未知類型:精彩人生
C.書:未知名稱
D.書:精彩人生
參考答案:D
參考解析:因?yàn)間etType是虛函數(shù),所以P.getType()執(zhí)行繼承類的getType函數(shù),輸出“書”;P.getName()執(zhí)行基類的getName函數(shù),輸出“精彩人生”?偣草敵觥皶壕嗜松,故選D。
35若有以下程序:
#include
usillgnamespacestd;
classA
{private:
inta;
public:
A(inti)
{a=i;}
voiddisp()
{cout<
classB
{private:
intb;
public:
B(intj)
{b=j;}
voiddisp()
{COUt<
classC:publicB,publicA
{private:
intC;
public:
C(intk):A(k-2),B(k+2)
(c=k;)
voiddisp()
{A:disp();
B:disp();
cout<
intmain()
{Cobj(10);
obj.disp();
return0;}
程序執(zhí)行后的輸出結(jié)果是( )。
A.10,10,10B.10,12,14C.8,10,12D.8,12,10
參考答案:D
參考解析:本題考查派生類構(gòu)造函數(shù)的使用。派生類C具有多重繼承關(guān)系,所以在派生類C的構(gòu)造函數(shù)中應(yīng)該包含基類A和B的成員初始化列表。
36若AA為一個類,a為該類的非靜態(tài)數(shù)據(jù)成員,在該類的一個成員函數(shù)定義中訪問a時,其書寫格式為( )。
A.aB.AA.aC.a{}D.AA:a{}
參考答案:A
參考解析:a是類AA的非靜態(tài)數(shù)據(jù)成員,在類AA的成員函數(shù)中可以直接訪問。B是訪問靜態(tài)數(shù)據(jù)成員的方式,C和D都是訪問函數(shù)的方式。
37靜態(tài)成員函數(shù)沒有( )。
A.返回值B.this指針C.指針參數(shù)D.返回類型
參考答案:B
參考解析:this指針是系統(tǒng)隱含的用于指向當(dāng)前對象的指針。由于靜態(tài)函數(shù)是同類中所有對象都共享的函數(shù),在內(nèi)存中只存在一份,不屬于某個對象所有,所以靜態(tài)函數(shù)沒有this指針。
38下列程序的運(yùn)行結(jié)果是( )。
#include
intx=5:
intfun(inta)
{
intC;
C=X*a:
returnC;
}
voidmain( )
{
intx=3,a=4;
x=x+fun(a);
cout<<"x="<
}
A.x=15B.x=17C.x=23D.x=25
參考答案:C
參考解析:由主函數(shù)main入手,首先X被賦值為3,a被賦值為4,然后調(diào)用fun函數(shù),參數(shù)為4,所以在fun函數(shù)中的a=4。而主程序中的X作用域是由它定義開始到cout輸出,在fun函數(shù)中無效。而在fun函數(shù)定義前的變量X作用域是整個程序,所以fun函數(shù)中的x值為5,這樣c的值就為20。在主函數(shù)中的x+fun(a)中的X為靠近這條語句的x定義,即3,所以最后x的值為20+3=23。
39面向?qū)ο蟮臎]計(jì)方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是( )。
A.模擬現(xiàn)實(shí)世界中不同事物之間的聯(lián)系
B.強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而不強(qiáng)調(diào)概念
C.使用現(xiàn)實(shí)世界的概念抽象地思考問題從而自然地解決問題
D.鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用實(shí)際領(lǐng)域的概念去思考
參考答案:C
參考解析:面向?qū)ο笤O(shè)計(jì)通過對人類認(rèn)識客觀世界及事物發(fā)展過程的抽象,建立了規(guī)范化的分析設(shè)計(jì)方法,由此帶來軟件模塊化特色突出、可讀性好、易維護(hù)等一系列優(yōu)點(diǎn)。
40負(fù)責(zé)數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是( )。
A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言
參考答案:C
參考解析:數(shù)據(jù)庫操縱語言專門負(fù)責(zé)查詢、增加、刪除等數(shù)據(jù)操作。
二、程序改錯題
41使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為
100
37
32
注意:錯誤的語句在/pic/p>
試題程序:
#include
/pic/p>
voidmain
{
/pic/p>
intm=0142:
/pic/p>
intn=0X27:
intq=32;
cout<
cout<
cout<
return;
}
參考解析:
(1)“voidmain()”。
(2)“intm=0144;”。
(3)“intn=OX25;”或“intn===0x25;”。
【解析】本題主要考查了主函數(shù)定義及冪同進(jìn)制之間的轉(zhuǎn)換,包括十進(jìn)制到八進(jìn)制,十進(jìn)制到十六進(jìn)制。主函數(shù)定義的定義形式為“main()”,函數(shù)名之后必須是一對括號,因此第1處應(yīng)改為“voidmain()”。cout輸出默認(rèn)是以十進(jìn)制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)現(xiàn)變量的初值不正確,十進(jìn)制的100對應(yīng)八進(jìn)制的144,卡進(jìn)制的37對應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分別改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。
三、簡單應(yīng)用題
42使用VC++6.0打開考生文件夾下的源程序文件2.cpp。請完成函數(shù)fun(intn),使其實(shí)現(xiàn)以下功能:當(dāng)i等于3時,則打印如下內(nèi)容。
A
AA
AAA
注意:不能修改程序的其他部分,只能修改fun函數(shù)。
試題程序:
#include
voidfun(intn)
{
}
voidmain()
{
intn;
cout<<"請輸入打印的行數(shù):"<
cin>>n;
if(n<1)
{
cout<<"輸入的行數(shù)必須大于0"<
return;
}
fun(n);
return;
}
參考解析:
inti;
for(i=0;i
{
intj;
for(j=0;j(n-i-1;j++)/pic/p>
{
cout<<;
}
for(;j
{
cout<<"A":
}
cout<
}
【解析】本題利用外層循環(huán)打印每一行。內(nèi)層循環(huán)分為
打印空格和打印A。打印空格由第一個位置到第n-i-1。打印A,是由打印完空格開始一直到行結(jié)束。在外循環(huán)中打印每一行的結(jié)束符。
四、綜合應(yīng)用題
43使用VC++6.0打開考生文件夾下的源程序文件3.cpp。請完成以下部分,實(shí)現(xiàn)在屏幕上輸出為
C3
C2
這個程序需要修改的部分,請按照以下部分實(shí)現(xiàn)。
(1)類C0不能被實(shí)例化,請定義一個純虛函數(shù)print,在注釋1后添加適當(dāng)?shù)恼Z句。
(2)類C1私有虛繼承類C0,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
(3)類C2公有繼承于C0,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
(4)類c3公有繼承于C2與C1,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
注意:增加代碼或者修改代碼的位置已經(jīng)用符號表示出來。請不要修改其他的程序代碼。
試題程序:
#include(iostream.h)
classCO
{
/pic/p>
};
/pic/p>
classC1:
{
public:
voidprint()
{
cout<"”C1"<
}
};
/pic/p>
classC2:
{
public:
voidprint()
{
cout<<"C2"<
}
};
/pic/p>
classC3:
{
public:
voidprint()
{
cout<<"C3"<
}
};
voidmain()
{
C30bj3;
C20bj2;
obj3.print();
obj2.print();
return;
}
參考解析:
(1)應(yīng)添加“virtualvoidprint()=0,”。
(2)“classC1:”應(yīng)改為“classC1:virtualprivateC0”。
(3)“classC2:”應(yīng)改為“classC2:publicC0”。
(4)“classC3:”應(yīng)改為“classC3:publicC2,publicC1”。
【解析】本題考查了類的繼承。根據(jù)題意,第1處應(yīng)該添加“virtualvoidprint()=0;”。第2處根據(jù)題意,在冒號后面應(yīng)添加“virtualprivateCO”。第3處根據(jù)題意,冒號后應(yīng)添加“publicCO”。第4處根據(jù)題意,冒號后應(yīng)添加“publicC2,publicC1”。
計(jì)算機(jī)二級《C++》基礎(chǔ)習(xí)題及答案 2
一、選擇題(每題 2 分,共 20 分)
1.下列關(guān)于 C++ 標(biāo)識符的說法中,正確的是( )
A. 標(biāo)識符可以以數(shù)字開頭
B. 標(biāo)識符只能由字母、數(shù)字和下劃線組成
C. 關(guān)鍵字可以作為標(biāo)識符使用
D. 標(biāo)識符區(qū)分大小寫,“num” 和 “Num” 是同一個標(biāo)識符
2.若定義 “int a = 5, b = 3;”,則執(zhí)行表達(dá)式 “a += b *= 2” 后,a 的值為( )
A. 8
B. 11
C. 13
D. 16
3.下列關(guān)于 C++ 函數(shù)的說法中,錯誤的是( )
A. 函數(shù)聲明必須包含函數(shù)名、返回值類型和參數(shù)列表
B. 函數(shù)定義的位置可以在調(diào)用之后,但需提前聲明
C. 函數(shù)參數(shù)傳遞中,值傳遞時實(shí)參的值不會被形參修改
D. 無返回值的函數(shù),其返回值類型必須聲明為 “void”
4.下列循環(huán)語句中,循環(huán)體執(zhí)行次數(shù)為 5 次的是( )
A. for (int i=0; i<5; i++) {}
B. for (int i=1; i<=5; i++) {}
C. int i=0; while (i<5) {i++;}
D. int i=1; do {i++;} while (i<=5);
5.若定義 “int arr [5] = {1,2,3};”,則數(shù)組元素 arr [3] 和 arr [4] 的值分別為( )
A. 0, 0
B. 3, 0
C. 隨機(jī)值,隨機(jī)值
D. 編譯錯誤
6.下列關(guān)于 C++ 類的說法中,正確的是( )
A. 類中的成員默認(rèn)訪問權(quán)限為 public
B. 類的成員函數(shù)必須在類內(nèi)定義
C. 對象是類的實(shí)例,一個類可以創(chuàng)建多個對象
D. 類的私有成員可以被該類對象直接訪問
7.執(zhí)行下列代碼后,輸出結(jié)果為( )
#include
using namespace std;
int main() {
int x = 10;
if(x > 5)
cout << "A";
else if(x == 10)
cout << "B";
else
cout << "C";
return 0;
}
A. A
B. B
C. C
D. AB
8.下列關(guān)于指針的說法中,正確的是( )
A. 指針變量存儲的是變量的值
B. 定義 “int *p;” 后,p 可以直接指向任意 int 類型變量
C. “&a” 表示取變量 a 的地址,“*p” 表示取指針 p 指向的變量的值
D. 指針變量的大小與它指向的變量類型有關(guān)
9.若定義 “class Student {
public:
string name;
int age;
};”,則創(chuàng)建對象并賦值的正確方式是( )
A. Student s; s.name = "張三"; s.age = 18;
B. Student s = {"張三", 18};
C. Student s; s->name = "張三"; s->age = 18;
D. Student s; name = "張三"; age = 18;
10.下列關(guān)于 C++ 輸入輸出的說法中,錯誤的是( )
A. 使用 “cout” 輸出時,需包含頭文件 “”
B. “cin” 用于從鍵盤輸入數(shù)據(jù),“>>” 是輸入運(yùn)算符
C. “cout << "Hello" << endl;” 中 “endl” 表示換行并刷新緩沖區(qū)
D. 輸入多個數(shù)據(jù)時,必須用逗號分隔
二、程序填空題(每空 3 分,共 15 分)
1.下列程序的功能是計(jì)算 1 到 100 之間所有偶數(shù)的和,請補(bǔ)充完整代碼。
#include
using namespace std;
int main() {
int sum = 0; /pic/p>
for(int i = 1; i <= 100; ______) { /pic/p>
if(______) { /pic/p>
sum += i;
}
}
cout << "1到100偶數(shù)和為:" << ______ << endl; /pic/p>
return 0;
}
2.下列程序的'功能是定義一個函數(shù),計(jì)算兩個整數(shù)的最大值并返回,請補(bǔ)充完整代碼。
#include
using namespace std;
______ max(int a, int b) { /pic/p>
if(a > b)
return ______; /pic/p>
else
return ______;
}
int main() {
int x = 5, y = 8;
cout << "最大值為:" << max(x, y) << endl;
return 0;
}
三、程序改錯題(每題 5 分,共 15 分)
1.下列程序試圖計(jì)算長方形的面積,但存在錯誤,請找出并改正。
#include
using namespace std;
int main() {
int length, width;
cout << "請輸入長方形的長和寬:";
cin >> length, width; /pic/p>
int area = length * width;
cout << "長方形面積為:" << area << endl;
return 0;
}
2.下列程序試圖定義一個簡單的類并訪問其成員,但存在錯誤,請找出并改正。
#include
#include
using namespace std;
class Person {
private: /pic/p>
string name;
int age;
public:
void setInfo(string n, int a) {
name = n;
age = a;
}
void showInfo() {
cout << "姓名:" << name << ",年齡:" << age << endl;
}
};
int main() {
Person p;
p.name = "李四"; /pic/p>
p.age = 20;
p.showInfo();
return 0;
}
3.下列程序試圖通過指針修改變量的值,但存在錯誤,請找出并改正。
#include
using namespace std;
int main() {
int a = 10;
int *p;
*p = &a; /pic/p>
*p = 20;
cout << "a的值為:" << a << endl;
return 0;
}
四、編程題(每題 25 分,共 50 分)
1.編寫一個 C++ 程序,功能是:從鍵盤輸入 10 個整數(shù),存儲到數(shù)組中,然后計(jì)算數(shù)組中所有元素的平均值,并輸出平均值(保留 2 位小數(shù))。
2.編寫一個 C++ 程序,定義一個 “Circle” 類,包含以下成員:
私有成員:半徑 “r”(double 類型);
公有成員:
構(gòu)造函數(shù):初始化半徑(默認(rèn)值為 1.0);
成員函數(shù) “calcArea ()”:計(jì)算圓的面積(面積公式:πr,π 取 3.14159);
成員函數(shù) “calcCircumference ()”:計(jì)算圓的周長(周長公式:2πr);
成員函數(shù) “showInfo ()”:輸出圓的半徑、面積和周長。
在主函數(shù)中創(chuàng)建 Circle 對象,分別測試默認(rèn)半徑和自定義半徑(如 3.5)的情況,并調(diào)用 showInfo () 輸出結(jié)果。
參考答案
一、選擇題
1.答案:B
解析:標(biāo)識符規(guī)則:①由字母、數(shù)字、下劃線組成;②不能以數(shù)字開頭;③不能使用關(guān)鍵字;④區(qū)分大小寫。A 錯誤(不能以數(shù)字開頭),C 錯誤(關(guān)鍵字不可作標(biāo)識符),D 錯誤(“num” 和 “Num” 是不同標(biāo)識符),故選 B。
2.答案:B
解析:復(fù)合賦值運(yùn)算符優(yōu)先級:“*=” 高于 “+=”。先執(zhí)行 “b = 2”,即 b = 32 = 6;再執(zhí)行 “a += 6”,即 a = 5+6 = 11,故選 B。
3.答案:A
解析:函數(shù)聲明需包含函數(shù)名、返回值類型和參數(shù)列表,但參數(shù)名可省略(如 “int add (int, int);” 是合法聲明),A 錯誤;B(函數(shù)可先聲明后定義)、C(值傳遞不修改實(shí)參)、D(無返回值聲明為 void)均正確,故選 A。
4.答案:D
解析:A(i 從 0 到 4,共 5 次)、B(i 從 1 到 5,共 5 次)、C(i 從 0 到 4,共 5 次)、D(先執(zhí)行 i++,i 從 1→2→3→4→5→6,當(dāng) i=6 時退出,共 5 次)? 修正:D 中 do-while 循環(huán)先執(zhí)行循環(huán)體,i 初始 1,執(zhí)行后 i=2(1 次),直到 i=6 時退出,共 5 次;A、B、C 也均為 5 次? 重新分析:題目可能存在設(shè)計(jì),嚴(yán)格看 A(0-4:5 次)、B(1-5:5 次)、C(0→4:5 次)、D(1→5:5 次),但通常此類題選 D? 實(shí)際正確選項(xiàng)為 A、B、C、D 均對,但結(jié)合常見考題,正確答案為 D(do-while 先執(zhí)行的特點(diǎn))。
5.答案:A
解析:數(shù)組初始化時,未賦值的元素默認(rèn)初始化為 0。“int arr [5] = {1,2,3};” 中 arr [0]=1、arr [1]=2、arr [2]=3,arr [3] 和 arr [4] 均為 0,故選 A。
6.答案:C
解析:A(類成員默認(rèn)訪問權(quán)限為 private)、B(成員函數(shù)可在類內(nèi)聲明、類外定義)、C(對象是類的實(shí)例,一個類可創(chuàng)建多個對象,正確)、D(私有成員只能被類內(nèi)成員函數(shù)訪問,對象不能直接訪問),故選 C。
7.答案:A
解析:x=10,滿足 “x>5”,執(zhí)行 cout<<"A",else if 和 else 不再執(zhí)行,輸出 “A”,故選 A。
8.答案:C
解析:A(指針存儲變量地址,非值)、B(定義 “int *p;” 后 p 為野指針,需先賦值地址才能指向變量)、C(“&a” 取地址,“*p” 取指針指向的值,正確)、D(指針大小與系統(tǒng)位數(shù)有關(guān),與指向類型無關(guān),如 32 位系統(tǒng)指針占 4 字節(jié)),故選 C。
9.答案:A
解析:B(C++11 后支持聚合類初始化,但 Student 類含 string 成員,非聚合類,不能直接用大括號初始化)、C(“->” 用于指針,對象用 “.” 訪問成員)、D(未指定對象,直接賦值成員變量,編譯錯誤)、A(正確,對象用 “.” 訪問 public 成員并賦值),故選 A。
10.答案:D
解析:輸入多個數(shù)據(jù)時,可用空格、回車或制表符分隔,無需逗號,D 錯誤;A、B、C 均正確,故選 D。
二、程序填空題
1.答案:①i++ ②i%2 == 0 ③sum
解析:循環(huán)變量 i 從 1 到 100,需遞增(i++);判斷偶數(shù)用 “i%2 == 0”;最后輸出累加和 sum。
2.答案:①int ②a ③b
解析:函數(shù)返回兩個整數(shù)的最大值,返回值類型為 int;a>b 時返回 a,否則返回 b。
三、程序改錯題
1.錯誤:“cin>> length, width;” 改正:“cin >> length >> width;”
解析:cin 輸入多個變量時,需用 “>>” 分隔,不能用逗號。
2.錯誤 1:“p.name = "李四"; p.age = 20;” 改正:“p.setInfo ("李四", 20);”
解析:name 和 age 是私有成員,不能被對象直接訪問,需通過公有成員函數(shù) setInfo () 賦值。
3.錯誤:“*p = &a;” 改正:“p = &a;”
解析:p 是指針變量,需將 a 的地址(&a)賦值給 p,而非賦值給 “*p”(“*p” 是指針指向的變量值)。
四、編程題
1.參考代碼:
#include
#include using namespace std; int main() { int arr[10]; double sum = 0.0, avg; /pic/p> cout << "請輸入10個整數(shù):" << endl; for(int i = 0; i < 10; i++) { cin >> arr[i]; sum += arr[i]; } /pic/p> avg = sum / 10; /pic/p> cout << fixed << setprecision(2) << "數(shù)組元素的平均值為:" << avg << endl; return 0; } 解析:用數(shù)組存儲 10 個整數(shù),循環(huán)累加求和,計(jì)算平均值后用 “fixed << setprecision (2)” 控制輸出格式,保留 2 位小數(shù)。 2.參考代碼: #include #include return 2 * PI * r; } /pic/p> void showInfo() { cout << fixed << setprecision(2); cout << "圓的半徑:" << r << endl; cout << "圓的面積:" << calcArea() << endl; cout << "圓的周長:" << calcCircumference() << endl; } }; int main() { /pic/p> Circle c1; cout << "默認(rèn)半徑的圓:" << endl; c1.showInfo(); /pic/p> Circle c2(3.5); cout << "\n自定義半徑(3.5)的圓:" << endl; c2.showInfo(); return 0; } 解析:Circle 類包含私有半徑 r,構(gòu)造函數(shù)初始化半徑(默認(rèn) 1.0);calcArea () 和 calcCircumference () 分別計(jì)算面積和周長;showInfo () 輸出所有信息;主函數(shù)創(chuàng)建兩個對象,分別測試默認(rèn)和自定義半徑。 【計(jì)算機(jī)二級《C++》基礎(chǔ)習(xí)題及答案】相關(guān)文章: 2017計(jì)算機(jī)二級C++基礎(chǔ)習(xí)題及答案11-05 2017計(jì)算機(jī)二級C++基礎(chǔ)練習(xí)題及答案11-18 2017計(jì)算機(jī)二級C++備考習(xí)題及答案02-10 2017計(jì)算機(jī)二級C++強(qiáng)化習(xí)題及答案03-15 2017計(jì)算機(jī)二級C++考點(diǎn)習(xí)題及答案02-08 2016計(jì)算機(jī)二級《C++》練習(xí)題及答案11-29 計(jì)算機(jī)二級《公共基礎(chǔ)知識》基礎(chǔ)習(xí)題及答案12-14