




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2023年湖南省常德市全國計算機(jī)等級考試C++語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、1.選擇題(10題)1.不合法的main函數(shù)命令行參數(shù)表示形式是()。
A.main(inta,char*c[1]
B.main(intarc,char**arv)
C.main(intargc,char*argv)
D.main(intargy,char*argc[])
2.以下程序段的輸出結(jié)果是()。charstr[]="BCDE",*ptr=str;cout<<*(p+4)<<end1;
A.字符E的地址B.0C.69D.不確定
3.下列字符串中,正確的C++標(biāo)識符是()。
A.foo-1B.2bC.newD._256
4.以下各選項(xiàng)中,()中都是C++語言保留字。
A.cout,operator,this
B.short,string,static
C.if,while,>=
D.private,public,printf
5.C++語言做了很多改進(jìn),下列描述中_______使得C語言發(fā)生了質(zhì)變,即從面向過程變成面向?qū)ο蟆?/p>
A.增加了一些新的運(yùn)算符B.允許函數(shù)重載,并允許設(shè)置默認(rèn)參數(shù)C.規(guī)定函數(shù)說明必須用原型D.引進(jìn)類和對象的概念
6.一個類的友元函數(shù)能夠訪問該類的()。
A.私有成員B.保護(hù)成員C.公有成員D.所有成員
7.以下非法的賦值表達(dá)式是
A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;
8.下列工具中為需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
9.函數(shù)fun的返回值是
fun(char*a,char*b)
{intnum=0,n=0;
while(*(a+num)!='\0')num++;
while(b[n]){*(a+num)=b[n];num++;n++;}
returnnum;
}
A.字符串a(chǎn)的長度B.字符串b的長度C.字符串a(chǎn)和b的長度之差D.字符串a(chǎn)和b的長度之和
10.語句cout<<(a=2)&&(b=-2);的輸出結(jié)果是
A.無輸出B.結(jié)果不確定C.-1D.1
二、單選題(13題)11.面向?qū)ο蠓椒ㄖ?,繼承是指()。
A.一組對象所具有的相似性質(zhì)B.一個對象具有另一個對象的性質(zhì)C.各對象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制
12.有下列程序:
#include<stdi0.h>
voidmain()
{intx=1,y=2,z=3;
if(x>y)
if(y<z)print{("%d",++z);
elseprintf("%d",++y);
printf(”%d\n”,x++);
}
程序的運(yùn)行結(jié)果是()。
A.A.331B.41C.2D.1
13.下列數(shù)據(jù)模型中,具有堅(jiān)實(shí)理論基礎(chǔ)的是()。
A.層次模型B.網(wǎng)狀模型C.關(guān)系模型D.以上3個都是
14.在______情況下適宜采用inline定義內(nèi)聯(lián)函數(shù)。
A.函數(shù)體含有循環(huán)語句B.函數(shù)體含有遞歸語句C.函數(shù)代碼少、頻繁調(diào)用D.函數(shù)代碼多、不常調(diào)用
15.開發(fā)大型軟件時,產(chǎn)生困難的根本原因是()
A.大系統(tǒng)的復(fù)雜性B.人員知識不足C.客觀世界千變?nèi)f化D.時間緊、任務(wù)重
16.靜態(tài)數(shù)據(jù)成員在()進(jìn)行初始化。
A.成員函數(shù)列表B.類體外C.構(gòu)造函數(shù)D.成員函數(shù)
17.有定義語句“chars[10];”,若要從終端給S輸入5個字符,錯誤的輸入語句是()。
A.A.gets(&s0);
B.B.scanf("%s",s+1);
C.C.gets(s);
D.D.scanf("%s",s[1]);
18.有如下程序:
#include<iostream>
usingnamespacestd;
voidfunction2(intn);
voidfunctionl(intn):{
if(n<=0)return;
function2(n-2);
}
voidfunction2(intn){
if(n<=O)return;
functionl(n-1);
}
intmain(){
functionl(5);
return0;
}
下列關(guān)于程序運(yùn)行情況的描述中,正確的是()。
A.A.functionl運(yùn)行1次,function2運(yùn)行2次
B.functionl運(yùn)行2次,function2運(yùn)行l(wèi)次
C.functionl運(yùn)行2次,function2運(yùn)行3次
D.functionl運(yùn)行2次,function2運(yùn)行2次
19.下列不是描述類的成員函數(shù)的是()
A.構(gòu)造函數(shù)B.析構(gòu)函數(shù)C.友元函數(shù)D.拷貝構(gòu)造函數(shù)
20.下列有關(guān)繼承和派生的敘述中,正確的是()。
A.派生類不彘訪問基類的保護(hù)成員
B.作為虛基類的類不能被實(shí)例化
C.派生類應(yīng)當(dāng)向基類的構(gòu)造函數(shù)傳遞參數(shù)
D.虛函數(shù)必須在派生類中重新實(shí)現(xiàn)
21.已知類MyClass的定義如下:ClassMyClass{public:MyClass(intd){data=d;}~MyClass(){}private:intdata;};下列對MyClass類對象數(shù)組的定義和初始化語句中,正確的是()。A.MyClassarray[2];
B.MyClassarray[2]={MyClass(5)};
C.MyClassarray[2]={MyClass(5),Myclass(6)};
D.MyClass*array=newMyClass[2];
22.下列程序輸出的結(jié)果是()。#include<stdio.h>fun1(chara,charb){charc;c=a;a=b;b=c;}fun2(char*a,charb){charc;c=*a;*a=b;b=c;}fun3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}voidmain(){chara,b;a='A';b='B';fun1(a,b);putchar(a);putchar(b);a='A';b='B';fun2(&a,b);putchar(a);putchar(b);a='A';b='B';fun3(&a,&b);putchar(a);putchar(b);putchar('\n');}
A.BABBABB.ABBBBAC.ABBABAD.ABABBA
23.已知類MyClass聲明如下:classMyClass{intn;public:MyClass(intk):n(k){}intgetValue()const{returnn;}};在下列數(shù)組定義中正確的是_________。A.MyClassx1[2];
B.MyClassx2[2]={newMyClass(1),newMyClass(2)};
C.MyClass*x3[2];
D.MyClass*x4[2]={MyClass(1),MyClass(2)};
三、2.填空題(12題)24.operator是運(yùn)算符重載時必須使用的關(guān)鍵字,它和被重載的運(yùn)算符連在一起,作為運(yùn)算符函數(shù)的專用函數(shù)名,務(wù)必把該函數(shù)說明為______的。
25.可以把具有相同屬性的一些不同對象歸類,稱為______。
26.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。
27.用來派生新類的類稱為______,而派生出的新類稱為它的子類或派生類。
28.軟件是程序、數(shù)據(jù)和______的集合。
29.測試分為白箱法和黑箱法,______又稱為邏輯覆蓋測試。
30.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機(jī)制稱為【】。
31.假定用戶沒有給一個名為MyClass的類定義析構(gòu)函數(shù),則系統(tǒng)為其定義的默認(rèn)析構(gòu)函數(shù)首部形式為【】。
32.數(shù)據(jù)模型按不同應(yīng)用層次分成3種類型,它們是概念數(shù)據(jù)模型、【】和物理數(shù)據(jù)模型。
33.以下程序的執(zhí)行結(jié)果為【】。
#include<iostream>
usingnamespacestd;
classbase
{
public:
virtualvoidwho()
{
cout<<"baseclass"<<end1;
};
classderivel:publicbase
{
public:
voidwho()
{
cout<<"derivelclas
34.請將下列類定義補(bǔ)充完整。
classBase{public:voidfun(){cout<<"Base::fun"<<endl;}};
classDerived:publicBase
{
public:
voidfun(){
______//顯式調(diào)用基類的fun函數(shù)
cout<<"Derived::fun"<<endl;
}
};
35.下列程序的運(yùn)行結(jié)果是______。
#include<iostream.h>
classSample
{
inta;
public:
Sample(intaa=0){a=aa;}
~Sample(){cout~<<"Sample="<<a<<'';}
};
classDerived:publicSample
{
intb;
public:
Derived(intaa=0,intbb=0):Sample(aa)(b=bb;}
~Derived(){cout<<"Derived="<<b<<";}
};
voidmain()
{
Derivedd1(9);
}
四、程序改錯題(10題)36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤。本程序要求實(shí)現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。試題程序:#include<iostream>#include<fstream>//********error********usingstd;voidWriteFile(char*s){ofstreamout1;//********error********out1.open("1.txt",binary|app);for(inti=0;s[i]!=0;i++){//********error********out1.puts(s[i]);}out1.close;}voidClearFile{ofstreamout1;out1.open("1.txt");out1.close;}intmain{chars[1024];ClearFile;cout<<"pleaseinputastrin9:"<<endl;cin.getline(s,1024);WriteFile(s);return0;}37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯,請改正其中的錯誤,使程序正常運(yùn)行,輸出的結(jié)果為Constructor,i=0,Destructor注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include(iostream.h)classTC{inti;public:TC;voiddisplay;~TC;};//******error******TC:TC{cout<<"Constructor"<<",";i=0;)//******error******TC:display{tout<<"i="<<i<<","<<endl;}//******error******TC:TC{COUI<<"Destructor"<<endl:}voidmain{TCa;a.display;}38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:number=1number=10number=100注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。試題程序:#include<iostream.h>classTC{public:TC(inti){number=i;}voidSetNumber(intm){number=m;}intGetNumberconst{returnnumber;}voidPrintconst{cout<<"number="<<number<<endl;}private:intnumber;};voidmain{//********error********TCobjl;objl.Print;TCobj2(3);//********error********objl.number=10;//********error*‰******TC.SetNumber(100);objl.Print;obj2.Print;}
39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤,使得程序輸出:
9,8,7,6,5
注意:錯誤的語句在/********error********/的下面,修改該語句即可。其他的語句不能修改。
試題程序:
#include(iostream.h>
classTC
{
/********error********/
TC(inti)
{
m_i=i;
}
voidprint
{
cout<<--m_i<<,;
}
public:
intm_i;
};
intmain
{
/********error********/
inti;
TC04(10);
while(i>5)
{
/********errOr********/
i++:
04.print;
}
cout<<endl;
return0;
}
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕中。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。試題程序:#include<iostream.h>voidmain{inti=0;charstr[120];cout<<"Enterastringendwith?."<<endl;//********error********cin.getline(str,120);//********error********while(str){//********error********if(str[i])=a)str[i]=str[i]-a+A;i++;}cout<<str<<endl;return;}41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為1003732注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include<iostream.h>//******error******voidmain{//******error******intm=0142://******error******intn=0X27:intq=32;cout<<m<<endl;cout<<n<<endl;cout<<q<<endl;return;}42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程序運(yùn)行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正確。程序輸出:88注意:錯誤的語句在/********error********/的下面。修改該語句即可,其他的語句不能修改。試題程序:#include(iostream.h>classCO{public:/********error********/staticintn=0:CO{n++:}~CO{n--:}}:/********error********/intCO::n;voidmain{COobj;COobj2[7];CO*C=NULL:c=&obj:/********error********/eout<<C.n<<endl;cout<<C0::n<<endl;}43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯誤,請改正錯誤,使程序正常運(yùn)行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
O
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
{
try
{
throw("error");
}
//********error********
catch(chars)
{
cout<<s<<endl;
}
try
{
throw((int)0);
}
//********error********
catch
{
cout<<i<<endl;
}
try
{
throw(O);
throw("error");
}
//********error********
catch
{
cout<<"ERROR"<<endl;
}
return0;
}
44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h>
voidmain
{
inti=0;
charstr[120];
cout<<"Enterastringendwith?."<<endl;
//********error********
cin.getline(str,120);
//********error********
while(str)
{
//********error********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
}
cout<<str<<endl;
return;
}
45.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤。本程序要求實(shí)現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在
//******error******的下面。
試題程序:
#include<iostream>
#include<fstream>
//********error********
usingstd;
voidWriteFile(char*s)
{
ofstreamout1;
//********error********
out1.open("1.txt",binary|app);
for(inti=0;s[i]!=0;i++)
{
//********error********
out1.puts(s[i]);
}
out1.close;
}
voidClearFile
{
ofstreamout1;
out1.open("1.txt");
out1.close;
}
intmain
{
chars[1024];
ClearFile;
cout<<"pleaseinputastrin9:"<<endl;
cin.getline(s,1024);
WriteFile(s);
return0;
}
五、綜合應(yīng)用題(2題)46.請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明的DataList類,是一個用于表示數(shù)據(jù)表的類。DataList的重載運(yùn)算符函數(shù)0perator+,其功能是求當(dāng)前數(shù)據(jù)表與另一個相同長度的數(shù)據(jù)表之和;即它返回一個數(shù)據(jù)表,其每個元素等于相應(yīng)兩個數(shù)據(jù)表對應(yīng)元素之和。請編寫這個operator+函數(shù)。程序的正確輸出應(yīng)該是:兩個數(shù)據(jù)表:1,2,3,4,5,63,4,5,6,7,8兩個數(shù)據(jù)表之和:4,6,8,10,12,14要求:補(bǔ)充編制的內(nèi)容寫在“//********333********”與“//********666********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件。ut.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為。bj文件,并且在本程序中調(diào)用。//DataList.h#inClude<iostream>usingnamespaCestd;ClaSSDataList{//數(shù)據(jù)表類intfen;double*d;publiC:DataList(intlen,doubledata[]=NULL);DataList(DataList&data);intlengthConst{retumlen;}doublegetElement(inti)Consttreturnd[i];}DataListoperator+(ConstDataList&list)Const;//兩個數(shù)據(jù)表求和voidshowConst;//顯示數(shù)據(jù)表};voidwriteToFile(Char$,ConstDataList&);//main.Cpp#inClude”DataList.h”DataList::DataList(intlen,doubledata[]):len(ien){d=newdouble[1en];for(inti=0;i<len;i++)d㈨i=(data==NULL?0.0:data[i]);}DataList::DataList(DataList&data):len(data.1en){d=newdouble[1en];for(inti=0;i<len;i++)d[i]=data.d[i];DataListDataList::0perator+(Con8tDataList&list,)Const{//兩個數(shù)據(jù)表求和double*dd=newdouble[1ist.1ensth];//********333********//********666********returnDataList(1ist.1ength,dd);}voidDataList::showConst{//顯示數(shù)據(jù)表fr(int。i=0;i<len-1;i++)eout<<d[i]<<”,”;Cout<<d[1en-1]<<endl;intmain{doublesl[]={1,2,3,4,5,6};doubles2[]={3,4,5,6,7,8};DataListlist1(6,sl),list2(6,s2);//定義兩個數(shù)據(jù)表對象eout<<”兩個數(shù)據(jù)表:”<<endl:listl.show:list2.show;eout<<endl<<”兩個數(shù)據(jù)表之和:”<<endl:(1istl+list2).show;writeToFile(””,listl+list2);return0:47.使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了類A、A1和A2,其中A1類由A類公有派生,A2類由A1類公有派生。(1)定義類A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個整型的參數(shù)x,在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員a。請?jiān)谧⑨尅埃?*******1********”之后添加適當(dāng)?shù)恼Z句。(2)定義類A1的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個整型的參數(shù)x和y,在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員b,將y作為基類A構(gòu)造函數(shù)的參數(shù)值傳人。請?jiān)谧⑨尅埃?*******2********”之后添加適當(dāng)?shù)恼Z句。(3)定義類A2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有3個整型的參數(shù)x,y和z,在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員C,將y和z分別賦值給基類A1構(gòu)造函數(shù)的參數(shù)x和y。請?jiān)谧⑨尅埃?*******3********”之后添加適當(dāng)?shù)恼Z句。(4)完成類A2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸出基類數(shù)據(jù)成員a和b及類A2自身的數(shù)據(jù)成員C的值,上述3個值在輸出時以空格隔開。請?jiān)谧⑨尅埃?*******4********”之后添加適當(dāng)?shù)恼Z句。程序輸出結(jié)果如下:73738注意:除在指定的位置添加語句之外,請不要改動程序的其他部分。試題程序:#include<iostream.h>classA{inta;public://********1********intgeta{returna;}};classA1:publicA{intb;public://********2********intgetb{returnb;}};classA2:publicA1{intC;public://****,****3********voidshow{//********4********}};voidmain{A2a(8.3.7):cout<<a.geta<<endl:cout<<a.getb<<endl:a.show;}六、3.綜合應(yīng)用題(2題)48.使用VC6打開考生文件夾下的工程test22_3,此工程包含一個源程序文件test22_3.cpp,其中定義了用于表示考生的類CStudent和它的派生類CGraduateStudent,但它們的定義并不完整。請按要求完成下列操作,將程序補(bǔ)充完整。
(1)定義CStudent的構(gòu)造函數(shù),函數(shù)含參數(shù)nm,它是char型的指針數(shù)據(jù),請使用字符串函數(shù)將類數(shù)據(jù)成員name初始化。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。
(2)完成類CStudent的成員函數(shù)voidaddscore(doublesc)的定義,將類數(shù)據(jù)成員score加上參數(shù)sc,請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。
(3)添加類CGraduateStudent的成員函數(shù)voidaddpaper(intd)的定義,將int型的參數(shù)d的值加到類的數(shù)據(jù)成員paper上,請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。
(4)調(diào)用對象sdt的成員函數(shù)addpaper使得該考生的論文數(shù)量變?yōu)?0,將請?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z句。
輸出結(jié)果如下:
StudentHanson
(Advisor:MichaelPhong)
Totalpaperis10
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test22_3.cpp清單如下:
#include<iostream.h>
#include<string.h>
classCStudent
{
private:
charname[30];
intcode;
doublescore;
public:
CStudent(char*nm)
{
//**1**
}
CStudent(){}
voidputname(char*nm){strcpy(name,nm);}
voidputcode(intd){code=d;}
voidputscore(doublesc){score=sc;}
voidgetname(char*nm){strcpy(nm,name);}
doublegetcode(){returncode;)
doublegetscore(){returnscore;}
voidaddscore(doublesc)
{
//**2**
}
};
classCGraduateStudent:publicCStudent
{
private:
charadvisor[30];
intpaper;
public:
voidputadvisor(char*nm){strcpy(advisor,nm);}
voidgetadvisor(char*nm){strcpy(nm,advisor);}
voidputpaper(intd){paper=d;}
//**3**
intgetpaper(){returnpaper;}
};
voidmain()
{
CGraduateStudentsdt;
sdt.putname("Hanson");
sdt.putadvisor("MichaelPhong");
sdt.putpaper(8);
//**4**
charcsname[30];
sdt.getname(csname);
charcaname[30];
sdt.getadvisor(caname);
cout<<"Student"<<csname<<endl;
cout<<"(Advisor:"<<caname<<")"<<endl;
cout<<"Totalpaperis"<<sdt.getpaper()<<endl;
}
49.使用VC6打開考生文件夾下的工程test10_3,此工程包含一個源程序文件test10_3.cpp,其中定義了用于表示雇員信息的CEmployee類與表示公司信息的Company類,但這兩個類的定義并不完整。請按要求完成下列操作。
(1)定義Cemployee類的私有數(shù)據(jù)成員name(大小為50的字符數(shù)組)和pay(double型數(shù)據(jù)),分別用于記錄雇員姓名和月薪。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。
(2)完成Company類默認(rèn)構(gòu)造函數(shù)的定義,該構(gòu)造函數(shù)將n值賦值給私有成員nam,并完成指針emp所指的n個Cemployee對象空間的申請,請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成Company類成員函數(shù)voidCompany::add(血code,charname[50],doublepay)的定義,該函數(shù)將某一雇員的編號code、姓名name及月薪pay輸入到公司信息中。請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。
(4)完成Company類成員函數(shù)voidCompany::print()的定義,使其以“_ispaid_RMBforouemonth”的格式輸出公司內(nèi)所有員工的月薪信息。請?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件旭st10_3.cpp清單如下:
#include<iostream.h>
#include<string.h>
classCEmployee
{
public:
voidputname(charn[50]){strcPY(name,n);)
voidgetname(charn[501){strcDY(n,name);)
voidputpay(doubled){pay=d;)
doublegetpay(){returnpay;)
private:
//**1**
};
classCompany
{
private:
CEmployee*emp;
intnum;
public:
Company(intn);
voidadd(intCOde,Charname[50],doublepay);
voidprint();
}
Company::Company(intn)
{
//**2**
}
voidCompany::add(intcode,Charname[50],doublepay)
{
//**3**
}
voidCompany::print()
{
//**4**
for(inti=0;i<num;i++)
{
(emp+i)->getname(C);
money=(emp+i)->getpay();
cout<<C<<"ispaid"<<money<<"
RMBforonemonth"<<endl;
}
}
voidmain()
{
Companycom(2);
com.add(0,"Jack",200);
com.add(1,"Lee",300);
com.print();
}
參考答案
1.C
2.B解析:本題考核字符串指針。在程序段中,有語句:“charstr[]='BCDE',*ptr=str;”。由字符串賦值的規(guī)則可知:字符串?dāng)?shù)組str中的5個元素的值分別為:\'B\'、\'C\'、\'D\'、\'E\'和\'\\0\'。而指針ptr指向str[0]。最后程序要求輸出*(p+4),即數(shù)組元素str[4]的值,而str[4]中存放的是字符\'\\0\'。所以最后輸出的值為0。
3.D解析:本題考核C++語言詞匯中的標(biāo)識符的定義。標(biāo)識符不是一個隨意的字符序列,定義標(biāo)識符時一般應(yīng)注意如下幾點(diǎn):第一個字符必須是字母或下劃線,中間不能有空格;在第一個字母后,可以是任意字母、下劃線和數(shù)字組成的字符序列;標(biāo)識符的長度是任意的,但特定的編譯系統(tǒng)能夠識別的標(biāo)識符長度是有限的。一般不要超過31個字符;標(biāo)識符中大小寫字母是有區(qū)別的;用戶定義標(biāo)識符時,不要采用系統(tǒng)的保留字。
4.A解析:本題主要考察有關(guān)C++語言保留字這個知識點(diǎn)。C++語言中,運(yùn)算符(>=)、函數(shù)名(printf)和非基本數(shù)據(jù)類型(string)都不是C++語言的保留字(關(guān)鍵詞)。
5.D
6.D解析:一個類的友元函數(shù)對類成員的訪問能力等同于類的成員函數(shù),即能訪問類的所有成員。
7.C解析:對于任何一種賦值運(yùn)算,其賦值號或復(fù)合賦值號左邊必須是一個左值。左值是指具有對應(yīng)的可由用戶訪問的存儲單元,并且能夠由用戶改變其值的量。而在C)選項(xiàng)中賦值號對應(yīng)的是表達(dá)式“i+1”,不是一個左值,因此是非法的賦值表達(dá)式。
8.D解析:需求分析常用的工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細(xì)設(shè)計的常用工具,不是需求分析的工具。
9.D解析:本題首先通過第一個while循環(huán)計算字符串a(chǎn)的長度,再通過第二個循環(huán),將字符串a(chǎn)和b相連,最后返回連接后的總長度。
10.D解析:邏輯表達(dá)式的值輸出結(jié)果是數(shù)字的形式。C++規(guī)定,邏輯假用數(shù)字。表示,而邏輯真則用非零表示。注意:在c++中,如果邏輯表達(dá)式的值是非零,則可以認(rèn)為是真。VC編譯器在編譯輸出時將邏輯真輸出為1。
11.D繼承是面向?qū)ο蟮姆椒ǖ囊粋€主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和操作的機(jī)制。
12.DD。【解析】C語言中規(guī)定,else與離它最近的if相匹配。
x=1,y=2,z=3,所以第一個if的條件(x>y)不成立,直接執(zhí)行printf("%d\n",x+1);語句,輸出x的值1,再把x加1。
13.C在數(shù)據(jù)庫設(shè)計中,目前常用的數(shù)據(jù)模型主要有三種,分別是層次模型、網(wǎng)狀模型和關(guān)系模型。
層次模型是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型。我們通常把滿足以下兩個條件的數(shù)據(jù)模型稱為層次模型。
(1)有且僅有一個結(jié)點(diǎn)無雙親,這個結(jié)點(diǎn)稱為根結(jié)點(diǎn)。
(2)其他結(jié)點(diǎn)有且僅有一個雙親。
層次模型用樹形結(jié)構(gòu)來表示各實(shí)體與實(shí)體間的聯(lián)系。實(shí)體是數(shù)據(jù)庫中數(shù)據(jù)描述的對象,可以是一個人、一種商品等。在層次模型中,每個結(jié)點(diǎn)表示一個記錄類型,記錄之間的聯(lián)系用結(jié)點(diǎn)之間的連線表示,這種聯(lián)系是父子之間一對多的聯(lián)系。記錄就是描述實(shí)體的相關(guān)數(shù)據(jù)。
如果取消層次模型中的兩個限制,即允許一個以上的結(jié)點(diǎn)無雙親,則每一個結(jié)點(diǎn)可以有多個父結(jié)點(diǎn),便形成了網(wǎng)狀。我們把網(wǎng)狀表示實(shí)體之間聯(lián)系的模型稱為網(wǎng)狀模型。
關(guān)系模型用表格形式表示實(shí)體類型及其實(shí)體間的聯(lián)系。關(guān)系模型是目前最重要的一種模型,它是建立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上的,具有最堅(jiān)實(shí)的理論基礎(chǔ)。關(guān)系模型的基本數(shù)據(jù)結(jié)構(gòu)是二維表,每一張二維表稱為一個關(guān)系。
14.A
15.A開發(fā)大型軟件時,產(chǎn)生困難的原因有很多,如需求難以捕捉、員工水平有限、工作安排不太合理、進(jìn)度控制難以把握、系統(tǒng)開發(fā)時間有限等元素,但這些都不是根本的原因,根本的原因是大系統(tǒng)的復(fù)雜性。
16.B靜態(tài)數(shù)據(jù)成員不能在參數(shù)初始化表對靜態(tài)數(shù)據(jù)成員初始化,只能在類體外進(jìn)行初始化。
17.DD?!窘馕觥窟x項(xiàng)A調(diào)用函數(shù)gets使得s數(shù)組從s[0]開始得到輸入的字符;選項(xiàng)B使得數(shù)組從元素s[1]開始得到輸入的5個字符;選項(xiàng)C使得數(shù)組從s[0]開始得到輸入的字符;而選項(xiàng)D的scan[(”%S”,S[1])調(diào)用錯誤,應(yīng)為scanf(”%s”,&s[1])輸入項(xiàng)部分應(yīng)該是一個地址值。
18.DD?!窘馕觥亢瘮?shù)執(zhí)行過程為:functionl(5),function2(3),functionl(2),function2(0)return。
19.C
20.C派生類可以訪問基類的保護(hù)成員,而不能訪問基類的私有成員。作為虛基類的類可以被實(shí)例化。虛函數(shù)如果沒有派生類中重新實(shí)現(xiàn),那么仍然使用基類的成員函數(shù)。
21.CC?!窘馕觥緼只是聲明,沒有初始化;B的初始化錯誤,另一個數(shù)組對象沒有指明地址;D同樣做的不是初始化的事情。
22.B解析:由程序中的主函數(shù)main入手,分別調(diào)用fun1,fun2,fun3函數(shù),得出輸出結(jié)果。其中,3個函數(shù)都是實(shí)現(xiàn)的兩個形參的交換功能,只是值傳遞的方式不同,有的是引用,有的是傳值。第一個函數(shù)中參數(shù)采用的是值傳遞的方式,形參的變化不影響實(shí)參。所以d調(diào)用fun1后,實(shí)參a和b并沒有交換,仍然是AB。第二個調(diào)用中,實(shí)參a采用的是地址,即傳遞的是地址,所以形參a的改變會影響實(shí)參a的值,即BB。同理,調(diào)用fun3后為BA.
23.C本題主要考查了對象數(shù)組、指針數(shù)組和new運(yùn)算符。new運(yùn)算符返回指向指定類型的一個指針。對象數(shù)組是指數(shù)組元素為對象的數(shù)組,該數(shù)組中的每一個元素都是同一個類的對象。定義對象數(shù)組時,系統(tǒng)將自動調(diào)用構(gòu)造函數(shù)創(chuàng)建每一個對象元素,因?yàn)轭怣yClass中定義了一個有一個整型參數(shù)的構(gòu)造函數(shù),編譯器將不再為其生成缺省構(gòu)造函數(shù),所以定義對象數(shù)組時必須分別調(diào)用有參構(gòu)造函數(shù)為每一個數(shù)組元素指定初始值。因此選項(xiàng)A錯誤,沒有初始化對象數(shù)組;選項(xiàng)B中,用指向?qū)ο蟮闹羔槼跏蓟瘜ο髷?shù)組,類型不匹配,因此選項(xiàng)B錯誤;指針數(shù)組是由指針組成的數(shù)組,即數(shù)組中的每一個元素都是指向同一類型對象的指針。選項(xiàng)C定義了指向MyClass類對象的指針數(shù)組x3,該定義語句正確;選項(xiàng)D中,只能用指向MyClass類對象的指針或用已有的MyClass類對象的地址來初始化指針數(shù)組x4的每一個元素,不能用對象進(jìn)行初始化,因此選項(xiàng)D錯誤。
24.public
25.對象類對象類
26.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu),是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),常見的線性結(jié)構(gòu)有線性表、棧和隊(duì)列等;常見的非線性結(jié)構(gòu)有樹、二叉樹等。
27.基類基類解析:被繼承的類叫基類,或者父類,用來派生其他子類。
28.相關(guān)文檔相關(guān)文檔
29.白箱法白箱法解析:白箱測試是根據(jù)程序內(nèi)部邏輯結(jié)構(gòu)的分析來選取測試用例。由于測試用例對程序的邏輯覆蓋程序決定了測試的完全性的程度,因此白箱測試也稱為邏輯覆蓋測試。
30.繼承繼承解析:類是面向?qū)ο笳Z言中必備的程序語言結(jié)構(gòu),用來實(shí)現(xiàn)抽象數(shù)據(jù)類型。類與類之間的繼承關(guān)系實(shí)現(xiàn)了類之間的共享屬性和操作,一個類可以在另一個已定義的類的基礎(chǔ)上定義,這樣使該類型繼承了其超類的屬性和方法,當(dāng)然,也可以定義自己的屬性和方法。
31.~MyClass()
32.邏輯數(shù)據(jù)模型邏輯數(shù)據(jù)模型解析:數(shù)據(jù)是現(xiàn)實(shí)世界符號的抽象,而數(shù)據(jù)模型(datamodel)則是數(shù)據(jù)特征的抽象,它從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動態(tài)行為和約束行為,為數(shù)據(jù)庫系統(tǒng)的信息表示與操作提供一個抽象的框架。數(shù)據(jù)模型按不同的應(yīng)用層次分成3種類型,它們是概念數(shù)據(jù)模型(conceptualdatamodel)、邏輯數(shù)據(jù)模型(logicdatamodel)、物理數(shù)據(jù)模型(physicaldatamodel)。
33.baseclassderivelclassderive2classbaseclass\r\n\u3000\u3000\u3000derivelclass\r\n\u3000\u3000\u3000derive2class解析:類base含有虛函數(shù)who(),該類派生出derivel類和derive2類,兩個派生類中都有虛函數(shù)who()的定義。在main()函數(shù)中定義了一個指向base類的指針,它也被允許指向其派生類。在執(zhí)行過程中,不斷改變它所指的對象,當(dāng)p->who()時就能調(diào)用不同的版本。這是因?yàn)槭褂昧颂摵瘮?shù),因而進(jìn)行動態(tài)聯(lián)編。注意:應(yīng)掌握靜態(tài)聯(lián)編的使用方法。
34.Base::fun();Base::fun();解析:本題考核虛基類。作用域分辨符號是'::',它可以用來限定要訪問的成員所在的類的名稱。一般來說,在派生類中對基類成員的訪問應(yīng)該是唯一的。但是,多繼承情況下可能造成對基類中某個成員的訪問出現(xiàn)不唯一的情況,通過使用對象作用域分辨符可以解決這種對基類成員訪問的二義性問題。
35.Derived=0Sample=9Derived=0Sample=9解析:本題考察派生類和基類的構(gòu)造函數(shù),析構(gòu)函數(shù)的執(zhí)行順序。36.(1)應(yīng)改為“usingnamespacestd;”。(2)應(yīng)改為“outl.open("1.txt",ios::binary|ios::app);”。(3)應(yīng)改為“out1.put(s[i]);”。【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處的語句修改為“usingnamespacestd;”。第2處,調(diào)用成員函數(shù)open中,輸入、輸出方式是在ios類中定義的,所以“out1.open("1.txt",binary|app);”語句缺少類ios,即第2處的語句修改為“out1.open("1.txt",ios::binary|ios::app);”。第3個標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。37.(1)應(yīng)改為“TC::TC”。(2)應(yīng)改為“voidTC::display”。(3)應(yīng)改為“TC::~TC”。【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個成員屬于哪個類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應(yīng)改為“TC::TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語句看,這是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯誤問題,display函數(shù)返回值為void,因此第2處的語句應(yīng)改為“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應(yīng)改為“TC::~TC”。38.(1)應(yīng)改為“TCobjl(1);”。(2)應(yīng)改為“0bj1.SetNumber(10);”。(3)應(yīng)改為“0bj2.SelNumber(100);”?!窘馕觥勘绢}第1處的“TCobjl;”語句是聲明TC類的對象0bj1,根據(jù)TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(1);”。第2處處的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應(yīng)該是:對象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對象的抽象,而對象是類的具體實(shí)例。第3處“TC.SetNumber(100);”語句中的TC為類,并不是對象,這里應(yīng)該使用定義的對象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。
39.(1)應(yīng)添加“public:”。
\n(2)“inti”應(yīng)改為“inti(10);”。
\n(3)“i++;”應(yīng)改為“i--;”。
\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、保護(hù)和私有3種,而默認(rèn)的訪問屬性為私有,只有公有成員才能通過類的對象被訪問。故應(yīng)在構(gòu)造函數(shù)前添加“public:”,否則該類無法被實(shí)例化。變量的初始化可以通過“=”號,也可以和初始化對象一樣添加構(gòu)造參數(shù),題目已要求使用后者。本題要求輸出5個數(shù),while的循環(huán)變量i每次減1,在i>5時循環(huán),故i初始化應(yīng)為10。若循環(huán)中i每次增1,則循環(huán)永遠(yuǎn)不會退出。40.(1)應(yīng)改為“ein.getline(str,120,?);”。
(2)應(yīng)改為“while(str[i])”。
(3)應(yīng)改為“if(str[i]>=a&&str[i]<=2)”。
【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個數(shù),終止標(biāo)志字符)”,所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語句應(yīng)該是判斷字符串str中的每一個字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。41.(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;”。42.(1)“staticintn=O”應(yīng)改為“staticintn;”。(2)“intCO::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;”。43.(1)應(yīng)改為“catch(char*s)”。(2)應(yīng)改為“cateh(inti)”。
(3)應(yīng)改為“catch(…)”。
【解析】本題中第1個標(biāo)識前的異常拋出語句為“throw("error");
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高考物理“原子物理綜合”知識應(yīng)用試題
- 高職銜接考試題及答案
- 高考政治會考試題及答案
- 項(xiàng)目團(tuán)隊(duì)日常管理行為規(guī)范指南
- 企業(yè)信息安全管理制度及實(shí)施策略指南
- 2025年病案編碼相關(guān)知識試題及答案
- 甘肅美術(shù)聯(lián)考試題及答案
- 快樂的課堂生活話題作文(9篇)
- 財務(wù)預(yù)算編制與監(jiān)控模板及關(guān)鍵指標(biāo)
- 財務(wù)管理工具報表分析框架構(gòu)建
- 洗煤安全培訓(xùn)課件
- 2025湖北武漢市市直機(jī)關(guān)遴選公務(wù)員111人筆試參考題庫附答案解析
- 2025年度中國石化畢業(yè)生招聘統(tǒng)一初選考試筆試參考題庫附帶答案詳解
- 2024年演出經(jīng)紀(jì)人考試真題解析與試題及答案
- 病媒生物防制巡查記錄
- 體檢中心工作制度及崗位職責(zé)
- 大國兵器(中北大學(xué))學(xué)習(xí)通網(wǎng)課章節(jié)測試答案
- 門座式起重機(jī)司機(jī)模擬題(附答案)
- 水利水電安全生產(chǎn)應(yīng)急預(yù)案措施
- 醫(yī)療質(zhì)量安全專項(xiàng)整治行動自查清單8-患者隱私
- 牛蹄解剖生理講解
評論
0/150
提交評論