




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
2022年廣東省潮州市全國計算機等級考試C++語言程序設計真題(含答案)學校:________班級:________姓名:________考號:________
一、1.選擇題(10題)1.為了使類中的某個成員不能被類的對象通過成員操作符訪問,則不能把該成員的訪問權(quán)限定義為()。
A.publicB.protectedC.privateD.static
2.下面程序的輸出結(jié)果是()#include<iostream>usingnamespacestd;intmain(){ints:for(intk=2;k<6;k+=2){s=1;for(intj=k,j<6;j++)s+=j;}cout<<s<<end1:}
A.9B.1C.11D.10
3.以下說法中錯誤的是
A.strcpy(A,B)函數(shù)是將A字符串的內(nèi)容復制到B字符串中
B.strlen(cha*s)返回字符串S的長度,未尾的字符不計算在內(nèi)
C.chara[20]="string";中字符串長度為6
D.strstr(S1,S2)函數(shù)在字符串S1中從左邊開始查找字符串S2,若查找成功則返回S2在S1中首次出現(xiàn)的位置,否則返回NULL,如果S2為"",則返回S1。
4.程序設計語言的基本成分是數(shù)據(jù)成分、運算成分、控制成分和()。
A.對象成分B.變量成分C.語句成分D.傳輸成分
5.有以下程序:#include<iostream.h>#include<iomanip.h>voidmain(){cout.fill('*');cout.width(10);cout,<setiosflags(ios::left)<<123.45<<endl;}程序執(zhí)行后的輸出結(jié)果是()
A.****123.45B.**123.45**C.123.45****D.***123.45*
6.關于在調(diào)用模板函數(shù)時實參的使用,下列表述中正確的是
A.對于虛擬類型參數(shù)所對應的模板實參,如果能從模板函數(shù)的實參中獲得相同的信息,則都可以省略
B.對于虛擬類型參數(shù)所對應的模板實參,如果它們是參數(shù)表中的最后的若干個參數(shù),則都可以省略
C.對于虛擬類型參數(shù)所對應的模板實參,若能夠省略則必須省略
D.對于常規(guī)參數(shù)所對應的模板實參,任何情況下都不能省略
7.下面關于模板的描述,錯誤的是()A.函數(shù)模板和類模板的參數(shù)可以是任意的數(shù)據(jù)類型
B.類模板不能直接使用,必須先實例化為相應的模板類,然后定義了模板類的對象后才能使用
C.函數(shù)模板不能直接使用,需要實例化為模板函數(shù)后才能使用
D.類模板的成員函數(shù)都是模板函數(shù)
8.用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式,是______。
A.概念模式B.外模式C.內(nèi)模式D.物理模式
9.有關類和對象的說法不正確的是()。
A.對象是類的一個實例
B.任何一個對象只能屬于一個具體的類
C.一個類只能有一個對象
D.類與對象的關系和數(shù)據(jù)類型和變量的關系相似
10.若有說明:ints[3][4]={0);,則下面敘述正確的是()。
A.只有元素s[0][0]可得到初值0
B.此說明語句不正確
C.數(shù)組s中各個元素都可得到初值,但其值不一定為0
D.數(shù)組s中每個元素均可得到初值0
二、單選題(13題)11.有如下程序段:
inti=1;
while(1){
i++;
if(i==10)break;
if(i%2==0)cout<<'*';
}
執(zhí)行這個程序段輸出字符*的個數(shù)是A.10B.3C.4D.5
12.下面對于友元函數(shù)描述正確的是()。
A.友元函數(shù)的實現(xiàn)必須在類的內(nèi)部定義
B.友元函數(shù)是類的成員函數(shù)
C.友元函數(shù)破壞了類的封閉性和隱藏性
D.友元函數(shù)不能訪問類的私有成員
13.最簡單的交換排序方法是()。A.快速排序B.選擇排序C.堆排序D.冒泡排序
14.下列程序的運行結(jié)果為()。#include<iostream.h>voidmain(){inta=2;intb=a+1;cout<<a/b<<endl;}
A.0.66667B.0C.0.7D.0.66666666
15.下列函數(shù)的運行結(jié)果是()。#include<iostream.h>intadd(inta,intb);voidmain(){externintX,y;cout<<add(X,y)<<endl;}intx(20),y(5);intadd(inta,intb){ints=a+b:returns;}A.25B.30C.20D.15
16.有如下類定義:
classXX{
intXX;
public:
xx():xx(0){tout<<A;}
XX(intn):xx(n){cout<<B;}
};
classY:Y:publicXX{
intYY;
public:
YY():YV(O){cout<<YY;)
YY(intn):xx(n+1),YY(n){cout<<YY;}
YY(intm,intn):XX(m),YY(n){cout<<yy;)
};
下列選項中,輸出結(jié)果為A0的語句是A.YYyl(0,0);B.YY72(1);C.YYy3(0);D.YYy4;
17.有如下程序段:inti=5;while(inti=0){cout<<'*';i--;}運行時輸出"*"的個數(shù)是_________。A.0B.1C.5D.無窮
18.下列選項中正確的語句是()。
A.A.chars[3];s="BOOK!";
B.B.char*s;s={"BOOK!"};
C.C.chars[10];s="BOOK";
D.D.char*S;s="BOOK!";
19.下面的語句中錯誤的是()。
A.inta=5;intx[a];
B.eonstinta=5;intx[a];
C.intn=5;int*P=newint[a];
D.constintn=5;int*p=newint[a];
20.棧通常采用的兩種存儲結(jié)構(gòu)是A.A.線性存儲結(jié)構(gòu)和鏈表存儲結(jié)構(gòu)
B.散列方式和索引方式
C.鏈表存儲結(jié)構(gòu)和數(shù)組
D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)
21.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是A.循環(huán)隊列B.帶鏈隊列C.二叉樹D.帶鏈棧
22.假定其中的x的單位是角度且不考慮π的值的精度,則與數(shù)學公式等的C++語言表達式是()。
A.sqrt(cos(x))
B.sqrt(abs(cos(x*3.14/180)))
C.sqrt(abs(cos(x*(/180)))
D.sqrt(fabs(cos(x*3.14/180)))
23.語句ofstreamf(”SALARY.DAT”,ios::app|ios::binary);的功能是建立流對象f,試圖打開文件SALA-RY.DAT并與之連接,并且()。
A.若文件存在,將文件寫指針定位于文件尾;若文件不存在,建立一個新文件
B.若文件存在,將其置為空文件;若文件不存在,打開失敗
C.若文件存在,將文件寫指針定位于文件首;若文件不存在,建立一個新文件
D.若文件存在,打開失??;若文件不存在,建立一個新文件
三、2.填空題(12題)24.下面程序的輸出結(jié)果是【】。
#include<iostream.h>
voidmain()
{
inta[6]={1,2,3,4,5,6};
for(inti=0;i<5;i++)
cout<<a[i]<<"";
cout<<end1;
}
25.多態(tài)性分為兩類:編譯時的多態(tài)性和【】。
26.下面程序的輸出結(jié)果是【】。
#include<iostream>
usingnamespacestd;
classbase
{
protected:
inta;
public:
base(){cout<<"0":}
};
classbasel:virtualpublicbase
{
public:
base1(){cout<<"1";}
};
classbase2:virtualpublicbase
{
public:
base2(){cout<<"2";}
};
classderived:publicbase1,publicbase2
{
public:
derived(){cout<<"3";}
}
intmain()
{
derivedobj;
cout<<end1;
return0;
}
27.在長度為n的有序線性表中進行二分查找,最壞的情況下需要的比較次數(shù)為【】。
28.將代數(shù)式
轉(zhuǎn)換成程序設計中的表達式為【】。
29.如果表達式x=y*z中的*是作為成員函數(shù)重載的運算符,采用運算符函數(shù)調(diào)用格式,該表達式還可以表示為______。
30.假定A為一個類,則語句A(A&a);為該類【】函數(shù)的原型說明。
31.在一個派生類中,對基類成員、類對象成員和非類對象成員的初始化次序是先【】,后【】,最后為【】。
32.基類的【】不能被派生類的成員訪問,基類的【】在派生類中的性質(zhì)和繼承的性質(zhì)一樣,而基類的【】在私有繼承時在派生類中成為私有成員,在公有和私有保護繼承時在派生類中仍為保護成員。
33.虛函數(shù)必須是類的【】。
34.以下程序運行后的輸出結(jié)果是【】
#include<iostream>
#include<string>
usingnamespacestd;
classY;
classX
{
intx;
char*strx;
public:
x(inta,char*str)
{
x=a;
strx=newchar[strlen(str)+1];
strcpy(strx,str);
}
voidshow(Y&oB);
};
classY
{
private:
inty;
char*stry;
public:
Y(intb,char*str)
{
y=b;
stry=newchar[strlen(str)+1];
strcpy(stry,str);
}
friendvoidX::show(Y&oB);
};
voidX::show(Y&oB)
{
cout<<strx<<",";
cout<<ob.stry<<end1;
}
intmain()
{
Xa(10,"stringX");
Yb(20,"stringY");
a.show(B);
return0;
}
35.十進制28和3.26的類型分別是【】。
四、程序改錯題(10題)36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(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;}
37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(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,該程序運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=1
number=10
number=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,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(jié)果為:
sizeof(S1)=5
sizeof(s2)=10
sizeof(s3)=1
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。
(1)不能刪除assert()語句。
(2)只能修改后面的數(shù)字。
提示:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。
試題程序:
#include<iostream.h>
#include<assert.h>
voidmain()
{
char*s1="abc":
//********error********
assert(sizeof(s1)==3):
cout<<"sizeof(s1)=5"<<endl;
chars2[10]="ab":
//********error********
assert(sizeof(s2)==2);
cout<<"sizeof(s2)=10"<<endl;
chars3=23:
//********error********
assert(sizeof(s3)==4);
cout<<"sizeof(s3)=1"<<endl;
return;
}
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程序運行有問題,請改正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;}41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動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;}
42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當輸入字符“?”時,默認字符輸入結(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;
}
43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯。請改正程序中的錯誤,使程序輸出的結(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;}44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當輸入字符“?”時,默認字符輸入結(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,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(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;
}
五、綜合應用題(2題)46.(1)“while”應改為“while(infile.get(ch))”。
(2)應添加“bur[len++]=ch;bur[len]=ch;len++;”。
(3)應添加“outfile2<<bur[i++];”或“outfile2<<buf[i];i++;”。
(4)“TCobj;”應改為“TCobi("in.txt");”。
【解析】本題考查了文件流的使用。根據(jù)題意,第1處要獲得一個字符,并判斷是否到文件結(jié)尾,所以應使用get函數(shù);第2處應將ch存入buf數(shù)組,同時讓len增1;第3處將buf中的字節(jié)輸出給outfile2,注意同時讓i增1,否則while循環(huán)將進入死循環(huán);第4處TC只確一個帶char*參數(shù)的構(gòu)造函數(shù),所以創(chuàng)建對象時必須使用構(gòu)造參數(shù),根據(jù)題意這個參數(shù)應該是“"in.txt"”。
47.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。類People包括姓名和年齡兩個字段。函數(shù)fun獲得年齡比較大的人的姓名,然后輸出這個姓名到屏幕。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。(1)完成類的構(gòu)造函數(shù)功能,請在注釋1后添加適當?shù)恼Z句。(2)完成構(gòu)造函數(shù)對姓名的賦值,請在注釋2后添加適當?shù)恼Z句。(3)定義類的友元函數(shù)fun,請在注釋3后添加適當?shù)恼Z句。(4)補充函數(shù)fun的年齡比較功能,請在注釋4后添加適當?shù)恼Z句。注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其他的程序代碼。試題程序:#include<iostream.h>classPeople{public://********1********{inti;for(i=0;sUserName[i]!=0;i++){m_UserName[i]=sUserName[i];}//********2********m_Old=nOld;}private:charm_UserName[32];intm_Old;//********3********};voidfun(char*s,People&personl,People&person2{//********4********if{for(inti=0;personl.m_UserName[i]!=0;i++){s[i]=personl.m_UserName[i];s[i+1]=0;}}else{for(inti=0;person2.m_UserName[i]!=0;i++){s[i]=person2.m_UserName[i];s[i+1]=0;}}}voidmain{chars[32];Peoplepl("abc",20);Peoplep2("def",30):fun(S,p1,p2);cout<<s<<endl:return;}六、3.綜合應用題(2題)48.使用VC6打開考生文件夾下的工程test13_3。此工程包含一個test13_.cpp,其中定義了類Vector,但類的定義并不完整。請按要求完成下列操作,將程序補充完整。
(1)完成構(gòu)造函數(shù)的定義,把數(shù)據(jù)成員size初始化為參數(shù)s的值,數(shù)據(jù)成員buffer指向動態(tài)申請的int型size大小的空間。請在注釋“//**1**”之后添加適當?shù)恼Z句。
(2)完成拷貝構(gòu)造函數(shù)的定義,注意解決多次刪除的問題。請在注釋“//**2**”之后添加適當?shù)恼Z句。
(3)完成成員函數(shù)elem的定義,該函數(shù)返回buffer的第ndx個元素的值,注意如果ndx超界,請輸出“errorinindex”。請在注釋“//**3**”之后添加適當?shù)恼Z句。
(4)完成析構(gòu)函數(shù)的定義,要求先將字符d打印在屏幕上,再釋放buffer指向的空間。請在注釋“//**4**”之后添加適當?shù)恼Z句。
輸出結(jié)果如下:
1234567891012345678910dd
注意:除在指定的位置添加語句外,請不要改動程序中的其他語句。
源程序文件test13_3清單如下:
#include<iostream.h>
#include<stdlib.h>
classVector
{
public:
Vector(ints=100);
Vector(Vector&v);
int&elem(intndx);
voiddisplay();
voidset();
~Vector();
protected:
intsize;
int*buffer;
};
Vector::Vector(ints)
{
//**1**
}
Vector::Vector(Vector&v)
{
//**2**
for(inti=0;i<size;i++)
{
*(buffer+i)=*(v.buffer+i);
}
}
int&Vector::elem(intndx)
{
//**3**
{
cout<<"errorinindex"<<endl;
exit(1);
}
returnbuffer[ndx];
}
voidVector::display()
{
for(intj=0;j<size;j++)
cout<<elem(i)<<endl;
}
voidVector::set()
{
for(intj=0;i<size;j++)
elem(j)=j+1;
}
Vector::~Vector()
{
//**4**
}
voidmain()
{
Vectora(10);
Vectorb(a);
a.set();
b.set();
a.display();
b.display();
}
49.使用VC6打開考生文件夾下的工程test22_3,此工程包含一個源程序文件test22_3.cpp,其中定義了用于表示考生的類CStudent和它的派生類CGraduateStudent,但它們的定義并不完整。請按要求完成下列操作,將程序補充完整。
(1)定義CStudent的構(gòu)造函數(shù),函數(shù)含參數(shù)nm,它是char型的指針數(shù)據(jù),請使用字符串函數(shù)將類數(shù)據(jù)成員name初始化。請在注釋“//**1**”之后添加適當?shù)恼Z句。
(2)完成類CStudent的成員函數(shù)voidaddscore(doublesc)的定義,將類數(shù)據(jù)成員score加上參數(shù)sc,請在注釋“//**2**”之后添加適當?shù)恼Z句。
(3)添加類CGraduateStudent的成員函數(shù)voidaddpaper(intd)的定義,將int型的參數(shù)d的值加到類的數(shù)據(jù)成員paper上,請在注釋“//**3**”之后添加適當?shù)恼Z句。
(4)調(diào)用對象sdt的成員函數(shù)addpaper使得該考生的論文數(shù)量變?yōu)?0,將請在注釋“//**4**”之后添加適當?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;
}
參考答案
1.A解析:本題考查點為類成員的訪問權(quán)限,public關鍵字修飾的類成員可以被類的對象通過成員操作符“.”直接訪問,protected和private則不能,而static不能單獨修飾類的成員。
2.D
3.A解析:strcpy()函數(shù)的一般形式為:strcpy(to,from),該函數(shù)將from字符串中的內(nèi)容復制到to字符串中,故A項錯誤。
4.D解析:程序設計語言是用于書寫計算機程序的語言,其基本成分有以下4種,數(shù)據(jù)成分:用來描述程序中的數(shù)據(jù)。運算成分:描述程序中所需的運算??刂瞥煞?用來構(gòu)造程序的邏輯控制結(jié)構(gòu)。傳輸成分:定義數(shù)據(jù)傳輸成分,如輸入/輸出語言。
5.C
6.D解析:模板函數(shù)的實參可以省略,但模板實參的省略并不是必然的,而是有條件的。在調(diào)用一個模板函數(shù)時,編譯系統(tǒng)需要足夠的信息來判別每個虛擬類型參數(shù)所對應的實際類型,可以從兩個不同的渠道獲得這樣的信息:從模板實參表(用<和>括起來的參數(shù)表)或從模板函數(shù)實參表(用()括起來的參數(shù)表),模板實參的信息優(yōu)先于函數(shù)實參的信息。如果從后者獲得的信息已經(jīng)能夠判定其中部分或全部虛擬類型參數(shù)所對應的實際參數(shù),而且它們又正好是參數(shù)表中最后的若干個參數(shù),則模板實參表中的那幾個參數(shù)可以省略。如果模板實參表中的實參都被省略了,則連空表<>也可以不要。反之,對于某個模板實參,如果從模板函數(shù)的實參表中無法獲得同樣的信息,就不能省略:或者雖然能夠獲得同樣的信息,但在它后面還有其他不能省略的實參,則其自身還是不能省略。由此可知只有D)選項的說法是正確的。
7.A類模板不能被重載,而函數(shù)模板可以,它們不能被未知的數(shù)據(jù)類型替換。
8.B解析:概念模式是數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖;外模式,也稱子模式與用戶模式,是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式:內(nèi)模式,又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法。
9.C
10.D
11.C
12.C
13.D冒泡排序(BubbleSort)的基本概念是:依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第一對數(shù)開始比較(因為可能由于第2個數(shù)和第3個數(shù)的交換,使得第1個數(shù)不再小于第2個數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個新的最大數(shù)(其實在整個數(shù)列中是第二大的數(shù))。如此下去,重復以上過程,直至最終完成排序。
14.B解析:因為題目中定義的變量a和b均為整型數(shù)據(jù),所以a/b即2/3得到的仍然是整型數(shù)據(jù),得到0。
15.AA?!窘馕觥坑芍骱瘮?shù)main入手,定義外部變量x和y,調(diào)用函數(shù)add。因為x,y為外部變量,所以“intx(20),y(5);”的賦值在add也是有效的,即add函數(shù)的運算結(jié)果為25。
16.D解析:建立派生類對象時,構(gòu)值函數(shù)的執(zhí)行順序為:執(zhí)行基類的構(gòu)造函數(shù)一執(zhí)行成員對象的構(gòu)造函數(shù)一執(zhí)行派生類的構(gòu)造函數(shù)。D)選項定義對象y4時沒有傳人任何值,則先調(diào)用基類的構(gòu)造函數(shù).XX(),輸出‘A。,然后調(diào)用派生類的構(gòu)造函數(shù)YY(),輸出yy=0,最終輸出為A0。故本題答案為D)。
17.A本題主要考查了while循環(huán)語句的使用。while語句的語法格式為:while(表達式)<語句>while語句的執(zhí)行過程是:\r\n(1)計算<表達式>的值,如果此值不等于0(即循環(huán)條件為"真"),則轉(zhuǎn)向步驟(2);如果此值等于0(即循環(huán)條件為"假"),則轉(zhuǎn)向步驟(4)。\r\n(2)執(zhí)行一遍循環(huán)體<語句>;(3)轉(zhuǎn)向步驟(1);(4)結(jié)束while循環(huán)。\r\n本題的表達式聲明了變量i并賦初值0,因此循環(huán)條件為"假",結(jié)束while循環(huán)。故while語句循環(huán)了0次,因此輸出"*"的個數(shù)是0。
18.DD?!窘馕觥吭谶x項D中.字符指針s指向字符串常量BOOK!。故選項D正確。
19.A在c++中定義數(shù)組時,數(shù)組的范圍參數(shù)在靜態(tài)定義時必須是一個常數(shù),而在動態(tài)分配內(nèi)存定義時可以是常數(shù),也可以是一個賦了值的參數(shù)故選項A是錯誤的定義方法。
20.A解析:和線性表類似,棧也有兩種存儲方法,一是順序棧,二是鏈式棧。棧的順序存儲結(jié)構(gòu)是利用一組地址連續(xù)的存儲單元一次存儲自棧底到棧頂?shù)臄?shù)據(jù)元素,同時附設指針top指示棧頂元素的位置,由于棧的操作是線性表操作的特例,相對而言,鏈式棧的操作更易于實現(xiàn)。注意:這3種運算方法在各種存儲結(jié)構(gòu)中的應用。
21.C根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間的前后件關系的復雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。循環(huán)隊列、帶鏈隊列和帶鏈棧都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。
22.D解析:本題考查數(shù)學表達式的掌握,首先應轉(zhuǎn)換為弧度,然后作為COS函數(shù)的參數(shù),求絕對值,最后是開方函數(shù)??忌枰莆盏氖浅S玫臄?shù)學函數(shù)。
23.A本題考查的是文件流的操作,app表示以追加方式打開文件(即將指針移至文件尾),binao"表示以二進制方式打開文件。
24.1234512345解析:本題考查的是考生使用簡單循環(huán)輸出數(shù)組元素的能力,因為結(jié)束條件是i<5,而i初始值為0,所以只會輸出前5個元素。
25.運行時的多態(tài)性運行時的多態(tài)性
26.01230123解析:本題考核含有虛基類的繼承中構(gòu)造函數(shù)的調(diào)用順序,應該先調(diào)用基類的構(gòu)造函數(shù),接著是按照派生類繼承列表的順序依次調(diào)用虛基類的構(gòu)造函數(shù),最有調(diào)用派生類自己的構(gòu)造函數(shù).題中先調(diào)用base的構(gòu)造函數(shù),然后調(diào)用base1、base2的構(gòu)造函數(shù),最后調(diào)用derived的構(gòu)造函數(shù)。
27.log2nlog2n解析:在長度為n的有序線性表中進行二分查找,最壞的情況下需要的比較次數(shù)為log2n。
28.SQRT(x2+y2)/(a+b)
29.x=y.operator*(z)x=y.operator*(z)解析:此題考查的是“*”運算符的重載。運算符函數(shù)的調(diào)用有兩種形式,第一種是像一般函數(shù)那樣用函數(shù)名調(diào)用,即y.operator*(z);另一種是通過運算符構(gòu)成表達式,即y*z。
30.拷貝構(gòu)造拷貝構(gòu)造解析:本題考核拷貝構(gòu)造函數(shù)的定義??截悩?gòu)造函數(shù)是一種特殊的成員函數(shù),它的作用是使用一個已存在的對象來初始化一個被創(chuàng)建的同類的對象。
31.基類成員類對象成員非類對象成員基類成員\r\n類對象成員\r\n非類對象成員解析:派生類的構(gòu)造順序。
32.私有成員公有成員保護成員私有成員\r\n公有成員\r\n保護成員
33.成員函數(shù)成員函數(shù)解析:C++中,只有類的成員函數(shù)才能說明為虛函數(shù)。這是因為,虛函數(shù)僅適用于有繼承關系的類對象,所以普通函數(shù)不能說明為虛函數(shù)。
34.stringXstringYstringXstringY解析:本題考核友元函數(shù)的應用。該程序中,類X的成員函數(shù)show()在類Y中說明為類Y的友元函數(shù),因此,在該友元成員show()中可以訪問類Y的私有成員stry。成員函數(shù)show()的功能就是輸出類X的私有成員strx和Y對象ob的私有成員stry。主函數(shù)main()中定義了X類的一個對象a和Y類的一個對象b,并且都進行了初始化。然后調(diào)用對象a的成員函數(shù)show,輸出對象a中私有成員strx中的內(nèi)容和對象b中私有成員stry中的內(nèi)容,即字符串stringX和stringY。
35.int和doubleint和double解析:整型和雙精度型。注意除非定義了float變量,實型常量隱含為\u3000double型。36.(1)應改為“TC::TC”。(2)應改為“voidTC::display”。(3)應改為“TC::~TC”。【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名和作用域運算符“::”,作用域運算符用采表示某個成員屬于哪個類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應改為“TC::TC”,默認構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語句看,這是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯誤問題,display函數(shù)返回值為void,因此第2處的語句應改為“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是在類外實現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應改為“TC::~TC”。
37.(1)應改為“TC::TC”。
\n(2)應改為“voidTC::display”。
\n(3)應改為“TC::~TC”。
\n【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名和作用域運算符“::”,作用域運算符用采表示某個成員屬于哪個類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應改為“TC::TC”,默認構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語句看,這是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯誤問題,display函數(shù)返回值為void,因此第2處的語句應改為“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是在類外實現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應改為“TC::~TC”。
38.(1)應改為“TCobjl(1);”。
\n(2)應改為“0bj1.SetNumber(10);”。
\n(3)應改為“0bj2.SelNumber(100);”。
\n【解析】本題第1處的“TCobjl;”語句是聲明TC類的對象0bj1,根據(jù)TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個輸出結(jié)果兩1,所以補全參數(shù)1,即第1處的“TCobjl(1);”。第2處處的“objl.number=10;”應該是調(diào)用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應該是:對象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對象的抽象,而對象是類的具體實例。第3處“TC.SetNumber(100);”語句中的TC為類,并不是對象,這里應該使用定義的對象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。
39.(1)應改為“assert(sizeof(s1)==4);”。
\n(2)應改為“assert(sizeof(s2)==1O);”。
\n(3)應改為“assert(sizeof(s3)==1);”。
\n【解析】assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常?!癮ssert(sizeof(s1)==3);”語句中“sizeof(s1)==3”為假,這會使程序產(chǎn)生異常,不能正常執(zhí)行。因為str1的值為abc,但是它還有一個尾符,它的長度應該是4,而不是3,所以在第1處修改為“assert(sizeof(s1)==4);”。str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10);”。charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為“assert(sizeof(s3)==1);”。
40.(1)“staticintn=O”應改為“staticintn;”。(2)“intCO::n;”應改為“intCO::n=0;”。(3)“cout<<c.n<<endl;”應改為“cout<<c->n<<endl;”?!窘馕觥勘绢}要在屏幕上輸出兩個字符,首先要靜態(tài)變量初始化,第1處應改為“staticintn;”,第2處要給n賦值,第3處輸出時引用c的對象,應改為“cout<<c->n<<endl;”。41.(1)應改為“catch(char*s)”。(2)應改為“cateh(inti)”。(3)應改為“catch(…)”?!窘馕觥勘绢}中第1個標識前的異常拋出語句為“throw("error");”,其中的類型為字符串。所以對應的異常捕捉語句catch中應該符合這個類型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語句修改為“catch(char*S)”。第2個標識前的異常拋出語句為“throw((int)0);”,其中的類型為int。對應的異常捕捉語句catch中應該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。
42.(1)應改為“ein.getline(str,120,?);”。
\n(2)應改為“while(str[i])”。
\n(3)應改為“if(str[i]>=a&&str[i]<=2)”。
\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個數(shù),終止標志字符)”,所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語句應該是判斷字符串str中的每一個字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,則轉(zhuǎn)換。所以應該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,但是小寫字符應該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。
43.(1)“voidmain”。(2)“intm=0144;”。(3)“intn=OX25;”或“intn===0x25;”?!窘馕觥勘绢}主要考查了主函數(shù)定義及冪同進制之間的轉(zhuǎn)換,包括十進制到八進制,十進制到十六進制。主函數(shù)定義的定義形式為“main”,函數(shù)名之后必須是一對括號,因此第1處應改為“voidmain”。cout輸出默認是以十進制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)現(xiàn)變量的初值不正確,十進制的100對應八進制的144,卡進制的37對應十六進制的25,因此2和3應分別改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。44.(1)應改為“ein.getline(str,120,?);”。
(2)應改為“while(str[i])”。
(3)應改為“if(str[i]>=a&&str[i]<=2)”。
【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個數(shù),終止標志字符)”,所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語句應該是判斷字符串str中的每一個字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,則轉(zhuǎn)換。所以應該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,但是小寫字符應該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。
45.(1)應改為“usingnamespacestd;”。
\n(2)應改為“outl.open('1.txt',ios::binary|ios::app);”。
\n(3)應改為“out1.put(s[i]);”。
\n【解析】本題第1處的“usingstd;”是在程序中引入標準命名空間std,對于C++中引入標準命名空間的格式,缺少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個標識應該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。
46.使用VC++6.0打開源程序文件3.cpp。其中類TC用于把文件輸出到屏幕,然后進行文件的分割。分割的方法如下:第一個文件的大小是文件的前一半,另外一個文件的大小是剩余部分。此程序?qū)n.txt文件中的內(nèi)容輸出到
\n屏幕,并且將文件按照以上方式分割,存于文件out1.txt和out2.txt中。
\n其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。
\n(1)從輸入文件中獲得一個字符,并判斷是否到文件結(jié)
\n尾,如果到文件結(jié)尾,則退出循環(huán)。請在注釋1后添加適當?shù)恼Z句。
\n(2)把獲得的輸入文件的內(nèi)容存儲到bur中,并且用len
\n記錄下文件的長度。請在注釋2后添加適當?shù)恼Z句。
\n(3)將輸入文件的后一半內(nèi)容存儲在第二個文件中,請
\n在注釋3后添加適當?shù)恼Z句。
\n(4)使用文件流對象打開輸入文件i
溫馨提示
- 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-2030年中國鐵路物流行業(yè)十三五規(guī)劃與投資戰(zhàn)略研究報告
- 2025-2030年中國車燈模具行業(yè)市場前景規(guī)模及發(fā)展趨勢分析報告
- 2025-2030年中國蓮藕粉行業(yè)運行態(tài)勢及發(fā)展趨勢分析報告
- 2025-2030年中國花露水市場風險評估規(guī)劃分析報告
- 2025-2030年中國胡麻油市場競爭狀況及發(fā)展趨勢分析報告
- 2025-2030年中國聚碳酸酯板(陽光板)行業(yè)發(fā)展趨勢規(guī)劃研究報告
- 2025-2030年中國縫制機械市場運行現(xiàn)狀及發(fā)展趨勢分析報告
- 2025-2030年中國紙制品市場運行現(xiàn)狀及發(fā)展前景預測報告
- 2025-2030年中國電玩行業(yè)運行狀況及發(fā)展前景分析報告
- 2025-2030年中國電容筆行業(yè)發(fā)展狀況及營銷戰(zhàn)略研究報告
- 《井中分布式光纖聲波傳感數(shù)據(jù)采集規(guī)程》標準報批稿
- 人音版 音樂 八年級下冊 第一單元 我和你教案
- 代理法人免責協(xié)議書版本
- 2024年青島港灣職業(yè)技術學院單招職業(yè)適應性測試題庫必考題
- 門診導診課件
- python程序設計-說課
- 《糖尿病患者血脂管理中國專家共識(2024版)》解讀
- 廣州石牌村改造規(guī)劃方案
- GB/T 22919.12-2024水產(chǎn)配合飼料第12部分:鯽魚配合飼料
- IP承載網(wǎng)架構(gòu)規(guī)劃及路由部署N
- (完整word版)現(xiàn)代漢語常用詞表
評論
0/150
提交評論