版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023年吉林省白城市全國(guó)計(jì)算機(jī)等級(jí)考試
C++語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)
學(xué)校:班級(jí):姓名:考號(hào):
一、1.選擇題(10題)
I.在下列數(shù)據(jù)管理的各階段中,數(shù)據(jù)獨(dú)立性最高的階段是
A.手工管理B.文件系統(tǒng)C.數(shù)據(jù)項(xiàng)管理D.數(shù)據(jù)庫(kù)系統(tǒng)
2.下面關(guān)于運(yùn)算符重載的描述錯(cuò)誤的是
A.運(yùn)算符重載不能改變操作數(shù)的個(gè)數(shù)、運(yùn)算符的優(yōu)先級(jí)、運(yùn)算符的結(jié)合
性和運(yùn)算符的語(yǔ)法紜構(gòu)
B.不是所有的運(yùn)算符都可以進(jìn)行重載
C.運(yùn)算符函數(shù)的調(diào)用必須使用關(guān)鍵字operator
D.在C++語(yǔ)言中不可通過(guò)運(yùn)算符重載創(chuàng)造出新的運(yùn)算符
3.軟件生命周期中所花費(fèi)用最多的階段是()。
A.詳細(xì)設(shè)計(jì)B.軟件編碼C.軟件測(cè)試D.軟件維護(hù)
4.若有以下程序:
main()
{intk=2,i=2,m;
m=(k+=i*=k);
cout<<m<<"J<<i<<endl;
執(zhí)行后的輸出結(jié)果是
A.8,6B.8,3C.6,4D.7,4
5.采用面向?qū)ο蠹夹g(shù)開(kāi)發(fā)的應(yīng)用系統(tǒng)的特點(diǎn)是()。
A.重用性更強(qiáng)B.運(yùn)行速度更快C.占用存儲(chǔ)量小D.維護(hù)更復(fù)雜
6.面向?qū)ο蟪绦蛟O(shè)計(jì)將數(shù)據(jù)和什么放在一起,作為一個(gè)相互依存、不可
分割的整體來(lái)處理?
A.對(duì)數(shù)據(jù)的操作B.信息C.數(shù)據(jù)隱藏D.數(shù)據(jù)抽象
7.下面程序的輸出結(jié)果是()。#include<iostream.h>Classexample{int
a;public:example(intB.{a=b++;}voidprint(){a=a+1cout<<a<<"";}
voidprint()const{cout<<a<;}};voidmain(){examplex(3);Const
exampley(2);x.print();
A.22B.43C.42D.32
8.語(yǔ)句cout<<setprecision(2)<<1024.4567;的輸出結(jié)果為
A.1024.4567B.1024C.1024.45D.le+003
9.表達(dá)式10>5&&6%3的值是
A.-lB.非零值C.OD.l
10.面向?qū)ο蟪绦蛟O(shè)計(jì)思想的主要特征中不包括
A.繼承性B.功能分解,逐步求精C.封裝性和信息隱藏D.多態(tài)性
二、單選題(13題)
11.有如卜程序:
#include<iostream>
usingnamespacestd;
classBasel
(
public:
Basel(intD.{cout?d;}
一Basel{}
};
classBase2
(
public:
Base2(intD.{tout?d;}
~Base2{}
};
classDerived:publicBasel,Base2
(
public:
Derived(inta,intb,intc,intD.:Basel(B.,Base2(A.,bl(D.
b2(C.{}
private:
intbl:
intb2:
);
intmain
(
Derivedd(1,2,3,4);
return0;
執(zhí)行這個(gè)程序的輸出結(jié)果是()oA.1234B.2134c.12D.21
12.下列關(guān)于運(yùn)算符函數(shù)的敘述中,錯(cuò)誤的是
A.運(yùn)算符函數(shù)的名稱總是以operator為前綴
B.運(yùn)算符函數(shù)的參數(shù)可以是對(duì)象
C.運(yùn)算符函數(shù)只能定義為類的成員函數(shù)
D.在表達(dá)式中使用重載的運(yùn)算符相當(dāng)于調(diào)用運(yùn)算符重載函數(shù)
13.C++語(yǔ)言對(duì)C語(yǔ)言做了很多改進(jìn),C++語(yǔ)言相對(duì)于C語(yǔ)言的最根本的
變化是()
A.增加了一些新的運(yùn)算符B.允許函數(shù)重載,并允許設(shè)置缺省參數(shù)C.規(guī)
定函數(shù)說(shuō)明符必須用原型D.引進(jìn)了類和對(duì)象的概念
14.有如下程序:
#nclude<iostream>
usingnamespacestd;
classMyClass{
public:MyClass(intx):val(x){}
voidSet(intx){Val=x;}
voidPrint()const{cout<<Mval="<<Vai<<*\t';}
private:intval;
};
intmain(){
constMyClassobj1(10);
MyClassobj2(20);
objl.Print();〃語(yǔ)句1
obj2.Print();〃語(yǔ)句2
objl.Set(20);〃語(yǔ)句3
obi2.Set(30);〃語(yǔ)句4
return0;
)
其主函數(shù)中錯(cuò)誤的語(yǔ)句是()o
A.語(yǔ)句1B.語(yǔ)句2C.語(yǔ)句3D.語(yǔ)句4
6已知類A有公用數(shù)據(jù)成員a,并重載了二運(yùn)算符,且有Aobj2;
constA*ptr=newA;,則下列語(yǔ)句錯(cuò)誤的是()。
A.ptr->a=100;B.ptr=&obj2;C.ptr++;D.obj2=*ptr;
16.下列程序的執(zhí)行結(jié)果為()。
#include<iostream.h>
voidmain
(
inta=3,b=0;
int*P=&a;
b=+a++;
cout?*P?,7,?b?endl;
)
A.3,4B.4,3C.3,4D.4,4
17.關(guān)于在調(diào)用模板函數(shù)時(shí)模板實(shí)參的使用,下列表述中正確的是()0
A.對(duì)于虛擬類型參數(shù)所對(duì)應(yīng)的模板實(shí)參,如果能從模板函數(shù)的實(shí)參中獲
得相同的信息,則君可以省略
B.對(duì)于虛擬類型參數(shù)所對(duì)應(yīng)的模板實(shí)參,如果它們是參數(shù)表中的最后的
若干個(gè)參數(shù),則都可以省略
C.對(duì)于虛擬類型參數(shù)所對(duì)應(yīng)的模板實(shí)參,若能夠省略則必須省略
D.對(duì)于常規(guī)參數(shù)所對(duì)應(yīng)的模板實(shí)參,任何情況下都不能省略
18.對(duì)于類定義
classA{
public:
voidfunc2{}
};
classB:publicA{public:
w)idfuncl|cout?HclassBfuncl”vvendl:}
virtualvoillfimc2{cout?"classBfunc2"?endl:}
};
下面正確的敘述是0。
A.A::rune2和B::fund都是虛函數(shù)
B.A::func2和B::funel都不是虛函數(shù)
C.B::fund是虛函數(shù),而A::func2不是虛函數(shù)
D.B::fund不是虛函數(shù),而A::func2是虛函數(shù)
19.下面程序的運(yùn)行結(jié)果是()。
#include<iostream.h>
voidmain()
(
inti=l:
while(i<=8)
if(++i%3!=2)continue;
elsecout?i;
}
A.25B.36C.258D.369
20.下列有關(guān)繼承和派生的敘述中,正確的是
A.派生類不能訪問(wèn)基類的保護(hù)成員
B.作為虛基類的類不能被實(shí)例化
C.派生類應(yīng)當(dāng)向基類的構(gòu)造函數(shù)傳遞參數(shù)
D.虛函數(shù)必須在派生類中重新實(shí)現(xiàn)
21.己知有數(shù)組定義
chara[3][4];
下列表達(dá)式中錯(cuò)誤的是
A.a⑵=“WIN”
B.strcpy(a[2],"WIN")
C.a[2][3]=W
D,a[0][1]=a[0][1]
22.有如下程序:
#include<iostream>
usingnamespacestd;
classVAC{public;
intf()const(return3;}
intf(){return5;}
):
Intmain(){
VACvl;constVACv2;
cout<<vl.f()<<v2.f();
return0:
}
運(yùn)行時(shí)的輸出結(jié)果是Oo
A.53B.35C.55D.33
23.下列有關(guān)繼承和派生的敘述中,正確的是()。
A.如果一個(gè)派生類公有繼承其基類,則該派生類對(duì)象可以訪問(wèn)基類的保
護(hù)成員
B.派生類的成員函數(shù)可以訪問(wèn)基類的所有成員
C.基類對(duì)象可以賦值給派生類對(duì)象
D.如果派生類沒(méi)有實(shí)現(xiàn)基類的一個(gè)純虛函數(shù),則該派生類是一個(gè)抽象類
三、2.填空題(12題)
24.軟件開(kāi)發(fā)過(guò)程主要分為需求分析、設(shè)計(jì)、編碼與測(cè)試4個(gè)階段,其
中階段產(chǎn)生“軟件需求規(guī)格說(shuō)明書
25.軟件生命周期包括8個(gè)階段。為了使各時(shí)期的任務(wù)更明確,又可分
為3個(gè)時(shí)期:軟件定義期、軟件開(kāi)發(fā)期、軟件維護(hù)期。編碼和測(cè)試屬于
[]期。
26.有一種只在循環(huán)語(yǔ)句或switch語(yǔ)句中使用的流程控制語(yǔ)句,表示該
語(yǔ)句的關(guān)鍵字是______0
27.有以下程序:
#include<iostream>
usingnamespacestd;
classCFactorial
(
private:
intvalue;
intfact;
public:
CFactorial(intval);
voidCalculateFactorial();
voidDisplayO;
CFactorial::CFactorial(intval)
(
value=val;
fact=1;
)
voidCFactorial::CalculateFactorial()
(
inti=value;
while(i>1)
fact*=i—;
)
voidCFactorial::DisplayO
(
cout<<value<<”!="<<fact<<endl;
)
intmain()
(
CFactorialA(5);
A.CalculateFactorial();
A.DisplayO;
return0;
)
程序中,類CPactorial的功能是【】,該程序運(yùn)行的結(jié)果是[】。
28.閱讀以下程序:
#include<iostream.h>
voidmain()
(
staticintalJ[3]={9,7,5,3,1,2,4,6,8};
inti,j,sl=Ots2=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
(
if(i==j)sl=sl+a[i][j];
if(i+j==2)s2=s2+a[i][j];
)
cout<<s1<<'*,"<<s2<<endl;
I
則該程序的輸出結(jié)果為【】。
29.下面程序的輸出結(jié)果是【】。
#defineMIN(a,b)(((a)<(b))?a:b)
#include<iostream.h>
voidmain()
(
intx=3,y=5;
cout<<MIN(x,y)<<end1;
}
30.有以下程序:
#include<iostream>
#include<string>
usingnameSpacestd;
classperson
(
intage;
Char*name;
public:
person(inti,Char*str)
(
intj;
j=strlen(str)+1;
name=newchar[j];
strcpy(name,str);
age=i;
)
?person()
(
deletename;
cout<<;
)
voiddisplayO
(
cout<<name<<'*:"<<age;
)
);
intmain()
(
persondemo(30,"Smith");
demo.displayO;
return0;
則該程序的輸出結(jié)果為:【】。
31.請(qǐng)將下列類定義補(bǔ)充完整。
classBase(public:voidfun(){cout<<HBase::fun"<<endl;}};
classDerived:publicBase
(
public:
voidfun()
(
______〃顯式調(diào)用基類的fun函數(shù)
cout<<"Derived::funH<<endl;
1
);
32.請(qǐng)?jiān)谙铝谐绦蛑械臋M線處填寫正確的語(yǔ)句。
#include<iostream>
usingnamespacestd;
classBase{
public:
voidfun(){cout<<"Basefun"<<endl;}
);
classDerivde:publicBase{
public:
voidfun(){
______〃調(diào)用基類的函數(shù)fun()
cout<<"Derivedfun'*<<endl;
}
);
33.下列程序的輸出結(jié)果是
#include<iostream>
usingnamespacestd:
template<typenameT>
Tfun(Ta,Tb){return(a<=b)?a:b;}
intmain()
(
cout<<fun(3,6)<<4,'<<fun(3.14F,6.28F)<<endl;
return0;
}
34.如果表達(dá)式-x中的是重載的類運(yùn)算符,采用運(yùn)算符函數(shù)調(diào)用格
式,及表達(dá)式還可以表示為0
35.在C++語(yǔ)言的結(jié)構(gòu)化程序設(shè)計(jì)中,【】是程序的基本組成單元;在
C++語(yǔ)言的面向?qū)ο笤O(shè)計(jì)框架中,【】是程序的基本組成單元。
四、程序改錯(cuò)題(10題)
36.使用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)=l
注意:不要改動(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()
chartsl=nabc":
/1
assert(sizeof(s1)==3):
cout?Hsizeof(s1)=5u?endl;
chars2llOJ=Mabn:
/小小小小年年?小prrcr不不不不不不予不
assert(sizeof(s2)==2);
cout?,,sizeof(s2)=10,'?endl;
chars3=23:
//
|/******汴*errr)r不不不不不不予不
assert(sizeof(s3)==4);
cout?Msizeof(s3)=1u?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;
TC:TC
cout?',Constructor',?n,
i=0;
)
//
//小小小小小小prrcr不不不不不不
TC:display
tout?,,i=,,?i?n,M?endl;
/汴汴汴不不不prmr不不不不不不
TC:TC
COUI?"Destructof'?endl:
}
voidmain
TCa;
a.display;
38.使用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;
);
!?*??*?
//****^**不**
TC:TC
(
cout?',Constructorn?n,";
i=0;
)
//?1?^1*?S??1??1??1**&**&*
/不不不不不不prr()r不不不不干不
TC:display
tout?Hi=',?i?n,M?endl;
!!******e[Tor******
TC:TC
(
COUI?',Destructor,'?endl:
)
voidmain
(
TCa;
a.display;
39.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行有問(wèn)題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果為;
number=l
number=10
number=100
注意:不要改動(dòng)main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。
試題程序:
#include<iostream.h>
classTC
(
public:
TC(inti)
(
number=i;
)
voidSetNumber(intmi
(
number=m;
}
intGetNumberconst
(
returnnumber;
)
voidPrintconst
(
cout?Hnumber="?number?endl;
)
private:
intnumber;
);
voidmain
/
/f不*T*不*T**?*小*T*小m*/**^1**^不不小小不不不
TCobjl;
objl.Print;
TCobj2⑶;
/-X*
//********errcr不不不不不卻亭予
objl.number=10;
II********error*%o******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
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>
/1
usingstd;
voidWriteFile(char*s)
ofstreamout1;
f*1**1**!**1**4**£?*£**£**4?
//小小小小辦小小小prrcr不不不不不不不不
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=0;i++)
(
l*1**1**1**1**1**1**1**1**4*?£**4*
//小小小小小小小小prrcr不不不不不不不不
outl.puts(s[i]);
)
outl.close;
}
voidClearFile
(
ofstreamout1;
outl.open("l.txt");
outl.close;
}
intmain
(
chars[1024];
ClearFile;
cout?"pleaseinputastrin9:u?endl;
cin.getline(s,1024);
WriteFile(s);
returnO;
41.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,但該程
序運(yùn)行有問(wèn)題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使該程序的輸出結(jié)果正
確。
程序輸出:
8
8
注意:錯(cuò)誤的語(yǔ)句在/********error********/的下面。修改該語(yǔ)句
即可,其他的語(yǔ)句不能修改。
試題程序:
#include(iostream.h>
classCO
(
public:
/?*1??>!??>1??*!??>1??>!??*!?/
不不不不不不不不error不不不不不不不不/
staticintn=O:
CO
(
n++:
)
?CO
):
?^/
/********e]Tcr不不不不不不不不/
intCO:;n;
voidmain
COobj;
COobj2[7J;
CO*C=NULL:
c=&obj:
不不不不不不不不error不不不不不不不不/
eout?C.n?endl;
cout?C0::n?endl;
}
42.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp。本程序
要求輸入一個(gè)字符串,然后將其中的小寫字母改成大寫字母,字符可
能輸入多行,當(dāng)輸入字符"?''時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出
到屏幕中。
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語(yǔ)句在//******en*or******的下面。
試題程序:
#include<iostream.h>
voidmain
(
inti=O;
charstr[120J;
cout?HEntcrastringcndwith?."?cndl;
/*1**2**1*?<>*1**1**2**2**2*
//不不不不不不不不prr()r不不不不不不不不
cin.getline(str,120);
1*1**1**1*?*?????*?
//****舉舉**pji*cr*不******
while(str)
/?,?*t??[??,??,??£??1?*X**X**X**£??£??£?
//小小小小小小小小error不<**><?<**><**>
if(str|jD二a)
str[i]=str[iJ-a+A;
i++;
}
cout?str?endl;
return;
43.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,該程序運(yùn)
行有問(wèn)題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果為:
number=l
number=10
number=100
注意:不要改動(dòng)main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語(yǔ)句在//******err()r******的下面0
試題程序:
#include<iostream.h>
classTC
public:
TC(inti)
number=i;
voidSetNumber(intmi
(
number=m;
}
intGetNumberconst
(
returnnumber;
)
voidPrintconst
(
cout?"number=H?number?endl;
)
private:
intnumber;
voidmain
TCobjl;
objl.Print;
TCobj2(3);
//
//年不不不不小不小prrcr不不不不予不予不
objl.number=10;
II********error*%o******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
44.使用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
Ii
/********errcr不不不不不不不不/
TC(inti)
m_i=i;
)
voidprint
cout?—m_i?,
)
public:
intm_i;
intmain
l^1*^1*__?!?/
/不不不不不不不不error不不不不予不不苓/
inti;
TC04(10);
while(i>5)
!***************!
i++
04.print;
)
cout?endl;
returnO;
45.使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使程序正常運(yùn)行,并且要求最后一個(gè)
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
O
ERROR
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語(yǔ)句在//******enw******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
throw(nerror");
/小小小小小小小小prrcr不不不不不不不不
catch(chars)
(
cout?s?endl;
try
(
throw((int)0);
)
/*1**1*■!**1?
//********errcr不不不不不不不不
catch
(
cout?i?endl;
)
try
(
throw(O);
throwC^rror");
/*t?*t?*t?*t?*t?*1*-L■>■的■的一^
//年小不小不小小小prrcr不不早亭不壽壽壽
catch
(
cout?MERROR"?endl;
}
returnO;
五、綜合應(yīng)用題(2題)
46.(1)應(yīng)添加“virtualvoidGetNamt!=0;"。
(2)應(yīng)添力CTconstchar*GetName2”。
⑶應(yīng)添加“TC2(char*str)”°
⑷應(yīng)添加“m_str[i]=O;
【解析】本題第1處要求“在類TC1中定義接口函數(shù)GetName,為純虛
函數(shù)在C++中?在基類中用virtual聲明成員函數(shù)為虛函數(shù)。純虛
函數(shù)是在聲明虛函數(shù)時(shí)被"初始化’’為0的函數(shù),即
4t,5
virtualvoidGctName=0;O第2處要求“函數(shù)GetName2實(shí)現(xiàn)獲得名字
的緩存,但只獲得讀允許操作這個(gè)緩存工只能弓I用數(shù)據(jù)成員,而不能修
改,所以使用常成員函數(shù),其一般形式為“const函數(shù)類型函數(shù)名'即
44,,
constchar*GetName2o第3處要求“實(shí)現(xiàn)TC2的構(gòu)造函數(shù)二TC2的構(gòu)
造函數(shù)與類TC2的名稱應(yīng)該相同,而且第3處的大括弧中是對(duì)字符數(shù)
組str的操作,所以類TC2的構(gòu)造函數(shù)中的參數(shù)為str,即這里補(bǔ)全為
“TC2(char*str)>第4處要求“完成TC2的構(gòu)造函數(shù),實(shí)現(xiàn)對(duì)名字的處
理“,補(bǔ)全類TC2的構(gòu)造函數(shù),構(gòu)造函數(shù)中的名字變量str對(duì)應(yīng)于類TC
中的成員變量所以這里補(bǔ)全變量賦值操作“m_str[i]=0;?。
47.使用VC++6.0打開(kāi)考生文件夾下的源程序文件3.cppo類
People包括姓名和年齡兩個(gè)字段。函數(shù)fun獲得年齡比較大的人的姓
名,然后輸出這個(gè)姓名到屏幕。
其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完
整。
⑴完成類的構(gòu)造函數(shù)功能,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。
⑵完成構(gòu)造函數(shù)對(duì)姓名的賦值,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。
⑶定義類的友元函數(shù)fun,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。
(4)補(bǔ)充函數(shù)fun的年齡比較功能,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。
注意:增加或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái),請(qǐng)不要修改其
他的程序代碼。
試題程序:
#include<iostream.h>
classPeople
(
public:
/fat*
/fI?Y??Yw?T??T?
(
inti;
for(i=0:sUserName[i]!=O:i++)
{m_UserName[i]=sUserName[i];
f*1**1**1**1**1*?1**1**1**1*
/f*T**7*f*T**T**T**T*
m_Old=nOld;
)
private:
charm_UserNamef32];
intm_01d;
/7,*2**2^*2**2*
/f?卜?卜?卜?[??[??[??[??卜4?卜,卜,;、q、;、(、,j、
};
voidfun(char*s,People&personl,People&person2
/I********4********
if
for(inti=0;person!.m_UserName[i]!=0;i+
+)
s[i]=personl.m_UserName[i];
s[i+l]=0;
)
else
for(inti=0;person?.m_UserName[i]!=0;i+
+)
{s[il=person2.m_UserName[i];
s[i+l]=0;
)
)
)
voidmain
(
chars[32];
PeopleplC'abc1',20);
Peoplep2(ndef,,30):
fun(S,pl,p2);
cout?s?endl:
return;
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開(kāi)考生文件夾下的工程testl6_3,此工程
⑴定義類Cat的保護(hù)數(shù)據(jù)成員itsAge用于表示年齡,它是int型的數(shù)
據(jù)。請(qǐng)?jiān)谧⑨尅啊?*1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
⑵定義類Cat的保護(hù)數(shù)據(jù)成員GetAgeO的類外定義,返回成員的itsAge
值,請(qǐng)?jiān)谧⑨尅啊?*2***之后添加適當(dāng)?shù)恼Z(yǔ)句。
⑶完成成員函數(shù)SetAge(intage)的類外定義,把數(shù)據(jù)成員itsAge賦值為
參數(shù)age的值,請(qǐng)?jiān)谧⑨尅啊?*3***之后添加適當(dāng)?shù)恼Z(yǔ)句。
(4)完成成員函數(shù)Meow的類外定義,使其輸出字節(jié)符串“meow.”到屏幕
上。請(qǐng)?jiān)谧⑨尅?*4**”后添加適當(dāng)?shù)恼Z(yǔ)句。
輸出結(jié)果如下:
meow.
kittyisacatwhois5yearsold.
meow.
注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
源程序文件test113.cpp清單如下:
#include<iostream.h>
classCat
public:
intGetAge();
voidSetAge(intage);
voidMeow();
protected:
〃**]**
};
intCat::GetAge()
(
)
voidCat::SetAge(intage)
(
)
voidCat::Meow()
(
)
voidmain()
(
Catkitty;
kitty.Meow();
kitty.SetAge(5);
cout<<"kittyisacatwhois
cout<<kitty.GetAge();
cout<<*'yearsold.Vn";
kitty.Meow();
49.使用VC6打開(kāi)考生文件夾下的工程test4_3o此工程包含一個(gè)源程
序文件test4_3.cpp,其對(duì)一個(gè)學(xué)校的教師和考生情況進(jìn)行了描述。由于
教師和考生之間有相同的信息,如姓名、年齡等,所以可抽象出一個(gè)基
類person,考生類student和教師類teacher作為person類的派生類。請(qǐng)
按要求完成下列操作,將程序中的類定義補(bǔ)充完整。
⑴定義基類person的私有數(shù)據(jù)成員name和age,分別用于表示姓名和
年齡,name為字符指針,age為血型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅啊?*1**?之后添
加適當(dāng)?shù)恼Z(yǔ)句。
(2)完成基類person的重載構(gòu)造函數(shù)person(char*minta)的定義,把數(shù)據(jù)
成員name,age分別初始化為參數(shù)n,a的值,請(qǐng)?jiān)谧⑨尅?/**2**”之后
添加適當(dāng)?shù)恼Z(yǔ)句。
⑶根據(jù)主函數(shù)main中對(duì)si的聲明,定義派生類student的構(gòu)造函數(shù)。
在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(4)完成派生類teacher成員函數(shù)voidsetinf(ehar*n,inta,char*d,char*1)
的定義,其功能為記錄教師的姓名、年齡、院,系與職稱信息。請(qǐng)?jiān)谧?/p>
釋“〃**4***之后添加適當(dāng)?shù)恼Z(yǔ)句。
輸出結(jié)果如下:
劉雷(45)destruclor
蔣軍(23)destructor
注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
源程序文件test4_3.cpp清單如下:
#include<iostream.h>
classperson
(
〃**]**
public:
person(){}
person(char*n,inta)
(
〃**2**
voidsetname(char*n){name=n;)
voidsetage(inta){age=a;}
?person。{cout<<name<<"(u<<age<<")destructor'^<<endl;)
);
classstudent:publicperson
(
char*department;
intcode;
public:
(
department^;
code=c;
}
};
classteacher:publicperson
(
char*department;
char*level;
public:
teacher(){}
voidsetinf(char*n,inta,char*d,char*1)
(
department=d;
level=l;
)
);
voidmain()
(
students1("蔣軍二23,”計(jì)算機(jī)學(xué)院二2);
teachertl;
tl.setinf(“劉雷",45,”計(jì)算機(jī)學(xué)院”,”教授)
參考答案
1.D解析:顯然,在數(shù)據(jù)庫(kù)系統(tǒng)階段,數(shù)據(jù)獨(dú)立性最高。
2.C解析:例如“="運(yùn)算符就不能被重載,通過(guò)重載可以創(chuàng)造新的運(yùn)
算方式,但是不能臆造新的運(yùn)算符;定義的時(shí)候必須使用關(guān)鍵宇operator,
而調(diào)用時(shí)可直接使用運(yùn)算符;
3.D解析:軟件生命周期分為軟件定義、軟件開(kāi)發(fā)及軟件運(yùn)行維護(hù)3個(gè)
階段。本題中,詳細(xì)設(shè)計(jì)、軟件編碼和軟件測(cè)試都屬于軟什開(kāi)發(fā)階段;
維護(hù)是軟件生命周期的最后一個(gè)階段,也是持續(xù)時(shí)間最長(zhǎng),花費(fèi)代價(jià)
最大的一個(gè)階段.軟件工程學(xué)的一個(gè)目的就是提高軟件的可維護(hù)性,降
低維護(hù)的代價(jià)。
4.C解析:首先進(jìn)行括號(hào)內(nèi)的運(yùn)算,注意賦值表達(dá)式是從右向左進(jìn)行的。
i=l*k,k=k+i,m=k,所以計(jì)算得m=6,i=4o
5.A解析:使用面向?qū)ο蠓椒ㄩ_(kāi)發(fā)的應(yīng)用系統(tǒng),強(qiáng)調(diào)封裝和復(fù)用。封裝
隱藏信息,使得被封裝的模塊與外界的耦合度更低,更容易重用。軟件
復(fù)用是將已有的軟件成分用于構(gòu)造新的軟件系統(tǒng)??梢员粡?fù)用的軟件成
分一般稱作可復(fù)用構(gòu)件,無(wú)論對(duì)可復(fù)用構(gòu)件原封不動(dòng)地使用還是作適當(dāng)
的修改后再使用,只要是用來(lái)構(gòu)造新軟件,則都可稱作復(fù)用。面向?qū)ο?/p>
方法之所以特別有利于軟件復(fù)用,是由于它的主要概念及原則與軟件復(fù)
用的要求十分吻合。面向?qū)ο蠓椒◤拿嫦驅(qū)ο蟮木幊贪l(fā)展到面向?qū)ο蟮?/p>
分析與設(shè)計(jì),使這種方法支持軟件復(fù)用的固有特征能夠從軟件生命周期
的前期階段開(kāi)始發(fā)揮作用,從而使OO方法對(duì)軟件復(fù)用的支持達(dá)到了較
高的級(jí)別。與其他軟件工程方法相比,面向?qū)ο蠓椒ǖ囊粋€(gè)重要優(yōu)點(diǎn)是,
它可以在整個(gè)軟件生命周期達(dá)到概念、原則、術(shù)語(yǔ)及表示法的高度一致。
這種一致性使得各個(gè)系統(tǒng)成分盡管在不同的開(kāi)發(fā)與演化階段有不同的
形態(tài),但可具有貫穿整個(gè)軟件生命周期的良好映射。這一優(yōu)點(diǎn)使OO方
法不但能在各個(gè)級(jí)別支持軟件復(fù)用,而且能對(duì)各個(gè)級(jí)別的復(fù)用形成統(tǒng)一
的、高效的支持,達(dá)到良好的全局效果。綜上所述,選項(xiàng)A為本題正確
答案。
6.A解析:面向?qū)ο笳Z(yǔ)言包含3個(gè)要素,即對(duì)象、類和繼承。這3個(gè)要
素反映了面向?qū)ο蟮膫鹘y(tǒng)觀念。面向?qū)ο蟪绦蛟O(shè)計(jì)的本質(zhì)是把數(shù)據(jù)和對(duì)
數(shù)據(jù)的操作當(dāng)成一個(gè)整體即對(duì)象。
7.C解析:“++”是石結(jié)合的,所以先賦值為3,最后輸出3+1;常成員
函數(shù)只有常對(duì)象才能調(diào)用,所以輸出2。
8.D解析:setprecision()函數(shù)為設(shè)置小數(shù)位數(shù)。注意:C++中I/O流各種
函數(shù)的使用例如:setw(),setfill()o
9.C
10.B解析:C++是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言它充分支持面向?qū)?/p>
象思想中的3個(gè)主要特征:封裝性、繼承性、多態(tài)性。B選項(xiàng)所描述是
結(jié)構(gòu)化程序設(shè)計(jì)的思想。
11.D
本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),在定義一個(gè)派生類的對(duì)象
時(shí),先調(diào)用基類的構(gòu)造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù),對(duì)象釋
放時(shí),先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù)。本題中定
義一個(gè)派生類對(duì)象時(shí),分別調(diào)用基類的構(gòu)造函數(shù),所以分別輸出21。
12.C解析:運(yùn)算符函數(shù)可以重載為成員函數(shù)也可以重載為非成員函數(shù),
如重載為友元函數(shù)。
13.D
14.C
解析:此題考查的是常對(duì)象。使用const關(guān)鍵字修飾的對(duì)象稱為常對(duì)
象,它不能被更新。主函數(shù)中聲明的objl是常對(duì)象,因此。bjl不能被
更新,即語(yǔ)句3更新。均1的語(yǔ)句錯(cuò)誤。
15.A
Ao【解析】本題考查const修飾符的作用。注意,const位置不同,其
修飾的部分也是不同的。本題中const修飾的是ptr所指的對(duì)象本身,
所以,ptr可以重新指向新的對(duì)象,而ptr->a則無(wú)法被更新。
16.B
*P為所指對(duì)象a的值,語(yǔ)句“b=+a++;”等價(jià)于"b=b+a;a=a+l;
17.D
在調(diào)用一個(gè)模板函數(shù)時(shí),編譯系統(tǒng)需要足夠的信息來(lái)判別每個(gè)虛擬類
型參數(shù)所對(duì)應(yīng)的實(shí)際類型,可以從兩個(gè)不同的渠道獲得這樣的信息:
從模板實(shí)參表(用“V〉”括起來(lái)的參數(shù)表)或從模板函數(shù)實(shí)參表(用括起
來(lái)的參數(shù)表)。如果從后者獲得的信息已經(jīng)能夠判定其中部分或全部虛
擬類型參數(shù)所對(duì)應(yīng)的實(shí)際參數(shù),而且它們又正好是參數(shù)表中最后的若
干參數(shù),則模板實(shí)參表中的那幾個(gè)參數(shù)可以省略。如果模板實(shí)參表中
的實(shí)參都被省略了,則空表也可以不要,因此選項(xiàng)D錯(cuò)誤。反
之,對(duì)于某個(gè)模板實(shí)參,如果從模板函數(shù)的實(shí)參表中無(wú)法獲得同樣的
信息,就不能省略;或者雖然能夠獲得同樣的信息,但在它后面還有
其他不能省略的實(shí)參,則其自身還是不能省略。
18.C
基類中說(shuō)明的虛函數(shù),在派生類中自然就是虛函數(shù),所以類B中fund
是虛函數(shù);而類A中的func2沒(méi)有被關(guān)鍵字virtual修飾,所以不是虛
函數(shù)。
19.C
Co【解析】應(yīng)該先做++運(yùn)算,然后進(jìn)行%運(yùn)算,最后比較不等式,
實(shí)際上最后輸出的結(jié)果就是被3除,余數(shù)為2的不大于8的數(shù)。
20.C
解析:本題考查的知識(shí)點(diǎn)是:繼承和派生。無(wú)論使用哪種繼承方式,
派生類中的成員都不能訪問(wèn)基類中的私有成員,而可以訪問(wèn)基類中的
公有成員和保護(hù)成員,因此選項(xiàng)A)不正確。在C++中,只有抽象類
不能被實(shí)例化,而虛基類不一定非得是抽象類,所以選項(xiàng)B)不正確。
在派生類中可以重新定義從基類繼承下來(lái)的虛函數(shù),也可以不重新定
義,因此選項(xiàng)D)不正確。故本題應(yīng)該選擇C。
21.A
22.A
Ao本題考查常成員函數(shù)的應(yīng)用。VAC類中說(shuō)明了兩個(gè)函數(shù),一個(gè)是
常成員函數(shù),一個(gè)是普通函數(shù);在主函數(shù)中說(shuō)明了兩個(gè)對(duì)象,通過(guò)普
通對(duì)象vl調(diào)用的是普通函數(shù),輸出5;通過(guò)常對(duì)象V2調(diào)用的是常成員
函數(shù),輸出3。
23.D
私有繼承方式為基類的公用成員和保護(hù)成員在派生類中成了私有成
員,其私有成員仍為基類私有,但派生類對(duì)象可以訪問(wèn)基類的保護(hù)成
員,所以基類對(duì)象不能賦值給派生類對(duì)象。抽象類是指含有純虛擬函
數(shù)的類,所以選項(xiàng)D正確。
24.需求分析需求分析解析:需求分析階段的工作主要包括需求獲取、
需求分析、編寫需求規(guī)格說(shuō)明書和需求評(píng)審4個(gè)方面,產(chǎn)生的主要文檔
為軟件需求規(guī)格說(shuō)明書,它可以為用戶、分析人員和設(shè)計(jì)人員之間的交
流提供方便,直接支持目標(biāo)軟件系統(tǒng)的確認(rèn),也可作為控制軟件開(kāi)發(fā)進(jìn)
程的依據(jù)。
25.軟件開(kāi)發(fā)軟件開(kāi)發(fā)
26.break
27.求自然數(shù)的階乘120求自然數(shù)的階乘\r\nl20解析:類CFactorial中
的成員函數(shù)CalculateFactorial。實(shí)現(xiàn)的功能是:求自然數(shù)value的階乘結(jié)
果。
28.1810
29.3
3O.Smith:30DSmith:30D解析:本題考核類與對(duì)象的操作。主函數(shù)中
定義類person的對(duì)象demo,并賦初值(30,'smith)。然后調(diào)用成員函數(shù)
display。輸出賦值結(jié)果,即Smitch:30o程序結(jié)束時(shí)dem。對(duì)象的析構(gòu)函
數(shù)被調(diào)用,再輸出“D”。
31.Base::fun();Base::fun();解析:此題考查的是成員函數(shù)的調(diào)用。因?yàn)闄M
線處的作用是調(diào)用基類的fun函數(shù),又因?yàn)榕缮愔幸灿衒un()函數(shù).所
以必須對(duì)fun()函數(shù)加以限定,即Base::fun();。
32.Base::fun()Base::fun()解析此題考查的是派生類對(duì)基類成員的訪問(wèn)。
本題中派生類Derived覆蓋了基類Base中的fun(),如果需要調(diào)用基類
中的fun(),則需要使用域運(yùn)算符故應(yīng)滇寫B(tài)ase::fun()。
33.33.14。3,3.140解析:C++編譯系統(tǒng)將根據(jù)實(shí)參表中的實(shí)參的類型
來(lái)確定函數(shù)的形參歹J表中的類型。函數(shù)fun(3,6)返回的值為3,函數(shù)調(diào)
用fun(3.14F,6.28F)返回的值為3.14。
34.x.operator-()
35.函數(shù)類函數(shù)\r\n類解析:函數(shù)是程序功能實(shí)現(xiàn)的主要方式,是實(shí)現(xiàn)
結(jié)構(gòu)化設(shè)計(jì)(將程序分成若干個(gè)函數(shù)實(shí)現(xiàn))的基本組成;類是一種用戶定
義的類型,是實(shí)現(xiàn)數(shù)據(jù)封裝和數(shù)據(jù)抽象的工具,是面向?qū)ο笤O(shè)計(jì)中的基
本組成。
36.(1)應(yīng)改為"assert(sizeof(sl尸=4);
\n(2)應(yīng)改為"assert(sizeof(s2)=lO);”。
\n(3)應(yīng)改為"asseit(sizeoRs3)=l);
\n【解析】assert函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。所以要讓它正
常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會(huì)產(chǎn)生中斷異常。
uassert(sizeof(s1)=3);”語(yǔ)句中“sizeof(sl)==3”為假,這會(huì)使程序產(chǎn)生異
常,不能正常執(zhí)行。因?yàn)閟trl的值為abc,但是它還有一個(gè)尾符,它的
長(zhǎng)度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(sl)==4)了。
str2[10]說(shuō)明,str2的空間為10,在第2處修改為“assert(sizeoRs2)—10)廠。
charstr3=23;語(yǔ)句說(shuō)明23是字符,所占存儲(chǔ)空間為I,所以修改為
uassert(sizeof(s3)=1);
37.(1)應(yīng)改為"TC::TC"。
\n(2)應(yīng)改為"oidTC::display”。
\n(3)應(yīng)改為“TC::?TC”。
\n【解析】在類的外部定義成員函數(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)改為“TC::TC”。
(2)應(yīng)改為"voidTC::display”。
⑶應(yīng)改為“TC::?TC”。
【解析】在類的外部定義成員函數(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”。
39.(1)應(yīng)改為"TCobjl⑴;:
(2)應(yīng)改為"Objl.SetNumber(lO);
(3)應(yīng)改為“0bj2.SelNumber(lOO);
【解析】本題第1處的“TCobjl;”語(yǔ)句是聲明TC類的對(duì)象Objl,根據(jù)
TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個(gè)
輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(l):第2處處
的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C+
+中成員函數(shù)的使用形式應(yīng)該是:對(duì)象名.成員函數(shù),所以修改為
“objl.SetNumber(lO);類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)
例。第3處“TC.SetNumber(lOO);”語(yǔ)句中的TC為類,并不是對(duì)象,
這里應(yīng)該使用定義的對(duì)象,即。bj2,所以將語(yǔ)句修改為
“obj2.SetNumber(lOO);
40.(1)應(yīng)改為"usingnamespacestd;"。
⑵應(yīng)改為“outl.open(Hl.txt",ios::binaryIios::app);
(3)應(yīng)改為“outl.put(s[i]);,9o
【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,
對(duì)于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處
的語(yǔ)句修改為“usingnamespacestd;第2處,調(diào)用成員函數(shù)open
中,輸入、輸出方式是在ios類中定義的,所以open(nl.txtM,
binaryIapp);”語(yǔ)句缺少類ios,即第2處的語(yǔ)句修改為
“outl.open("l.txt",ios::binaryIios::叩p);第3個(gè)標(biāo)識(shí)應(yīng)
該用流成員函數(shù)put輸出字符,所以第3處的語(yǔ)句修改為
“outl.put(s[i]);
41.(l)"staticintn=O"應(yīng)改為"staticintn;"。
(2)uintCO::n:”應(yīng)改為"intCO::n=0:
(3)44cout?c.nvvendl;”應(yīng)改^44cout?c->n?endl;''。
【解析】本題要在屏幕上輸出兩個(gè)字符,首先要靜態(tài)變量初始化,第1
處應(yīng)改為“staticintn;",第2處要給n賦值,第3處輸出時(shí)引用c的對(duì)
象,應(yīng)改為"cout〈vc->n<<endl;
42.(1)應(yīng)改為"ein.getline(str,120,?);
(2)應(yīng)改為"while(str[i])"°
⑶應(yīng)改為“if(str[i]>=a&&str[i]v=2)”。
【解析】本題中要求以輸入字符為結(jié)束符,用于字符輸入的流成員
函數(shù)gelline函數(shù)讀入一行字符,格式為“cin.gelline(字符數(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(st巾]>=a)?語(yǔ)句是判斷字符st幣]是否為小寫字符,而現(xiàn)有的語(yǔ)句只
是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為
44if(str[i]>=a&&str[i]>=z),,o
43.(1)應(yīng)改為"TCobjl(l);”。
\n(2)應(yīng)改為“Objl.SetNumber(lO);
\n(3)應(yīng)改為“0bj2.SelNumber(lOO);"。
\n【解析】本題第1處的“TCobjl;”語(yǔ)句是聲明TC類的對(duì)象Objl,根據(jù)
TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個(gè)輸
出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的叮Cobjl(l);工第2處處的
“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中
成員函數(shù)的使用形式應(yīng)該是:對(duì)象名.成員函數(shù),所以修改為
4t55
objl.SetNumber(lO);0類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。
第3處與(2.$611%1^「(100);"語(yǔ)句中的“2為類,并不是對(duì)象,這里
應(yīng)該使用定義的對(duì)象,即obj2,所以將語(yǔ)句修改為
uobj2.SetNumber(lOO);"。
44.(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)屬性為私有,只有公有成員才能通過(guò)類
的對(duì)象被訪問(wèn)。故應(yīng)在構(gòu)造函數(shù)前添加“public:“,否則該類無(wú)法被實(shí)例
化。變量的初始化可以通過(guò)“=''號(hào),也可以和初始化對(duì)象一樣添加構(gòu)造
參數(shù),題目已要求使用后者。本題要求輸出5個(gè)數(shù),while的循環(huán)變量i
每次減1,在i>5時(shí)循環(huán),故i初始化應(yīng)為10o若循環(huán)中i每次增1,則
循環(huán)永遠(yuǎn)不會(huì)退出。
45.(1)應(yīng)改為"catch(char*s)”。
(2)應(yīng)改為"cateh(inti)”。
(3)應(yīng)改為"catch(…)”。
【解析】本題中第1個(gè)標(biāo)識(shí)前的異常拋出語(yǔ)句為“throw,error");”,其
中的類型為字符串。所以對(duì)應(yīng)的異常捕捉語(yǔ)句catch中應(yīng)該符合這個(gè)類
型,而程序中給出的語(yǔ)句“catch(chars)”是字符型的,所以第1處的語(yǔ)
句修改為“catch(char*S)?。第2個(gè)標(biāo)識(shí)前的異常拋出語(yǔ)句為
“throw((int)0);”,其中的類型為int。對(duì)應(yīng)的異常捕捉語(yǔ)句c
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度醫(yī)療事故糾紛財(cái)產(chǎn)保全擔(dān)保合同3篇
- 2024年度生態(tài)社區(qū)房屋代理租賃戰(zhàn)略合作協(xié)議3篇
- 2024年度加工承攬合同工作進(jìn)度安排及質(zhì)量標(biāo)準(zhǔn)3篇
- 2024年度西安版權(quán)質(zhì)押合同的質(zhì)押權(quán)利與質(zhì)押期限2篇
- 2024年度商標(biāo)許可使用合同標(biāo)的及商標(biāo)詳情
- 2024年度商業(yè)地產(chǎn)買賣及價(jià)格調(diào)整機(jī)制合同3篇
- 2024年度體育賽事贊助合同服務(wù)內(nèi)容擴(kuò)展3篇
- 2024版二手變壓器購(gòu)銷及電力系統(tǒng)配套合同
- 2024年度附期限及優(yōu)先清算權(quán)的股權(quán)轉(zhuǎn)讓合同3篇
- 2024年度私募股權(quán)投資基金合同3篇
- 殯葬行業(yè)的風(fēng)險(xiǎn)分析
- 下肢靜脈血栓個(gè)案查房
- 通信工程冬季施工安全培訓(xùn)
- 痛風(fēng)病科普講座課件
- 工作崗位風(fēng)險(xiǎn)評(píng)估報(bào)告
- 護(hù)理查房肺部感染心衰
- 拒執(zhí)罪申請(qǐng)書范本
- 《阿米巴經(jīng)營(yíng)》讀書分享
- 鉛酸鋰電池回收項(xiàng)目計(jì)劃書
- 北京市朝陽(yáng)區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末檢測(cè)語(yǔ)文試卷+
- (常州專版)江蘇省常州市2023-2024學(xué)年六年級(jí)數(shù)學(xué)上冊(cè)期末學(xué)情調(diào)研檢測(cè)卷一(蘇教版)
評(píng)論
0/150
提交評(píng)論