




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2021年山西省呂梁市全國(guó)計(jì)算機(jī)等級(jí)考試C++語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、1.選擇題(10題)1.下列敘述中,正確的是()
A.軟件交付使用后還需要進(jìn)行維護(hù)
B.軟件一旦交付使用就不需要再進(jìn)行維護(hù)
C.軟件交付使用后其生命周期就結(jié)束
D.軟件維護(hù)是指修復(fù)程序中被破壞的指令
2.有以下程序,其輸出結(jié)果是()。#include<iostream>usingnamespacestd;intmain(){chara[10]={'1','2','3','4','5','6','7','8','9',0},*p;inti=8;p=a+i;cout<<p-3<<endl;return0;}
A.6789B.6C.789D.'6'
3.下列有關(guān)數(shù)據(jù)庫(kù)的描述,正確的是______。
A.數(shù)據(jù)庫(kù)是一個(gè)DBF文件B.數(shù)據(jù)庫(kù)是一個(gè)關(guān)系C.數(shù)據(jù)庫(kù)是一個(gè)結(jié)構(gòu)化的數(shù)據(jù)集合D.數(shù)據(jù)庫(kù)是一組文件
4.有以下程序:#include<iostream>usingnamespacestd;classR{public:R(intr1,intr2){R1=r1;R2=r2;}voidprint();voidprint()const;private:intR1,R2;};voidR::print(){cout<<R1<<","<<R2<<end1;}voidR::print()const{cout<<R1<<","<<R2<<end1;}intmain(){Ra(5,4);constRb(20,52);b.print();return0;}執(zhí)行后的輸出結(jié)果是()。
A.5,4B.4,5C.20,52D.52,20
5.下列程序中劃線處正確的語(yǔ)句是()。#include<iostream>usingnamespacestd;classBase{public:voidfun(){cout<<"Base::fun"<<endl;}};classDerived:publicBase{voidfun(){______∥顯式調(diào)用基類的函數(shù)fun()cout<<"D
A.fun();B.Base.fun();C.Base::fun();D.Base->fun();
6.單個(gè)用戶使用的數(shù)據(jù)視圖的描述稱為_(kāi)_____。
A.外模式B.概念模式C.內(nèi)模式D.存儲(chǔ)模式
7.下列說(shuō)法中錯(cuò)誤的是
A.公有繼承時(shí)基類中的public成員在派生類中仍是public成員
B.私有繼承時(shí)基類中的protected成員在派生類中仍是protected成員
C.私有繼承時(shí)基類中的public成員在派生類中仍是private成員
D.保護(hù)繼承時(shí)基類中的public成員在派生類中仍是protected成員
8.數(shù)據(jù)庫(kù)設(shè)計(jì)的根本目標(biāo)是要解決()。
A.數(shù)據(jù)共享問(wèn)題B.數(shù)據(jù)安全問(wèn)題C.大量數(shù)據(jù)存儲(chǔ)問(wèn)題D.簡(jiǎn)化數(shù)據(jù)維護(hù)
9.數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識(shí)的圖符不屬于數(shù)據(jù)流圖合法圖符的是()。
A.控制流B.加工C.數(shù)據(jù)存儲(chǔ)D.源和潭
10.C++程序的執(zhí)行是從()開(kāi)始執(zhí)行的?
A.main函數(shù)B.程序的第一行C.<iostream.h>D.<stdio.h>
二、單選題(13題)11.下面程序的運(yùn)行結(jié)果為()。#include<iostream.h>voidmain{for(inta=0,x=0;!xa<=10;a++){a++:}cout<<a<<endl:}A.10B.1lC.12D.0
12.下列關(guān)于this指針的敘述中,正確的是()。
A.任何與類相關(guān)的函數(shù)都有this指針
B.類的成員函數(shù)都有this指針
C.類的友元函數(shù)都有this指針
D.類的非靜態(tài)成員函數(shù)才有this指針
13.有如下函數(shù)定義:voidfunC(inta,int&B.{a++;b++;}若執(zhí)行代碼段:intx=0,Y=1;funC(X,Y);則變量x和y的值分別是()。
A.0和1B.1和1C.0和2D.1和2
14.有如下程序:#include<iostream>usingnamespacestd;classComplex{doublere,im;public:Complex(doubler,doublei):re(r),im(i){}doublereal()const{returnre;}doubleimage()const{returnim;}Complex&operator+=(Complexa){re+=a.re;im+=a.im;return*this;}};ostream&operator<<(ostream&s,constComplex&z){remms<<'('<<z.real()<<','<<z.image()<<')';}intmain(){Complexx(1,-2),y(2,3);cout<<(x+=y)<<endl;return0;}執(zhí)行這個(gè)程序的輸出結(jié)果是A.(1,-2)B.(2,3)C.(3,5)D.(3,1)
15.最簡(jiǎn)單的交換排序方法是()。A.快速排序B.選擇排序C.堆排序D.冒泡排序
16.對(duì)關(guān)系S和R進(jìn)行集合運(yùn)算,結(jié)果中既包含S中的所有元組也包含R中的所有元組,這樣的集合運(yùn)算稱為()。
A.并運(yùn)算B.交運(yùn)算C.差運(yùn)算D.積運(yùn)算
17.下列程序輸出的結(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
18.有如下程序#include<iostream>usingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni-l;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3;Funfunl;constFunfun2;___________return0;}若程序的輸出結(jié)果是:123則程序中下劃線處遺漏的語(yǔ)句是A.cout<<funl.value()<<Fun::i<<fun2.value();
B.cout<<Fun::i<<funl.value()<<fun2.value();
C.cout<<funl.value()<<fun2.value()<<Fun::i;
D.cout<<fun2.value()<<Fun::i<<fun1.value();
19.存在定義inta[10],x,*pa;,若pa=&a[0],下列的哪個(gè)選項(xiàng)和其他3個(gè)選項(xiàng)不是等價(jià)的?A.x=*pa;B.x=*(a+l);C.x=*(pa+1);D.x=a[1];
20.對(duì)類成員訪問(wèn)權(quán)限的控制,是通過(guò)設(shè)置成員的訪問(wèn)控制屬性實(shí)現(xiàn)的,下列不是訪問(wèn)控制屬性的是()。
A.公有類型B.私有類型C.保護(hù)類型D.友元類型
21.下列敘述中正確的是()。
A.有一個(gè)以上根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)
B.只有一個(gè)根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)
C.循環(huán)鏈表是非線性結(jié)構(gòu)
D.雙向鏈表是非線性結(jié)構(gòu)
22.下列對(duì)重載函數(shù)的描述中,錯(cuò)誤的是()。
A.重載函數(shù)中不允許使用默認(rèn)參數(shù)
B.重載函數(shù)中編譯是根據(jù)參數(shù)表進(jìn)行選擇的
C.不要使用重載函數(shù)來(lái)描述毫不相干的函數(shù)
D.構(gòu)造函數(shù)重載將會(huì)給初始化帶來(lái)多種方式
23.已知表達(dá)式++a中的"++"是作為成員函數(shù)重載的運(yùn)算符,則與++a等效的運(yùn)算符函數(shù)調(diào)用形式為_(kāi)________。
A.operator++(1)
B.operator++(a)
C.operator++(a,1)
D.operator++()
三、2.填空題(12題)24.關(guān)系代數(shù)是關(guān)系操作語(yǔ)言的一種傳統(tǒng)表示方式,它以集合代數(shù)為基礎(chǔ),它的運(yùn)算對(duì)象和運(yùn)算結(jié)果均為_(kāi)_____。
25.有以下程序:
#include<iostream>
usingnamespacestd;
longfib(intn)
{
if(n>2)
return(fib(n-1)+fib(n-2));
else
return2;
}
intmain()
cout<<fib(3)<<end1;
return0;
}
則該程序的輸出結(jié)果應(yīng)該是【】。
26.實(shí)現(xiàn)比較兩個(gè)字符串大小的函數(shù)是_____。
27.以下程序的執(zhí)行結(jié)果為【】。
#include<iostream>
usingnamespacestd;
classbase
{
public:
virtualvoidwho()
{
cout<<"baseclass"<<endl;
}
};
classderivel:publicbase
{
public:
voidwho()
{
cout<<"derivelclass"<<endl;
}
};
classderive2:publicbase
{
public:
voidwho()
{
cout<<"derive2class"<<endl;
}
};
voidmain()
{
baseobjl,*p;
derivelobj2;
derive2obj3;
P=&objl;
p->who();
p=&obj2;
p->who();
p=&obj3;
p->who();
}
28.數(shù)據(jù)庫(kù)是指按照一定的規(guī)則存儲(chǔ)在計(jì)算機(jī)中的【】的集合,它能被各種用戶共享。
29.下列程序運(yùn)行后的輸出結(jié)果是______。
#include<iostream.h>
voidmain()
{
ints=0,k;
for(k=7;k>=O;k--)
{
switch(k)
{
case1:
case4:
case7:s++;break;
case2:
case3:
case6:break:
case0:
case5:s+=2;break:
}
}
cout<<"s="<<s<<endl;
}
30.長(zhǎng)度為n的順序存儲(chǔ)線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【】。
31.在下面橫線上填上適當(dāng)?shù)恼Z(yǔ)句,完成程序。
#include<iostream>
usingnamespacestd;
classBase
{
intx;
public:
Base(inti){x=i;}
~Base(){}
};
classDerived:publicBase
{
public:
______∥完成類Derive構(gòu)造函數(shù)的定義
};
intmain()
{
DerivedObj;
return0;
}
在橫線處應(yīng)填入的語(yǔ)句是【】。
32.數(shù)據(jù)庫(kù)系統(tǒng)其內(nèi)部分為三級(jí)模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見(jiàn)到的數(shù)據(jù)模式。
33.在E-R圖中,圖形包括矩形框、菱形框、橢圓框。其中表示實(shí)體聯(lián)系的是_________框。
34.關(guān)系操作的特點(diǎn)是【】操作。
35.一個(gè)項(xiàng)目具有一個(gè)項(xiàng)目主管,一個(gè)項(xiàng)目主管可管理多個(gè)項(xiàng)目,則實(shí)體“項(xiàng)目主管”與實(shí)體“項(xiàng)目”的聯(lián)系屬于【】的聯(lián)系。
四、程序改錯(cuò)題(10題)36.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp。本程序要求輸入一個(gè)字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕中。注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******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;}
37.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,輸出的結(jié)果為Constructor,i=0,Destructor注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。試題程序:#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打開(kāi)考生文件夾下的源程序文件1.cpp,該程序運(yùn)行有問(wèn)題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果為:
number=1
number=10
number=100
注意:不要改動(dòng)main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******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打開(kāi)考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果為:
sizeof(S1)=5
sizeof(s2)=10
sizeof(s3)=1
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。
(1)不能刪除assert()語(yǔ)句。
(2)只能修改后面的數(shù)字。
提示:assert函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。
試題程序:
#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打開(kāi)考生文件夾下的源程序文件
1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本程序要求實(shí)現(xiàn)的功能為從鍵盤輸入一個(gè)字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在
//******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;
}
41.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)。請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為1003732注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。試題程序:#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打開(kāi)考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序輸出:
9,8,7,6,5
注意:錯(cuò)誤的語(yǔ)句在/********error********/的下面,修改該語(yǔ)句即可。其他的語(yǔ)句不能修改。
試題程序:
#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;
}
43.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp。本程序要求輸入一個(gè)字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕中。
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******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;
}
44.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使程序正常運(yùn)行,并且要求最后一個(gè)catch必須拋出執(zhí)行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******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;}
45.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使該程序的輸出結(jié)果正確。程序輸出:88注意:錯(cuò)誤的語(yǔ)句在/********error********/的下面。修改該語(yǔ)句即可,其他的語(yǔ)句不能修改。試題程序:#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;}
五、綜合應(yīng)用題(2題)46.使用VC++6.0打開(kāi)考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)定義類的公有數(shù)據(jù)成員函數(shù)N0、Name[32],其中N0是int型的數(shù)據(jù),Name[32]為字符型。請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成函數(shù)Set的定義,分別設(shè)置N0和Name的值,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成函數(shù)print,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句,輸出結(jié)果如下:N0=12345Name=HelloWorld!(4)添加默認(rèn)構(gòu)造函數(shù),設(shè)置N0為0,Name為空,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái),請(qǐng)不要修改其他的程序代碼。試題程序:#include<iostream.h>classTC{public://********1********//********2********{No=no;for(inti=0;strName[i]!=0;i++){Name[i]=strName[i];Name[i+1]=0;}}voidprint(){//********3********}TC(){//********4********)};intmain(){TCstu:stu.Set(12345,"HelloWorld!");stu.print();return0;}
47.請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj3下的工程proj3,其中聲明的DataList類,是一個(gè)用于表示數(shù)據(jù)表的類。DataList的重載運(yùn)算符函數(shù)0perator+,其功能是求當(dāng)前數(shù)據(jù)表與另一個(gè)相同長(zhǎng)度的數(shù)據(jù)表之和;即它返回一個(gè)數(shù)據(jù)表,其每個(gè)元素等于相應(yīng)兩個(gè)數(shù)據(jù)表對(duì)應(yīng)元素之和。請(qǐng)編寫這個(gè)operator+函數(shù)。程序的正確輸出應(yīng)該是:兩個(gè)數(shù)據(jù)表:1,2,3,4,5,63,4,5,6,7,8兩個(gè)數(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;//兩個(gè)數(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{//兩個(gè)數(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);//定義兩個(gè)數(shù)據(jù)表對(duì)象eout<<”兩個(gè)數(shù)據(jù)表:”<<endl:listl.show:list2.show;eout<<endl<<”兩個(gè)數(shù)據(jù)表之和:”<<endl:(1istl+list2).show;writeToFile(””,listl+list2);return0:
六、3.綜合應(yīng)用題(2題)48.使用VC6打開(kāi)考生文件夾下的工程MyProj7。此工程包含一個(gè)源程序文件MyMain7.cpp。其中定義了類Sample,但類Sample的定義并不完整。
請(qǐng)按要求完成下列操作,將類Sample的定義補(bǔ)充完成:
①定義私有數(shù)據(jù)成員n,它是int型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
②完成重載構(gòu)造函數(shù)Sample()的定義,使Sample對(duì)象的默認(rèn)值:n=0。請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
③完成成員函數(shù)add()的類體內(nèi)的定義,使成員函數(shù)返回的Sample對(duì)象的值n為兩類Sample對(duì)象s1和s2的私有成員n的和。請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
④完成成員函數(shù)disp()的類外定義,使其以“n=”的格式將Sample對(duì)象的值輸出到屏幕上。請(qǐng)?jiān)谧⑨尅?*4**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
源程序文件MyMain7.cpp清單如下:
//MyMain7.cpp
#include<iostream>
usingnamespacestd;
classSample
{
private:
//**1**
public:
Sample(){}
//**2**
Sampleadd(Samples1,Samples2)
{
//**3**
}
voiddisp();
};
voidSample::disp()
{
//**4**
}
intmain()
{
Samples1(10),s2(5),s3;
cout<<"s1:";
s1.disp();
cout<<"\nS2:";
s2,disp();
s3.add(s1,S2);
cout<<"\ns3.add(s1,s2)\ns3:";
s3.disp();
return0;
}
49.使用VC6打開(kāi)考生文件夾下的工程test28_3。此工程包含一個(gè)test28_3.cpp,其中定義了類Person,但該類的定義并不完整。請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。
(1)定義類Person的私有數(shù)據(jù)成員forename、surname和money,forename和surname都是char型的指針數(shù)據(jù),money是double型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(2)完成類Person的帶三個(gè)參數(shù)的構(gòu)造函數(shù)Person(char*f,char*s,doublem),分別為forename和surname申請(qǐng)新的空間來(lái)存儲(chǔ)參數(shù)f和s指針指向的內(nèi)容,注意空間的大小,最后把參數(shù)m的值賦給money,請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(3)完成類Person的析構(gòu)函數(shù)的定義,把forename和surname指向的空間釋放,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(4)完成類Person的成員函數(shù)display的定義,使其以格式“fornamesurnamehasmoney”的形式輸出內(nèi)容,請(qǐng)?jiān)谧⑨尅?/**4*?!敝筇砑舆m當(dāng)?shù)恼Z(yǔ)句。
注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
輸出結(jié)果如下:
RichardBerkhas1000.56
源程序文件test28_3.cpp清單如下:
#include<iostream.h>
#include<string.h>
classPerson
{
private:
//**1**
doublemoney;
public:
Person(char*f,char*s,doublem);
~Person();
voiddisplay();
};
Person::Person(char*f,char*s,doublem)
{
//**2**
strcpy(forename,f);
surname=newchar[strlen(s)+1];
strcpy(surname,s);
money=m;
}
Person::-Person()
{
//**3**
}
voidPerson::display()
{
//**4**
}
voidmain()
{
Personp("Richard","Berk",1000.56);
p.display();
}
參考答案
1.A解析:維護(hù)是軟件生命周期的最后一個(gè)階段,也是持續(xù)時(shí)間最長(zhǎng)、付出代價(jià)最大的階段。軟件工程學(xué)的目的就在于提高軟件的可維護(hù)性,同時(shí)也要設(shè)法降低維護(hù)的代價(jià)。
軟件維護(hù)通常有以下四類;
①為糾正使用中出現(xiàn)的錯(cuò)誤而進(jìn)行的改正性維護(hù);
②為適應(yīng)環(huán)境變化而進(jìn)行的適應(yīng)性維護(hù);
③為改進(jìn)原有軟件而進(jìn)行的完善性維護(hù);
④為將來(lái)的可維護(hù)和可靠而進(jìn)行的預(yù)防性維護(hù)。
軟件維護(hù)不僅包括程序代碼的維護(hù),還包括文檔的維護(hù)。文檔可以分為用戶文檔和系統(tǒng)文檔兩類。但無(wú)論是哪類文檔,都必須與程序代碼同時(shí)維護(hù)。只有與程序代碼完全一致的文檔才有意義和價(jià)值。由此可知,本題中選項(xiàng)B、C、D中的說(shuō)法都是錯(cuò)誤的。
2.A解析:沒(méi)有下標(biāo)的數(shù)組名是一個(gè)指向該數(shù)組首元素的指針,本程序?qū)崿F(xiàn)的功能是將字符“6”及其以后的字符按字符串形式輸出。
3.C解析:數(shù)據(jù)庫(kù)(Database,簡(jiǎn)稱DB)是數(shù)據(jù)的集合,它具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲(chǔ)介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個(gè)應(yīng)用程序所共享。數(shù)據(jù)庫(kù)中的數(shù)據(jù)具有“集成”、“共事”之特點(diǎn)。
4.C
5.C
6.A解析:選項(xiàng)A)正確,外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見(jiàn)到的數(shù)據(jù)模式;選項(xiàng)B)不正確,全局?jǐn)?shù)據(jù)視圖的描述稱為概念模式,即數(shù)據(jù)庫(kù)中全部數(shù)據(jù)的整體邏輯結(jié)構(gòu)的描述;選項(xiàng)C)不正確,物理存儲(chǔ)數(shù)據(jù)視圖的描述稱為內(nèi)模式,即數(shù)據(jù)庫(kù)在物理存儲(chǔ)方面的描述;選項(xiàng)D)不正確,存儲(chǔ)模式即為內(nèi)模式。
7.B解析:本題考核派生類中的訪問(wèn)權(quán)限問(wèn)題。繼承方式包括:public(公有派生),protected(保護(hù)派生)和private(私有派生)。不同的繼承方式會(huì)導(dǎo)致原來(lái)具有不同訪問(wèn)屬性的基類成員在派生類中的訪問(wèn)屬性也有所不同。這里的訪問(wèn)主要來(lái)自兩個(gè)方面:一是派生類中的新增成員對(duì)從基類繼承來(lái)的成員的訪問(wèn);二是派生類外部通過(guò)派生類對(duì)象對(duì)從基類繼承來(lái)的成員的訪問(wèn)。私有繼承時(shí)基類中的protected成員在派生類中變成了private成員,所以B選項(xiàng)的描述是錯(cuò)誤的。
8.A解析:由于數(shù)據(jù)的集成性使得數(shù)據(jù)可為多個(gè)應(yīng)用所共享,特別是在網(wǎng)絡(luò)發(fā)達(dá)的今天,數(shù)據(jù)庫(kù)與網(wǎng)絡(luò)的結(jié)合擴(kuò)大了數(shù)據(jù)關(guān)系的應(yīng)用范圍。數(shù)據(jù)的共享本身又可極大地減少數(shù)據(jù)冗余性,不僅減少了不必要的存儲(chǔ)空間,更為重要的是可以避免數(shù)據(jù)的不一致性。因此,數(shù)據(jù)庫(kù)設(shè)計(jì)的根本目標(biāo)是要解決數(shù)據(jù)共享問(wèn)題。
9.A解析:數(shù)據(jù)流圖包括4個(gè)方面,即加工(轉(zhuǎn)換)(輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出)、數(shù)據(jù)流(沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名)、存儲(chǔ)文件(數(shù)據(jù)源)(表示處理過(guò)程中存放各種數(shù)據(jù)的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實(shí)體)。不包括選項(xiàng)中的控制流。
10.A解析:從主函數(shù)開(kāi)始執(zhí)行。
11.C在進(jìn)入最后一次循環(huán)時(shí)a=10,在循環(huán)體內(nèi)執(zhí)行“a++;”后a=11,執(zhí)行完該次循環(huán)體計(jì)算for循環(huán)的增量部分后a=12小于l0,循環(huán)結(jié)束。
12.D解析:本題考核this指針的使用。類的每一個(gè)成員函數(shù)都有一個(gè)隱含定義的常量指針,稱為this指針。它是成員函數(shù)所屬對(duì)象的指針,它指向類對(duì)象的地址。成員函數(shù)可以通過(guò)這個(gè)指針知道自己屬于哪一個(gè)對(duì)象。但是在使用this指針時(shí)需要注意的是:this指針只能在類的成員函數(shù)中使用,它指向該成員函數(shù)被調(diào)用的對(duì)象。this指針一般用于返回當(dāng)前對(duì)象自身;靜態(tài)成員函數(shù)沒(méi)有this指針。因?yàn)轭愔挥幸粋€(gè)靜態(tài)成員函數(shù)實(shí)例,所以使用this指針沒(méi)有什么意義。在靜態(tài)成員函數(shù)中使用this指針會(huì)引起編譯錯(cuò)誤。
13.C函數(shù)參數(shù)的3種傳遞方式:①將變量名作為形參和實(shí)參,即傳值方式;②傳遞變量指針;③引用形參。本題中實(shí)參x為傳值方式,所以X的值不會(huì)改變;Y為引用形參,所以會(huì)改變。故本題答案為C。
14.D解析:本題考查了運(yùn)算符重載的綜合應(yīng)用。解本題的關(guān)鍵是要弄明白cout<<(x+=y)<<endl;語(yǔ)句是怎么執(zhí)行的。因?yàn)閤和y都是Complex類的對(duì)象,而Complex類中已經(jīng)重載了仁運(yùn)算符,所以表達(dá)式x+=y就等價(jià)于x.operator+=(y)。該函數(shù)將y中的re、\u3000im成員累加到x的對(duì)應(yīng)成員之上,并返回x自身。故表達(dá)式(x+=y)返回的值是一個(gè)\u3000Complex類對(duì)象,其內(nèi)容為(3,1)。因?yàn)椋迹歼\(yùn)算符的結(jié)合性是從左至右的,所以現(xiàn)在要計(jì)算的表達(dá)式是cout<<(x+=y),cout是C++語(yǔ)言中預(yù)定義的輸出流類ostream的對(duì)象,所以<<運(yùn)算符兩邊的分量類型正好符合上面<的重載函數(shù),故其等價(jià)于函數(shù)調(diào)用operator<<(cout,(x+=y))。在<<的重載函數(shù)中輸出結(jié)果是(3,1),最后函數(shù)返回并輸出一個(gè)換行符endl,程序結(jié)束。故應(yīng)該選擇D。
15.D冒泡排序(BubbleSort)的基本概念是:依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第一對(duì)數(shù)開(kāi)始比較(因?yàn)榭赡苡捎诘?個(gè)數(shù)和第3個(gè)數(shù)的交換,使得第1個(gè)數(shù)不再小于第2個(gè)數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個(gè)數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個(gè)新的最大數(shù)(其實(shí)在整個(gè)數(shù)列中是第二大的數(shù))。如此下去,重復(fù)以上過(guò)程,直至最終完成排序。
16.AA)【解析】關(guān)系的并運(yùn)算是指由結(jié)構(gòu)相同的兩個(gè)關(guān)系合并,形成一個(gè)新的關(guān)系,新關(guān)系中包含兩個(gè)關(guān)系中的所有元組。
17.B解析:由程序中的主函數(shù)main入手,分別調(diào)用fun1,fun2,fun3函數(shù),得出輸出結(jié)果。其中,3個(gè)函數(shù)都是實(shí)現(xiàn)的兩個(gè)形參的交換功能,只是值傳遞的方式不同,有的是引用,有的是傳值。第一個(gè)函數(shù)中參數(shù)采用的是值傳遞的方式,形參的變化不影響實(shí)參。所以d調(diào)用fun1后,實(shí)參a和b并沒(méi)有交換,仍然是AB。第二個(gè)調(diào)用中,實(shí)參a采用的是地址,即傳遞的是地址,所以形參a的改變會(huì)影響實(shí)參a的值,即BB。同理,調(diào)用fun3后為BA.
18.A解析:本題主要考查的是常成員函數(shù)。const關(guān)鍵字可以用于參與對(duì)重載函數(shù)的區(qū)分。重載的原則是:常對(duì)象調(diào)用常成員函數(shù),一般對(duì)象調(diào)用一般成員函數(shù)。當(dāng)類中只有一個(gè)常成員函數(shù)時(shí),一般對(duì)象也可以調(diào)用該常成員函數(shù)。由此可見(jiàn),通過(guò)fun1調(diào)用value()函數(shù)時(shí),是調(diào)用前一個(gè),而通過(guò)fun2調(diào)用value()函數(shù),是調(diào)用后一個(gè)。另外,value()函數(shù)中訪問(wèn)的i是類中定義的數(shù)據(jù)成員i,全局變量i在類中被“屏蔽”。觀察4個(gè)選項(xiàng)不難發(fā)現(xiàn),要輸出的表達(dá)式來(lái)來(lái)去去只有3個(gè):fun1.value()、fun2.value()和Fun::i。fun1.value()調(diào)用的是前一個(gè)value()函數(shù),輸出i-1,這里的i是Fun類的成員i,即等于2-1=1。fun2.value()調(diào)用的后一個(gè)value()函數(shù),輸出i+1=2+1=3。\u3000Fun::i是通過(guò)類名直接訪問(wèn)類的靜態(tài)數(shù)據(jù)成員i的值,即2。所以正確的輸出順序應(yīng)該是:fun1.value(),F(xiàn)un::i,fun2.value()。故應(yīng)該選擇A。
19.A
20.D解析:本題考查的是對(duì)重載函數(shù)的掌握,因?yàn)?+a是右結(jié)合的,所以a先自加1再輸出,即為2.2,之后調(diào)用函數(shù)print(inta,intb)輸出b和a,即43。
21.B解析:如果一個(gè)非空的數(shù)據(jù)結(jié)構(gòu)滿足以下兩個(gè)條件:(l)有且只有一個(gè)根結(jié)點(diǎn);(2)每個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件。則稱該數(shù)據(jù)結(jié)構(gòu)為線性結(jié)構(gòu)。如果一個(gè)數(shù)據(jù)結(jié)構(gòu)不是線性結(jié)構(gòu),則稱之為非線性結(jié)構(gòu),故A項(xiàng)錯(cuò)誤。有一個(gè)根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu),如二叉樹(shù),B項(xiàng)說(shuō)法正確。循環(huán)鏈表和雙向鏈表都屬于線性鏈表。故C、D項(xiàng)錯(cuò)誤。
22.AA?!窘馕觥窟x項(xiàng)A中,重載函數(shù)中是允許使用默認(rèn)參數(shù)的;為了使重載函數(shù)有意義,不要使用重載函數(shù)來(lái)描述毫不相干的函數(shù);重載函數(shù)中編譯是根據(jù)參數(shù)表進(jìn)行選擇的,包括參數(shù)的個(gè)數(shù)和類型。
23.D本題主要考查了運(yùn)算符重載。C++把重載的運(yùn)算符視為特殊的函數(shù),稱為運(yùn)算符函數(shù),函數(shù)名就是在運(yùn)算符前加上保留字operator。一般而言,如果a是類X的對(duì)象,在類X中重載前置單目運(yùn)算符@,則下列兩種函數(shù)調(diào)用方法是等價(jià)的:第一種是通過(guò)運(yùn)算符構(gòu)成表達(dá)式的形式進(jìn)行調(diào)用,\r\n即@a;第二種是像一般函數(shù)那樣用函數(shù)名進(jìn)行調(diào)用:當(dāng)把@作為成員函數(shù)重載時(shí),調(diào)用形式為a.operator\r\n@();當(dāng)把@作為非成員函數(shù)重載時(shí),調(diào)用形式為operator\r\n@(a)。本題是把前置單目運(yùn)算符++重載為成員函數(shù),因此與表達(dá)式++a等效的表示為a.operator++()。
24.關(guān)系關(guān)系解析:關(guān)系代數(shù)是關(guān)系操縱語(yǔ)言的一種傳統(tǒng)表示方式,它以集合代數(shù)為基礎(chǔ)發(fā)展起來(lái)的,但它的運(yùn)算對(duì)象和運(yùn)算結(jié)果均是關(guān)系,這些新關(guān)系仍可以使用同樣的代數(shù)運(yùn)算進(jìn)一步操作。關(guān)系代數(shù)也是一種抽象的查詢語(yǔ)言,它通過(guò)對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢和修改處理的需求。
25.44解析:本題主要考查C++中遞歸函數(shù)。遞歸函數(shù)即自調(diào)用函數(shù),在函數(shù)體內(nèi)部直接或間接的自己調(diào)用自己,即函數(shù)的嵌套調(diào)用是函數(shù)本身。遞歸調(diào)用分為直接遞歸調(diào)用和間接遞歸調(diào)用兩種形式。本題程序?yàn)榍蠼獾湫瓦f歸數(shù)列Fibonacci數(shù)列中任意項(xiàng)值的簡(jiǎn)化程序(主函數(shù)中的調(diào)用改成flb(n)即變成求解任意項(xiàng)值)。主函數(shù)通過(guò)調(diào)用fib()函數(shù),fib()函數(shù)內(nèi)部再通過(guò)一個(gè)分支結(jié)構(gòu)判斷是否進(jìn)行遞歸調(diào)用或退出遞歸調(diào)用,調(diào)用方式為直接遞歸調(diào)用。主函數(shù)通過(guò)實(shí)參將值3賦給fib()函數(shù)的形參n,由于n=3滿足if分支語(yǔ)句條件,因此函數(shù)進(jìn)行遞歸調(diào)用,即計(jì)算fib(2)和fib(1)的值;將2賦給fib()函數(shù)的形參后,由于n=2不滿足if分之語(yǔ)句條件,因此程序退出遞歸,返回2;將1賦給fib()函數(shù)的形參后,函數(shù)同樣返回2。因此函數(shù)遞歸調(diào)用的最終結(jié)果為返回2+2=4,即fib(3)=4,程序最后輸出值為4。
26.strcmp
27.baseclassderivelclassderive2classbaseclass\r\nderivelclass\r\nderive2class解析:類base含有虛函數(shù)who(),該類派生出derivel類和derive2類,兩個(gè)派生類中都有虛函數(shù)who()的定義。在main()函數(shù)中定義了一個(gè)指向base類的指針,它也被允許指向其派生類。在執(zhí)行過(guò)程中,不斷改變它所指的對(duì)象,當(dāng)P->who()時(shí)就能調(diào)用不同的版本。這是因?yàn)槭褂昧颂摵瘮?shù),因而進(jìn)行動(dòng)態(tài)聯(lián)編。注意:應(yīng)掌握靜態(tài)聯(lián)編的使用方法。
28.數(shù)據(jù)數(shù)據(jù)解析:數(shù)據(jù)庫(kù)是由一個(gè)互相關(guān)聯(lián)的數(shù)據(jù)的集合和一組用以訪問(wèn)這些數(shù)據(jù)的程序組成,這些數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲(chǔ)存
29.s=7
30.n/2n/2解析:性表的任何位置插入一個(gè)元素的概率相等,即概率為P=1/(n+1),則插入一個(gè)元素時(shí)所需移動(dòng)元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。
31.Derived(inti):Base(i){}Derived(inti):Base(i){}解析:本題考核派生類中構(gòu)造函數(shù)。程序中,類Derived是基類Base的公有派生。在類Derived的構(gòu)造函數(shù)應(yīng)該包括調(diào)用基類構(gòu)造函數(shù)使基類的數(shù)據(jù)成員得以初始化。
32.外模式外模式解析:數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式分別是內(nèi)模式、概念模式和外模式。其中,物理模式給出了數(shù)據(jù)庫(kù)的物理存儲(chǔ)結(jié)構(gòu)和存取方法;概念模式是數(shù)據(jù)庫(kù)系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述;外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見(jiàn)到的數(shù)據(jù)模式。
33.菱形E-R模型可以用一種非常直觀的圖的形式表示,這種圖稱為E-R圖。在E-R圖中我們分別用下面不同的幾何圖形表示E-R模型中的三個(gè)概念與兩個(gè)聯(lián)接關(guān)系。(1)實(shí)體集表示法。在E-R圖中用矩形表示實(shí)體集,在矩形內(nèi)寫上該實(shí)體集的名字。(2)屬性表示法。在E-R圖中用橢圓形表示屬性,在橢圓形內(nèi)寫上該屬性的名稱。(3)聯(lián)系表示法。在E-R圖中用菱形(內(nèi)寫上聯(lián)系名)表示聯(lián)系。
34.集合集合解析:在關(guān)系操作中,所有操作對(duì)象與操作結(jié)果都是關(guān)系。而關(guān)系定義為元數(shù)相同的元組的集合。因此,關(guān)系操作的特點(diǎn)是集合操作。
35.一對(duì)多(或1:N)一對(duì)多(或1:N)解析:兩個(gè)文體集間的聯(lián)系實(shí)際上是實(shí)體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有3種,即一對(duì)一(1;1)的聯(lián)系、一對(duì)多(1:N)或多對(duì)一(N:1)的聯(lián)系和多對(duì)多(M:N)的聯(lián)系。
36.(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ù)組,字符個(gè)數(shù),終止標(biāo)志字符)”,所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語(yǔ)句應(yīng)該是判斷字符串str中的每一個(gè)字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個(gè)字符是否為小寫,若為小寫,則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語(yǔ)句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語(yǔ)句只是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。
37.(1)應(yīng)改為“TC::TC”。(2)應(yīng)改為“voidTC::display”。(3)應(yīng)改為“TC::~TC”?!窘馕觥吭陬惖耐獠慷x成員函數(shù)時(shí),必須在成員函數(shù)前面加上類名和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個(gè)成員屬于哪個(gè)類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應(yīng)改為“TC::TC”,默認(rèn)構(gòu)造函數(shù)沒(méi)有參數(shù)。由第2處“TC::display”后的語(yǔ)句看,這是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯(cuò)誤問(wèn)題,display函數(shù)返回值為void,因此第2處的語(yǔ)句應(yīng)改為“voidTC::display”。由第3處的語(yǔ)句“TC::TC”可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個(gè)特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語(yǔ)句應(yīng)改為“TC::~TC”。
38.(1)應(yīng)改為“TCobjl(1);”。
\n(2)應(yīng)改為“0bj1.SetNumber(10);”。
\n(3)應(yīng)改為“0bj2.SelNumber(100);”。
\n【解析】本題第1處的“TCobjl;”語(yǔ)句是聲明TC類的對(duì)象0bj1,根據(jù)TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個(gè)輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(1);”。第2處處的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應(yīng)該是:對(duì)象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。第3處“TC.SetNumber(100);”語(yǔ)句中的TC為類,并不是對(duì)象,這里應(yīng)該使用定義的對(duì)象,即obj2,所以將語(yǔ)句修改為“obj2.SetNumber(100);”。
39.(1)應(yīng)改為“assert(sizeof(s1)==4);”。
\n(2)應(yīng)改為“assert(sizeof(s2)==1O);”。
\n(3)應(yīng)改為“assert(sizeof(s3)==1);”。
\n【解析】assert函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會(huì)產(chǎn)生中斷異常?!癮ssert(sizeof(s1)==3);”語(yǔ)句中“sizeof(s1)==3”為假,這會(huì)使程序產(chǎn)生異常,不能正常執(zhí)行。因?yàn)閟tr1的值為abc,但是它還有一個(gè)尾符,它的長(zhǎng)度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(s1)==4);”。str2[10]說(shuō)明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10);”。charstr3=23;語(yǔ)句說(shuō)明23是字符,所占存儲(chǔ)空間為1,所以修改為“assert(sizeof(s3)==1);”。
40.(1)應(yīng)改為“usingnamespacestd;”。
\n(2)應(yīng)改為“outl.open('1.txt',ios::binary|ios::app);”。
\n(3)應(yīng)改為“out1.put(s[i]);”。
\n【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,對(duì)于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處的語(yǔ)句修改為“usingnamespacestd;”。第2處,調(diào)用成員函數(shù)open中,輸入、輸出方式是在ios類中定義的,所以“out1.open('1.txt',binary|app);”語(yǔ)句缺少類ios,即第2處的語(yǔ)句修改為“out1.open('1.txt',ios::binary|ios::app);”。第3個(gè)標(biāo)識(shí)應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語(yǔ)句修改為“out1.put(s[i]);”。
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ù)名之后必須是一對(duì)括號(hào),因此第1處應(yīng)改為“voidmain”。cout輸出默認(rèn)是以十進(jìn)制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)現(xiàn)變量的初值不正確,十進(jìn)制的100對(duì)應(yīng)八進(jìn)制的144,卡進(jìn)制的37對(duì)應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分別改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。
42.(1)應(yīng)添加“public:”。
\n(2)“inti”應(yīng)改為“inti(10);”。
\n(3)“i++;”應(yīng)改為“i--;”。
\n【解析】本題主要考查的是成員的訪問(wèn)屬性。成員的訪問(wèn)屬性有公有、保護(hù)和私有3種,而默認(rèn)的訪問(wèn)屬
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 綠化工程高位水池施工方案
- 變電站避雷器安裝施工方案
- 海纜防護(hù)沉軟體排施工方案
- 黃山大理石欄桿施工方案
- 交房樣板施工方案
- 英語(yǔ)閱讀理解練習(xí)
- 四川廠房滲漏維修施工方案
- 鞍山8年級(jí)期中數(shù)學(xué)試卷
- 鹿寨縣國(guó)四道路施工方案
- 四川房地產(chǎn)開(kāi)發(fā)施工方案
- DeepSeek人工智能語(yǔ)言模型探索AI世界科普課件
- 《青春期心理健康指導(dǎo)》課件
- 第18講 等腰三角形 課件中考數(shù)學(xué)復(fù)習(xí)
- 全過(guò)程工程咨詢文件管理標(biāo)準(zhǔn)
- DB65T 8024-2024 建筑用室外氣象參數(shù)標(biāo)準(zhǔn)
- 《預(yù)制高強(qiáng)混凝土風(fēng)電塔筒生產(chǎn)技術(shù)規(guī)程》文本附編制說(shuō)明
- 四川省建筑行業(yè)調(diào)研報(bào)告
- 2025湖北省煙草專賣局(公司)招聘200人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年山東省青島市技師學(xué)院公開(kāi)招聘工作人員35名歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025采購(gòu)部年度工作計(jì)劃
- 2025年安徽合肥市軌道交通集團(tuán)限公司社會(huì)招聘24人高頻重點(diǎn)提升(共500題)附帶答案詳解
評(píng)論
0/150
提交評(píng)論