版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2023年江西省景德鎮(zhèn)市全國計算機(jī)等級考
試C++語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、1.選擇題(10題)
1.以下敘述正確的是()。
A.函數(shù)可以嵌套定義但不能嵌套調(diào)用
B.函數(shù)既可以嵌套調(diào)用也可以嵌套定義
C函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用
D.函數(shù)可以嵌套調(diào)用但不可以嵌套定義
2.下列敘述中,不屬于測試的特征的是()o
A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經(jīng)
濟(jì)性
3.對于長度為n的線性表,在最壞情況下,下列各種排序法所對應(yīng)的比
較次數(shù)中正確韻是()。
A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-
1)/2
4.算法的空間復(fù)雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲
空間D.算法執(zhí)行過程中所需要的存儲空間
5.以下程序的執(zhí)行結(jié)果為()。#include<iostream.h>classSample{int
n;public:Sample(inti){n=i;}operator++(){n++;}〃前綴重載運算符
operator++(int){n+=2;)〃后綴重載運算符voiddisp(){cout<<"n="<<
n<<endl;}};voidmain(){SampleA(2),B(2);A++;++B;A.dispO;
B.dispO;}
A.n=4n=3B.n=ln=2C.n=3n=4D.n=5n=6
6.以下C++語言中用于單行注釋的是
A.//B./*C.*/D.|
7.有如下程序:#include{iostream)usingnamespacestd;classBase
{private:charc;public:Base(charn):c(n){}~Base(){cout〈〈c;}};
classDerived:publicBase{private:charc;public:Derived(char
n):Base(n+l),c(n){}~Derived(){cout〈〈c;}};intmain(){Derived
obj('x');return0;}執(zhí)行上面的程序?qū)⑤敵?)。
A.xyB.yxC.xD.y
8.對于順序存儲的隊列,存儲空間大小為n,頭指針為F,尾指針為R。
若在邏輯上看成一個環(huán),則隊列中元素的個數(shù)為O
A.R-FB.n+R-FC.(R-F+l)modnD.(n+R-F)modn
9.下列敘述中正確的是()。
A.順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈?zhǔn)酱鎯Y(jié)構(gòu)的存儲空間不一定
是連續(xù)的
B.順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈?zhǔn)酱鎯Y(jié)構(gòu)只針對非線性結(jié)構(gòu)
C.順序存儲結(jié)構(gòu)能存儲有序表,鏈?zhǔn)酱鎯Y(jié)構(gòu)不能存儲有序表
D.鏈?zhǔn)酱鎯Y(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間
10.下列說法正確的是()。
A.內(nèi)聯(lián)函數(shù)在運行時是將該函數(shù)的目標(biāo)代碼插入每個調(diào)用該函數(shù)的地
方
B.內(nèi)聯(lián)函數(shù)在編譯時是將該函數(shù)的目標(biāo)代碼插入每個調(diào)用該函數(shù)的地
方
C.類的內(nèi)聯(lián)函數(shù)必須在類體內(nèi)定義
D.類的內(nèi)聯(lián)函數(shù)必須在類體外通過加關(guān)鍵字inline定義
二、單選題(13題)
11.若有下面的函數(shù)調(diào)用:fun(fl+b,3,max(n-1,B.)則fun的實參
個數(shù)是()。
A.3B.4C.5D.6
12.下列有關(guān)繼承和派生的敘述中,正確的是
A.派生類不能訪問基類的保護(hù)成員
B.作為虛基類的類不能被實例化
C.派生類應(yīng)當(dāng)向基類的構(gòu)造函數(shù)傳遞參數(shù)
D.虛函數(shù)必須在派生類中重新實現(xiàn)
13.下列關(guān)于成員函數(shù)特征的描述中錯誤的是()。
A.成員函數(shù)可以重載B.成員函數(shù)一定是內(nèi)聯(lián)函數(shù)C.成員函數(shù)可以是
靜態(tài)的D.成員函數(shù)可以設(shè)置參數(shù)的默認(rèn)值
14.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定
的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是
()o
A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭
15.關(guān)于內(nèi)聯(lián)函數(shù)的說法,不正確的是()。
A.在說明類的同時定義成員函數(shù),則函數(shù)隱含為內(nèi)聯(lián)函數(shù)
B.也可在類外用inline關(guān)鍵字對成員函數(shù)進(jìn)行說明,則該函數(shù)也為內(nèi)聯(lián)
函數(shù)
C.當(dāng)內(nèi)聯(lián)函數(shù)被調(diào)用時,內(nèi)聯(lián)函數(shù)的代碼在調(diào)用處被展開
D.當(dāng)內(nèi)聯(lián)函數(shù)被調(diào)用時,內(nèi)聯(lián)函數(shù)將返回結(jié)果
16.有如下程序:
#include<iostream>
usingnamespacestd;
classMonkey{
public:
MonkeyO{cout?'M';}
Monkey(charn){cout?n;}
-Monkey(){cout?'Y';}
};
intmain(){
Monkeypl,*p2;
p2=newMonkey('X');
deletep2;
return0;
)
運行這個程序的輸出結(jié)果是
A.MYXB.MYMYC.MXYD.MXYY
17.下面關(guān)于虛函數(shù)的描述中正確的是()o
A.虛函數(shù)是一^靜態(tài)成員函數(shù)
B.虛函數(shù)是一個非成員函數(shù)
C.虛函數(shù)可以在函數(shù)說明時定義,也可以在函數(shù)實現(xiàn)時定義
D.派生類的虛函數(shù)與基類中對應(yīng)的虛函數(shù)具有相同的參數(shù)個數(shù)和類型
18.下列關(guān)于數(shù)據(jù)庫系統(tǒng)的敘述中正確的是()。
A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余
B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余
C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致
D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)
19.以下程序的輸出結(jié)果是#include<iostream.h>voidreverse(inta[],
intn){inti,t;for(i=0;<n/2;i++){t=a[i]=a[i]=a[n-l-i];a[n-l-i]=t;}}
voidmain(){intb[10]={l,2,3,4,5,6,7,8,9,10};inti,s=0;
reverse(b,8);for(i=6;i<10;i++)s+=b[i];cout<<s;}
A.22B.10C.34D.30
20.語句int*P=&k;定義了指針P,與這個語句等效的語句序列是()。
A.int*p;P=&k;
B.int*P;P=k;
C.int*p;*P=&k;
D.int*p;*P=k;
21.下列選項,不正確的是()。
A.for(inta=l;a<=10;a++);
B.inta=l;do{a++:}while(a<=10);
C.inta=l;while(a<=10){a++:}
D.for(inta=l;a<=10;a++)a++;
22.模板對類型的參數(shù)化提供了很好的支持,因此()。
A.類模板的主要作用是生成抽象類
B.類模板實例化時,編譯器將根據(jù)給出的模板實參生成一個類
C.在類模板中的數(shù)據(jù)成員都具有同樣類型
D.類模板中的成員函數(shù)都沒有返回值
23.假定MyClass為一個類,那么下列的函數(shù)說明中,()為該類的
析構(gòu)函數(shù)。
A.void-MyClass();
B.~MyClass(intn);
C.MyClass();
D.~MyClass();
三、2.填空題(12題)
24.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的
25.以下程序的輸出結(jié)果是【】。
#include<iostream.h>
voidmain()
)
inta=0;
a+=(a=8);
cout<<a;
)
26.C++語言中的基本符號可以分為____三類。
27.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個【】。
28.面向?qū)ο蟮某绦蛟O(shè)計方法中涉及的對象是系統(tǒng)中用來描述客觀事物
的一個【】。
29.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。
30.測試的,目的是暴露錯誤,評價程序的可靠性;而【】的目的是發(fā)
現(xiàn)錯誤的位置并改正錯誤。
31.以下函數(shù)模板min的功能是返回數(shù)組a中最小元素的值。請將橫線
處缺失部分補(bǔ)充完整。
template<typenameT>Tmin(Ta[],intn)
(
Ttemp=a[01;
for(inti=l,i<n;i++)
if(a[i]<temp);
returntemp;
)
32.虛函數(shù)必須是類的【】。
33.假定用戶沒有給一個名為MyClass的類定義析構(gòu)函數(shù),則系統(tǒng)為其
定義的默認(rèn)析構(gòu)函數(shù)首部形式為【】。
34.插入排序算法的主要思想:每次從未排序序列中取出一個數(shù)據(jù),插
入到已排序序列中的正確位置。Insert類的成員函數(shù)sort。實現(xiàn)了插入排
序算法,請?zhí)羁铡?/p>
classInsert{
public:
Insert(int*bO,intnO):b(bO),n(nO)<);〃參數(shù)bO是某數(shù)組首地址,n是數(shù)組
元素個數(shù)
voidsort()
{〃此函數(shù)假設(shè)已排序序列初始化狀態(tài)只包含b[0],未排序序列初始為
for(inti=l;i<n;++i)
intt=b[i];
intj;
for(;j>0;-j)
(
if(t>=bU-l])
break;
b[j]=b[j-l];
b[j]=t;
}
)
)
35.重載的運算符保持其原有的【】、優(yōu)先級和結(jié)合性不變。
四、程序改錯題(10題)
36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程
序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正
確。
程序輸出:
8
8
注意:錯誤的語句在/********error********/的下面。修改該語句
即可,其他的語句不能修改。
試題程序:
#include(iostream.h>
classCO
{
public:
I********enor********/
staticintn=O:
CO
n++:
)
?CO
(
n—:
)
):
<!>*1**1**1**1**1**1**1**A?*A?*1**!*/
/不不不不不不不不crrcr不不不不不不下不/
intCO::n;
voidmain
(
COobj;
COobj2[7];
CO*C=NULL:
c=&obj:
<!**!>>1**1**1**.1**.£**4*?X**1**1**5**1**!*/
/不不小不不不不下errcr不不不個不不不不/
eout?C.n?endl;
cout?C0::n?endl;
)
37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=1
number=10
number=100
注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h>
classTC
(
public:
TC(inti)
(
number=i;
)
voidSetNumber(intm)
(
number=m;
)
intGetNumberconst
{
retumnumber;
)
voidPrintconst
(
cout?"number="?number?endl;
)
private:
intnumber;
};
voidmain
{
I!********error********
TCobjl;
objl.Print;
TCobj2(3);
II********error********
objl.number=10;
I/********error*******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
)
38.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
try
(
throw("error");
)
/*1**1**1**!**1*、上*1*7,*1**1**1**1**1*、1,
//個不不不■不平不個errcr個不不不不不不不
catch(chars)
{
cout?s?endl;
)
try
(
throw((int)0);
)
/*1>*1**1**1**1**1*、1,
//不不不不不不不個prrcr不不不不不不不不
catch
(
cout?i?endl;
)
try
(
throw(O);
throw("error");
}
/*1**1**1**1*、卜*1*、,,*1**1^>1*<1**1**1*、!,
//小不不小不下不不ermr不不不不不不不不
catch
(
cout?"ERROR"?endl;
returnO;
39.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(xiàn)
的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
I!******error******-jx'p^~|
試題程序:
#include<iostream>
#include<fstream>
!1********enor********
usingstd;
voidWriteFile(char*s)
(
ofstreamoutl;
!1********enor********
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=0;i++)
(
II********error********
outl.puts(s[i]);
)
outl.close;
)
voidClearFile
{
ofstreamoutl;
outl.open("l.txt");
outl.close;
)
intmain
(
chars[1024];
ClearFile;
cout?"pleaseinputastrin9:"?endl;
cin.getline(s,1024);
WriteFile(s);
retumO;
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為
100
37
32
注意:錯誤的語句在//******error******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
II******enor******
voidmain
II******error******
intm=0142:
I/******ej*j*or******
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=1
number=10
number=100
注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc*r******的下面。
試題程序:
#include<iostream.h>
classTC
{
public:
TC(inti)
{
number=i;
voidSetNumber(intm)
number=m;
)
intGetNumberconst
(
returnnumber;
)
voidPrintconst
(
cout?"number="?number?endl;
)
private:
intnumber;
voidmain
!1********error********
TCobjl;
objl.Print;
TCobj2(3);
!1********error********
objl.number=10;
II********ej*j*or*******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
42.使用VC++6.0打開考生文件夾下的源程序文件1.cppo本程序要
求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸
入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕
中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc*r******的下面。
試題程序:
#include<iostream.h>
voidmain
(
inti=O;
charstr[120];
cout?"Enterastringendwith?."?endl;
!1********enor********
cin.getline(str,120);
II********enor********
while(str)
!1********enor********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
)
cout?str?endl;
return;
)
43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(jié)果
為:
sizeof(Sl)=5
sizeof(s2)=10
sizeof(s3)=l
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
⑴不能刪除assert()語句。
(2)只能修改后面的數(shù)字。
提示:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。
試題程序:
#include<iostream.h>
#include<assert.h>
voidmain()
(
char*sl="abc":
II********ej*ror********
assert(sizeof(s1)==3):
cout?"sizeof(sl)=5"?endl;
chars2[10]="ab":
//********error********
assert(sizeof(s2)==2);
cout?"sizeof(s2)=10"?endl;
chars3=23:
1I********error********
assert(sizeof(s3)==4);
cout?"sizeof(s3)=l"?endl;
return;
)
44.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
{
throw("error");
catch(chars)
(
cout?s?endl;
)
try
{
throw((int)0);
)
//********error********
catch
(
cout?i?endl;
)
try
{
throw(O);
throw("error");
}
I!********enor********
catch
(
cout?"ERROR"?endl;
)
retumO;
}
45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯誤,請改正程序中的錯誤,使得程序輸出:
9,8,7,6,5
注意:錯誤的語句在/********error********/的下面,修改該語句即
可。其他的語句不能修改。
試題程序:
#include(iostream.h>
classTC
!********enor********/
TC(inti)
(
m_i=i;
)
voidprint
(
cout?—m_i?,;
)
public:
intm_i;
);
intmain
I********error********/
inti;
TC04(10);
while(i>5)
I**************!
1++:
04.print;
)
cout?endl;
returnO;
)
五、綜合應(yīng)用題(2題)
46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。請完成
以下部分,實現(xiàn)在屏幕上輸出為
C3
C2
這個程序需要修改的部分,請按照以下部分實現(xiàn)。
(1)類CO不能被實例化,請定義一個純虛函數(shù)print,在注釋1后添加
適當(dāng)?shù)恼Z句。
(2)類C1私有虛繼承類CO,請在注釋2后添加適當(dāng)?shù)恼Z句。
(3)類C2公有繼承于CO,請在注釋3后添加適當(dāng)?shù)恼Z句。
(4)類c3公有繼承于C2與C1,請在注釋4后添加適當(dāng)?shù)恼Z句。
注意:增加代碼或者修改代碼的位置已經(jīng)用符號表示出來。請不要修
改其他的程序代碼。
試題程序:
#include(iostream.h)
classCO
(
};
II********2********
classCl:
public:
voidprint
cout<",,Cl"<<endl;
classC2:
public:
voidprint
cout<<"C2"<<endl;
};
//********4***x****
classC3:
public:
voidprint
cout<<"C3"<<endl;
};
voidmain
C3Obj3;
C20bj2;
obj3.print;
obj2.print;
return;
)
47.請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程
proj3,其中包含了類IntegerSet和主函數(shù)main的定義。一個IntegerSet
對象就是一個整數(shù)的集合,其中包含。個或多個無重復(fù)的整數(shù);為了
便于進(jìn)行集合操作,這些整數(shù)按升序存放在成員數(shù)組elem的前若干單
元中。成員函數(shù)add的作用是將一個元素添加到集合中(如果集合中不
存在該元素),成員函數(shù)remove從集合中刪除指定的元素(如果集合中
存在該元素)。請編寫成員函數(shù)remove。在main函數(shù)中給出了一組測
試數(shù)據(jù),此時程序的正確輸出結(jié)果應(yīng)為:
23452728316675
234562728315675
23456192728316675
3456192728316675
3456192728316675
要求:
補(bǔ)充編制的內(nèi)容寫在“〃***********333************與
“〃***********666************之間,不得修改程序的其他部分。
注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile
已經(jīng)編譯為。bj文件,并且在本程序中調(diào)用。
//IntegorSet.h
#ifndefINTEGERSET
#defineINTEGERSET
#include<iostream>
usingnamespacestd;
constintMAXELEMENTS=100;
//集合最多可擁有的元素個數(shù)
classIntegerSet{
intelem[MAXELEMENTS];
//用于存放集合元素的數(shù)組
intcounter;//用于記錄集合中元素個數(shù)的計數(shù)器
public:
IntegerSet:counter(0){}
〃創(chuàng)建一個空集合
IntegerSet(intdata[],intsize);
//利用數(shù)組提供的數(shù)據(jù)創(chuàng)建一個整數(shù)集合
voidadd(intelement);
〃添加一個元素到集合中
voidremeve(intelement);
〃刪除集合中指定的元素
intgetCountconst{returncounter;}
〃返回集合中元素的個數(shù)
intgetElement(inti)const{returnelem[i];}〃返回集合中指定的元素
voidshowconst;
};
voidWriteToFile(char*);
#endif
//main,cpp
#include,,IntegerSet.h"
#include<inmanip>
IntegerSet::IntegerSet(intdata[],intsize):counter(0){
for(inti=0;i<size;i++)
add(data[i]);
)
)
voidIntegerSet::add(intelement){
intj;
〃從后往前尋找第一個小于等于element的元素
for(j=counter;j>0;j-)
if(element>=elem[j一l])break;
〃如果找到的是等于element的元素,說明要添加的元素已經(jīng)存在,直
接返回
if(element==elemfj-1])return;
〃如果找到的是小于element的元素,j就是要添加的位置
//該元素及其后面的元素依次后移,騰出插入位置
for(intk=counter;k>j;k一)
elem[k]=elem[k一1];
elem[j]=element;〃將element插入到該位置
counter++;〃計數(shù)器加1
voidIntegerSet::remove(intelement){
〃***************333***************
voidIntegerSet::showconst{
for(inti=0;i<getCount;i++)
cout?setw(4)?getElement(i);
cout?endl:
)
intmain{
intd[]={5,28,2,4,5,3,2,75,27,66,31);
IntegerSetS(d,11);S.show;
S.add(6);s.show;
S.add(19);S.show;
S.remove(2);s.show;
S.add(4);S.show;
,,,,
writeToFile();
return0;
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程MyProj80此工程包含一個源程
序文件MyMain8.cpp,該程序?qū)崿F(xiàn)棧的入棧和出棧的操作。其中有兩個
類:一個是節(jié)點類node,它包含節(jié)點值和指向上一個節(jié)點的指針prey;
另一個類是棧類stack,它包含棧的頭指針top。但類的定義并不完整。
請按要求完成下列操作,將類Sample的定義補(bǔ)充完成:
①定義私有節(jié)點值data,它是血型的數(shù)據(jù),以及定義一個指向上一個節(jié)
點的指針prev。請在注釋“〃**1**”之后添加適當(dāng)?shù)恼Z句。
②完成構(gòu)造函數(shù)node(intd,node*n)的定義,使得私有成員data和prev分
別初始化為d和no請在注釋“//**2**”之后添加適當(dāng)?shù)恼Z句。
③完成類stack的成員函數(shù)push(inti)的類體內(nèi)的定義。函數(shù)push()實現(xiàn)
入棧這個操作,即把形參i壓入棧中,那么此時應(yīng)該創(chuàng)建一個新的節(jié)點,
并讓這個節(jié)點的prev指針指向棧頂。請在注釋“//**3**”之后添加適當(dāng)
的語句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件MyMain8.cpp清單如下:
//MyMain8.cpp
#include<iostream>
usingnamespacestd;
classstack;
classnode
(
private:
〃**]**
public:
node(intd,node*n)
(
〃**2**
)
friendclassstack;
);
classstack
node*top;//棧頭
public:
stack()
{
top=0;
)
voidpush(inti)
(
〃**3**
)
intpop()
{
node*t=top;
if(top)
(
top=top->prev;
intc=t->data;
deletet;
returnc;
)
return0;
)
);
intmain()
(
stacks;
s.push(6);
s.push(3);
s.push(l);
return0;
49.使用VC6打開考生文件夾下的工程test32_3o此工程包含一個
test32_3.cpp,其中定義了復(fù)數(shù)類complex,但該類的定義并不完整。請
按要求完成下列操作,將程序補(bǔ)充完整。
(1)定義復(fù)數(shù)類complex的私有數(shù)據(jù)成員real和image,用來分別表示復(fù)
數(shù)的實部和虛部,它們都是double型的數(shù)據(jù)。請在注釋“〃**1**”之后添
加適當(dāng)?shù)恼Z句。
(2)添加復(fù)數(shù)類complex的帶一個參數(shù)的構(gòu)造函數(shù),分別將real和image
賦值為參數(shù)r的值和0.0,請在注釋“〃**2**”之后添加適當(dāng)?shù)恼Z句。
⑶完成復(fù)數(shù)類complex的“+”運算符重載成員函數(shù)的定義,兩個復(fù)數(shù)相
加是將復(fù)數(shù)的實部和虛部分別進(jìn)行相加,請在注釋“〃**3**”之后添加適
當(dāng)?shù)恼Z句。
(4)完成復(fù)數(shù)類complex的友元函數(shù)isequal(complex*cl,complex*c2)的
定義,如果復(fù)數(shù)cl與c2相等即cl與c2的實部和虛部分別相等,則返
回1,否則返回0。請在注釋“〃**4**”之后添加適當(dāng)?shù)恼Z句。
程序輸出結(jié)果如下:
36+0i=36+0i
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test32_3.cpp清單如下:
#include<iostream.h>
classcomplex
{
public:
complex(){real=image=O.O;}
complex(doubler)
〃**2**
)
complexoperator+(constcomplex&c);
friendboolisequal(complex*cl,complex*c2
voiddisplayO;
);
complexcomplex::operator+(constcomplex&c)
{
〃**3**
temp.real=real+c.real;
temp.image=image+c.image;
returntemp;
)
boolisequal(complex*cl,complex*c2)
(
//**4**
return1;
else
return0;
)
voidcomplex::display()
(
cout<<real;
if(image>=0)cout<<<<image<<"i";
elseif(image<0)cout<<image<<"i";
)
voidmain()
(
complexcl,c2(36.0);
cl=cl+c2;
cl.displayO;
if(isequal(&cl,&c2))cout<<
elsecoat<<"<>
c2.display();
cout<<end1;
)
參考答案
1.D解析:在C語言中,所有的函數(shù)都是平行的,即在定義函數(shù)時是互
相獨立的,一個函數(shù)并不從屬于另一個函數(shù),即函數(shù)不能嵌套定義,但
可以互相調(diào)用,但不能調(diào)用main函數(shù)。注意:函數(shù)不能嵌套定義,但
可以嵌套調(diào)用,故選項A)、B)和C)中的描述都錯誤。
2.C解析:軟件測試的目標(biāo)是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程
序中的錯誤,給出程序可靠性的鑒定。它有3個方面的重要特征,即測
試的挑剔性、完全測試的不可能性及測試的經(jīng)濟(jì)性。其中沒有測試的可
靠性這一說法。注意:軟件測試與軟件調(diào)試的概念,以及相應(yīng)的方法。
3.D
4.D【解析】算法的空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。一
個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所
占的存儲空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算
法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空
間。如果額外空間量相對于問題規(guī)模來說是常數(shù),則稱該算法是原地工
作的。在許多實際問題中,為了減少算法所占的存儲空間,通常采用壓
縮存儲技術(shù),以便盡量減少不必要的額外空間。
5.A解析:此題考查的是“++”運算符的重載。為了區(qū)分前綴和后綴運算
符,規(guī)定:重載后綴運算符時必須多一個虛擬參數(shù):int。本題中,A(2)
首先給n賦值2,語句A++,調(diào)用的是后綴運算符重載語句,使得n加
2變?yōu)?。B(2)首先給n賦值2,然后語句++B,調(diào)用前綴運算符重載函
數(shù),使得n加1。因此最終的輸出結(jié)果是n=4n=3。
6.A解析:C++語言中的注釋與C潔言不同,C語言的注釋符號只有/*
*/,而C++在此基礎(chǔ)上又加上了//,此注釋用于單行注釋。注意:注釋
不影響程序的運行。
7.A解析:在C++中,由于析構(gòu)函數(shù)不能被繼承,因此在執(zhí)行派生類的
析構(gòu)函數(shù)時,基類的析構(gòu)函數(shù)也將被調(diào)用。執(zhí)行順序是先執(zhí)行派生類的
析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù),其順序與執(zhí)行構(gòu)造函數(shù)的順序正好
相反。在此題的程序中,在主函數(shù)結(jié)束時,派生類Derived對象。obj將
被刪除,所以就會調(diào)用對象的析構(gòu)函數(shù)。先調(diào)用派生類的析構(gòu)函數(shù),輸
出x,然后調(diào)用基類的析構(gòu)函數(shù),輸出y。
8.D解析:循環(huán)隊列中,頭指針指向的是隊頭元素的前一個位置,而尾
指針的是隊尾元素所在的位置,因此隊列中元素的個數(shù)為(n+R.F)mod
no
9.A
解析:順序存儲結(jié)構(gòu)就是用一組地址連續(xù)的存儲單元依次存儲該線性
表中的各個元素,鏈?zhǔn)酱鎯Y(jié)構(gòu)中各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)
的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致,所以
選項A是正確的。兩者都可以存儲線性的、有序的邏輯結(jié)構(gòu),所以選
項B、C不正確。順序結(jié)構(gòu)使用的是連續(xù)物理空間,鏈?zhǔn)浇Y(jié)構(gòu)可以使
用零散的物理空間存儲,鏈?zhǔn)浇Y(jié)構(gòu)更靈活,不存在誰節(jié)約空間的說
法,所以選項D不正確。
10.B解析:本題考查的是內(nèi)聯(lián)函數(shù)的定義,引入內(nèi)聯(lián)函數(shù)是為了解決
程序中函數(shù)調(diào)用的效率問題,是以目標(biāo)代碼的增加為代價換取時間的節(jié)
??;一般函數(shù)在運行時被調(diào)用,而調(diào)用的內(nèi)聯(lián)函數(shù)在編譯時就被替代了,
如果不加inline關(guān)鍵字,則編譯器會將在類說明部分定義的任何函數(shù)都
被認(rèn)定為內(nèi)聯(lián)函數(shù)。
11.A
本題考查函數(shù)實參個數(shù)的基礎(chǔ)知識,根據(jù)實參的概念,(a+b)、3、
mflJc(n-1,b)分別為其中的3個實參。故答案為A。
12.C
解析:本題考查的知識點是:繼承和派生。無論使用哪種繼承方式,
派生類中的成員都不能訪問基類中的私有成員,而可以訪問基類中的
公有成員和保護(hù)成員,因此選項A)不正確。在C++中,只有抽象類
不能被實例化,而虛基類不一定非得是抽象類,所以選項B)不正確。
在派生類中可以重新定義從基類繼承下來的虛函數(shù),也可以不重新定
義,因此選項D)不正確。故本題應(yīng)該選擇C。
13.B解析:C++中,成員函數(shù)可以是內(nèi)聯(lián)函數(shù),也可以不是內(nèi)聯(lián)函數(shù)。
在類定義體外實現(xiàn)的函數(shù)可以通過在函數(shù)說明和定義上分別加上inline
來表示函數(shù)是內(nèi)聯(lián)函數(shù),否則就不是內(nèi)聯(lián)函數(shù)。
14.A解析:數(shù)據(jù)流圖包括4個方面,即加工(轉(zhuǎn)換)(輸入數(shù)據(jù)經(jīng)加工變
換產(chǎn)生輸出)、數(shù)據(jù)流CG箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)
據(jù)流名)、存儲文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、
源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體)。不包括選項中的
控制流。
15.D解析:內(nèi)聯(lián)函數(shù)被調(diào)用時,只是把代碼在被調(diào)用處展開,不是把函
數(shù)的運算結(jié)果返回。
16.A
17.DD。【解析】本題考查虛函數(shù)的概念。虛函數(shù)是非靜態(tài)的成員函數(shù),
它不能是友元函數(shù),但可以在另一個類中被聲明為友元函數(shù)。虛函數(shù)必
須是類的成員函數(shù),虛函數(shù)聲明只能出現(xiàn)在類定義的函數(shù)原型聲明中,
而不能在成員函數(shù)的函數(shù)體實現(xiàn)的地方,一般要求基類中說明了虛函數(shù)
后,派生類說明的虛函數(shù)應(yīng)該與基類中虛函數(shù)的參數(shù)個數(shù)相等,對應(yīng)參
數(shù)的類型相同。如果不相同,則將派生類虛函數(shù)的參數(shù)類型強(qiáng)制轉(zhuǎn)換為
基類中虛函數(shù)的參數(shù)類型。
18.A
19.A解析:在main函數(shù)中,調(diào)用reverse函數(shù)將b數(shù)組中的前8個成員
進(jìn)行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,
9,10),在執(zhí)行for循環(huán)結(jié)構(gòu)后,將b[6],b[7]……b[9]的值相加,結(jié)果
為1+2+9+10=22。注意:在計算累加和時,應(yīng)將累加變量賦值為零。
20.A
解析:本題考查的知識點是:指針的賦值。題目中的語句int*p=&k;
有兩個作用:首先,定義了一個int型指針p;然后,將變量k的地址
&k賦給剛定義的指針p。所以等效的語句序列為:int*p;p=&k;,應(yīng)
該選擇Ao
21.B解析:本題考查的是基本循環(huán)語句的使用,選項A),選項C)和選
項D)都為正確的形式,在選項B)中的while(a<=10)后缺少結(jié)束符分號
,,
22.B
本題考查類模板的基本概念。類模板的定義和聲明都以關(guān)鍵字template
開頭。關(guān)鍵字后面是一個用逗號分隔的模板參數(shù)表,用尖括號“<>”括
起來,這個表被稱為類模板的模板參數(shù)表。類模板是類的抽象,類是
類模板的實例。類模板使類中的一些數(shù)據(jù)成員和成員函數(shù)的參數(shù)或返
回值可以取任意的數(shù)據(jù)類型。所以B選項正確。
23.D解析:本題考核類的析構(gòu)函數(shù)。在C++中,析構(gòu)函數(shù)名為符號“?”
加類名,析構(gòu)函數(shù)沒有參數(shù)和返回值。根據(jù)以上知識可知,MyClass類
的正確析構(gòu)函數(shù)的說明為~MyClass()。
24.模式或邏輯模式或概念模式模式或邏輯模式或概念模式
25.1616解析:賦值表達(dá)式的值就是所賦值變量的值,本題中a+=8相當(dāng)
于a=a+8,對表達(dá)式逐步進(jìn)行求解:a+=(a=8)此時,a的值由于賦值為8,
而不是o
a+=8
a=a+8
a=16
注意:要掌握“+=”等相關(guān)運算符的用法。
26.字母數(shù)字特殊符號字母數(shù)字特殊符號
27.關(guān)系關(guān)系解析:在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二
維表稱為一個關(guān)系。表中的每一列稱為一個屬性,相當(dāng)于記錄中的一個
數(shù)據(jù)項,對屬性的命名稱為屬性名;表中的一行稱為一個元組,相當(dāng)于
記錄值。
28.實體實體解析:面向?qū)ο蟮某绦蛟O(shè)計方法中涉及的對象是系統(tǒng)中用
來描述客觀事物的一個實體,是構(gòu)成系統(tǒng)的一個基本單位,它由一組表
示其靜態(tài)特征的屬性和它可執(zhí)行的一組操作組成。
29.存儲結(jié)構(gòu)存儲結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指反映數(shù)據(jù)元素之間邏
輯關(guān)系的數(shù)據(jù)結(jié)構(gòu);數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)存儲
空間中的存放形式。在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅要存放各數(shù)據(jù)元素的信
息,還需要存放各數(shù)據(jù)元素之間的前后件關(guān)系的信息。
30.調(diào)試調(diào)試
31.temp=a[i]或temp=*(a+i)或temp=*(i+a)temp=a[i]或temp=*(a+i)或
temp=*(i+a)
32.成員函數(shù)成員函數(shù)解析:C++中,只有類的成員函數(shù)才能說明為虛
函數(shù)。這是因為,虛函數(shù)僅適用于有繼承關(guān)系的類對象,所以普通函數(shù)
不能說明為虛函數(shù)。
33.?MyClass()
34.j=ij=i解析:在函數(shù)sort。中,外層for循環(huán)中依次將數(shù)組b中的值賦
值給變量t,然后在內(nèi)層循環(huán)中依次與已經(jīng)排序的數(shù)組元素進(jìn)行比較,
并在符合條件的位置插入該元素。由語句可知,數(shù)組中有i個
元素已經(jīng)排好了序。因此,根據(jù)內(nèi)層循環(huán)中的語句,知道內(nèi)層
循環(huán)是將當(dāng)前的第i個元素與j個元素進(jìn)行比較,前面已知數(shù)組中有i
個元素已經(jīng)排好了序根據(jù)題干中的要求“插入到已排序序列中",即j=i。
35.操作符個數(shù)操作符個數(shù)解析:本題考查的是運算符重載的概念,用
戶重新定義的運算符不改變原運算符的優(yōu)先性和結(jié)合性,也不改變運算
符的語法結(jié)構(gòu).也就是說重載運算符不會產(chǎn)生新的運算符。
36.(1)44staticintn=O,,lS0t^/t€staticintn;"。
(2)“intC0::n;”應(yīng)改為“intCO::n=0;”。
(3)“cout?c.n?endl;"應(yīng)改為"cout?c->n?endl;"。
【解析】本題要在屏幕上輸出兩個字符,首先要靜態(tài)變量初始化,第1
處應(yīng)改為“staticintn;",第2處要給n賦值,第3處輸出時引用c的對
象,應(yīng)改為"cout?c-〉n<<endl;
37.(1)應(yīng)改為"TCobjl(l);
(2)應(yīng)改為“Objl.SetNumber(lO);
(3)應(yīng)改為“0bj2.SelNumber(lOO);
【解析】本題第1處的“TCobjl;”語句是聲明TC類的對象Objl,根據(jù)
TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個
輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(l);第2處處
的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C+
+中成員函數(shù)的使用形式應(yīng)該是:對象名.成員函數(shù),所以修改為
“objl.SetNumber(lO);類是對象的抽象,而對象是類的具體實
例。第3處“TC.SetNumber(lOO);”語句中的TC為類,并不是對象,
這里應(yīng)該使用定義的對象,即。bj2,所以將語句修改為
“obj2.SetNumber(lOO);
38.(1)應(yīng)改為"catch(char*s)”。
⑵應(yīng)改為“cateh(inti)”。
(3)應(yīng)改為"catch(…)”。
【解析】本題中第1個標(biāo)識前的異常拋出語句為“throw("error");",其
中的類型為字符串。所以對應(yīng)的異常捕捉語句catch中應(yīng)該符合這個類
型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語
句修改為“catch(char*S)”°第2個標(biāo)識前的異常拋出語句為
“throw((int)0);",其中的類型為int。對應(yīng)的異常捕捉語句catch中應(yīng)
該符合這個類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配
的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處
的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類
型,那么就用刪節(jié)號"…''表示它可以捕捉任何類型的異常信息,即修
改為“catch(…)”。
39.(1)應(yīng)改為"usingnamespacestd;"。
\n(2)應(yīng)改為"outl.open('l.txt',ios::binary|ios::app);
\n(3)應(yīng)改為“outl.put(s[i]);”。
\n【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,
對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處
的語句修改為“usingnamespacestd;第2處,調(diào)用成員函數(shù)open中,
輸入、輸出方式是在ios類中定義的,所以“outl.open。1.txt',binary|
app);”語句缺少類ios,即第2處的語句修改為"outl.open(,l.txt',ios::
binary|ios::app);”。第3個標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所
以第3處的語句修改為“outl.put(s[i]);
40.(l)“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=0x25;”或“intn=0x25;
41.⑴應(yīng)改為"TCobjl(l);
\n(2)應(yīng)改為“Objl.SetNumber(lO);
\n(3)應(yīng)改為“0bj2.SelNumber(lOO);"。
\n【解析】本題第1處的“TCobjl;”語句是聲明TC類的對象Objl,根據(jù)
TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個輸
出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(l);第2處處的
“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中
成員函數(shù)的使用形式應(yīng)該是:對象名.成員函數(shù),所以修改為
"objl.SetNumber(lO);類是對象的抽象,而對象是類的具體實例。
第3處刀(3.56時110收式100);”語句中的T(2為類,并不是對象,這里
應(yīng)該使用定義的對象,即obj2,所以將語句修改為
“obj2.SetNumber(lOO);
42.(1)應(yīng)改為“ein.getline(str,120,?);
\n⑵應(yīng)改為"while(st巾])”。
>,
\n⑶應(yīng)改為"if(str[i]>=a&&str[i]<=2)o
\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員
函數(shù)getline函數(shù)讀入一行字符,格式為“cin.g
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五下十道題目及答案英語
- 東京入學(xué)考試題目及答案
- 養(yǎng)老院藥品管理與使用制度
- 養(yǎng)老院老人生活娛樂活動組織人員職業(yè)道德制度
- 養(yǎng)老院老人家屬溝通聯(lián)系制度
- 養(yǎng)老院服務(wù)質(zhì)量投訴處理制度
- 養(yǎng)老院財務(wù)管理與審計制度
- 辦公室績效考核與獎懲制度
- 針對施工現(xiàn)場人員的處罰制度
- 酒店規(guī)章制度獎罰制度
- 2026湖北十堰市丹江口市衛(wèi)生健康局所屬事業(yè)單位選聘14人參考考試題庫及答案解析
- 手術(shù)區(qū)消毒和鋪巾
- 企業(yè)英文培訓(xùn)課件
- (正式版)DBJ33∕T 1307-2023 《 微型鋼管樁加固技術(shù)規(guī)程》
- 2025年寵物疫苗行業(yè)競爭格局與研發(fā)進(jìn)展報告
- 企業(yè)安全生產(chǎn)責(zé)任培訓(xùn)課件
- 綠化防寒合同范本
- 2025年中國礦產(chǎn)資源集團(tuán)所屬單位招聘筆試參考題庫附帶答案詳解(3卷)
- 中國昭通中藥材國際中心項目可行性研究報告
- 煙草山東公司招聘考試真題2025
- 海爾管理會計案例分析
評論
0/150
提交評論