版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2022年江蘇省鎮(zhèn)江市全國計(jì)算機(jī)等級(jí)考試
C++語言程序設(shè)計(jì)真題(含答案)
學(xué)校:班級(jí):姓名:考號(hào):
一、1.選擇題(10題)
i.面向?qū)ο蟪绦蛟O(shè)計(jì)思想的主要特征中不包括
A.繼承性B.功能分解,逐步求精C.封裝性和信息隱藏D.多態(tài)性
2.不能作為函數(shù)重載判斷依據(jù)的是()。
A.返回值B.參數(shù)個(gè)數(shù)C.參數(shù)類型D.參數(shù)順序
3.有如下程序段,請(qǐng)指出"p所代表的是()。int**p,*s,k=20;S=
&k;p=&s;
A.sB.&kC.*pD.k
4.在C++語言中,形參的缺省存儲(chǔ)類型是()。
A.autoB.registerC.staticD.extem
5.拷貝構(gòu)造函數(shù)是用一個(gè)已知的對(duì)象為新創(chuàng)建的同類的對(duì)象賦初值,下
列()情況下它沒有起作用。
A.聲明語句中,用一個(gè)對(duì)象初始化另一個(gè)對(duì)象。如pointp2(pl);淇中:
point為一個(gè)類,p2、pl為該類的兩個(gè)對(duì)象,pl是一個(gè)已知的對(duì)象
B.將對(duì)象作為函數(shù)實(shí)參傳遞給形參,用來初始化形參時(shí)
C.當(dāng)函數(shù)返回一個(gè)對(duì)象值,并用這個(gè)對(duì)象初始化一個(gè)匿名對(duì)象時(shí)
D.調(diào)用對(duì)象的一個(gè)成員函數(shù)時(shí)
6.在結(jié)構(gòu)化程序設(shè)計(jì)使用goto語句的原則是()。
A.限制B.鼓勵(lì)C.禁止D.濫用
7.可以用Pa的形式訪問派生類對(duì)象P的基類成員a,其中2是()。
A.私有繼承的公有成員B.公有繼承的私有成員C.公有繼承的保護(hù)成
員D.公有繼承的公有成員
8.下列敘述中,正確的是()。
A.數(shù)據(jù)庫的庫結(jié)構(gòu)包括數(shù)據(jù)庫中各個(gè)記錄的數(shù)據(jù)
B.數(shù)據(jù)庫中的數(shù)據(jù)不僅僅是數(shù)值型數(shù)據(jù)
C.數(shù)據(jù)庫管理系統(tǒng)的主要功能是建立數(shù)據(jù)
D.數(shù)據(jù)庫文件的結(jié)構(gòu)不能由系統(tǒng)自動(dòng)生成
9.下面關(guān)于成員函數(shù)重載運(yùn)算符和友元函數(shù)重載運(yùn)算符相同的是()。
A.成員函數(shù)和友元函數(shù)可重載的運(yùn)算符是不相同的
B.成員函數(shù)和友元函數(shù)重載運(yùn)算符時(shí)都需要用到this指針
C.成員函數(shù)和友元函數(shù)重載運(yùn)算符時(shí)都需要聲明為公有的
D.成員函數(shù)和友元函數(shù)重載運(yùn)算符時(shí)的參數(shù)可能是相同的
10.帶有基類的多層派生類構(gòu)造函數(shù)的成員初始化列表中都要排出虛基
類的構(gòu)造函數(shù),這樣將對(duì)虛基類的子對(duì)象初始()。
A.與虛基類下面的派生類個(gè)數(shù)有關(guān)B.多次C.二次D.一次
二、單選題(13題)
11.下列關(guān)于抽象類的敘述不正確的是()。
A.含有純虛函數(shù)的類稱作抽象類B.抽象類只能是基類C.抽象類不能
被實(shí)例化D.純虛函數(shù)可以被繼承
12.若x和y是程序中的兩個(gè)整型變量,則下列if語句中正確的是()o
A.if(x==O)y=l;elsey=2;
B.if(x==O)theny=1elsey=2
C.if(x==O)y=1elsey=2;
D.ifx==0y=lelsey=2;
13.下列程序的運(yùn)行結(jié)果為()。
#include<iostream.h>
template<classTT>
classFF
{TTal,a2,a3;
public:
FF(TTbl,TTb2,TTb3){al=bl;a2=b2;a3=b3;}
TTSum(){retuma1+a2+a3;}};
voidmain()
{FF<int>x(int(l.1),2,3),y(int(4.2),5,6);
cout?x.Sum()??y.Sum()?endl;}
A.6.115.2B.615C.615.2D.6.115
14.下列關(guān)于析構(gòu)函數(shù)的描述中,錯(cuò)誤的是()。
A.類中有且僅有一個(gè)析構(gòu)函數(shù)B.析構(gòu)函數(shù)可以有形參C.析構(gòu)函數(shù)沒
有函數(shù)類型D.析構(gòu)函數(shù)對(duì)象消失時(shí)被自動(dòng)執(zhí)行
15.通過派生類的對(duì)象可直接訪問其o
A.公有繼承基類的公有成員B.公有繼承基類的私有成員C.私有繼承
基類的公有成員D.私有繼承基類的私有成員
16.設(shè)有表示學(xué)生選課的三張表,學(xué)生S(學(xué)號(hào),姓名,性別,年齡,身份
證號(hào)),課程C(課號(hào),課名),選課SC(學(xué)號(hào),課號(hào),成績.,則表SC的
關(guān)鍵字(鍵或碼)為()
A.課號(hào),成績B.學(xué)號(hào),成績C學(xué)號(hào),課號(hào)D.學(xué)號(hào),姓名,成績
17.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于
A.硬件資源B.通信資源C.支持軟件D.輔助資源
18.性表的下列運(yùn)算中,不改變數(shù)據(jù)元素之間結(jié)構(gòu)關(guān)系的運(yùn)算是()。
A.插入B.排序C.刪除D.定位
19.運(yùn)算符重載是對(duì)已有的運(yùn)算符賦予多重的含義,所以()o
A.能夠?qū)绢愋蛿?shù)據(jù)(如double),重新定義“+”運(yùn)算符的含義
B.只能重載C++中己經(jīng)有的運(yùn)算符,不能重新定義新運(yùn)算符
C.能夠改變一個(gè)已有運(yùn)算符的優(yōu)先級(jí)和操作數(shù)個(gè)數(shù)
D.C++中現(xiàn)有的所有運(yùn)算符都可以重載
20.有如下語句序列:
charstr[10];cin?str;
當(dāng)從鍵盤輸入“1lovethisgame”時(shí),str中的字符串是
A.nIlovethisgame^^B/llovethi"C.'Tlove"D.T'
21.在32位的計(jì)算機(jī)中,一個(gè)char型數(shù)據(jù)所占的內(nèi)存長度的字節(jié)是()
A.4B.1C.2D.8
22.下列敘述中正確的是()。
A.在模塊化程序設(shè)計(jì)中,一個(gè)模塊應(yīng)盡量多的包括與其他模塊聯(lián)系的信
息
B.在自頂向下、逐步細(xì)化的設(shè)計(jì)過程中,首先應(yīng)設(shè)計(jì)解決問題的每一個(gè)
細(xì)節(jié)
C.在模塊化程序設(shè)計(jì)中,一個(gè)模塊內(nèi)部的控制結(jié)構(gòu)也要符合結(jié)構(gòu)化原則
D.在程序設(shè)計(jì)過程中,不能同時(shí)采用結(jié)構(gòu)化程序設(shè)計(jì)方法與模塊化程序
設(shè)計(jì)方法
23.下列有關(guān)繼承和派生的敘述中,正確的是()。
A.派生類不彘訪問基類的保護(hù)成員
B.作為虛基類的類不能被實(shí)例化
C.派生類應(yīng)當(dāng)向基類的構(gòu)造函數(shù)傳遞參數(shù)
D.虛函數(shù)必須在派生類中重新實(shí)現(xiàn)
三、2.填空題(12題)
24.有以下程序
#include<iostream>
usingnamespacestd;
classBase
(
inta;
public:
Base(intx){a=x;}
voidshow(){cout<<a;}
classDerived:publicBase
(
intb;
public:
Derived(inti):Base(i+l),b(i){}
voidshow(){cout<<b;
);
intmain()
Baseb(5),*pb;
Derivedd(l);
pb=&d;
pb->show();
return0;
運(yùn)行后的打印結(jié)果是______o
25.下列程序時(shí)類D代碼段出現(xiàn)編譯錯(cuò)誤,原因是【】。
#include<iostream,h>
classA
public:
A(charc){cout<<"A'sconstructor."<<c<<endl;}
-A(){cout<<"A'sdestructor."<<endl;}
);
classB:virtualpublicA
{
public:
B(charcb,charcd):A(cb){cout<<"B'sconstructor."<<cd<<endl;}
?B(){cout<<"B'sdestructor."<<endl;}
private:
charb;
);
classC:virtualpublicA
(
public:
C(charcc,charcd):A(cc)
{cout<<"C'sconstructor."<<cd<<endl;}
~C(){cout<<"C'sdestructor."<<endl;}
);
classD:publicB,publicC
(
public:
D(charcd,charce,charcf,chareg,charch,charci)
:C(cf,cg),B(cd,ce),A(cd),aa(ch)
{cout<<"D'sconstructor."<<ci<<endl;}
~D(){cout<<"D'sdestructor."<<endl;}
private:
Aaa;
);
voidmain()
(
DohjCa'/b'/c'/d'/e'/f)
26.若下面程序運(yùn)行時(shí)輸出結(jié)果為:
1,A,10.1
2,B,3.5
請(qǐng)將程序補(bǔ)充完整。
#include<iostream>
usingnamespacestd;
intmain()
(
voidtest(int,char,double);
test(l,'A',10.1);
test(2,'B');
return0;
)
voidtest(inta,charb,doublec)
(
cout<<a<<<<b<<<<c<<end1;
}
27.下面程序的輸出結(jié)果是【】。
#include<iostream>
usingnamespacestd;
intx;
voidfunA(int&,int);
voidfunB(int,int&);
intmain()
(
intfirst;
intsecond=5;
x=6;
funA(first,second);
funB(first,second);
cout<<first<<""<<second<<""<<x<<endl;
return0;
)
voidfunA(int&a,intb)
intfirst;
first=a+b;
a=2*b;
b=first+4;
)
voidfunB(intu,int&v)
(
intsecond;
second=x;
v=second+4;
x=u+v;
)
28.當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時(shí),說明循環(huán)隊(duì)列已滿,
不能進(jìn)行入隊(duì)運(yùn)算。這種情況稱為【】。
29.如下程序的輸出結(jié)果是____o
#include<iostream>
usingnamespacestd;
classpumpkin{
public:
pumpkin(){++count;}
~pumpkin(){—eount;}
staticvoidtotal_count(){cout<<count<<"pumpkin(s)"<<endl;}
private:
staticintcount;
);
intpumpkin::count=0;
intmain(){
pumpkinpl[10];
pumpkin::total_count();
return0;
)
30.測試分為白箱法和黑箱法,又稱為邏輯覆蓋測試。
31.在C++語言中每個(gè)類都有一個(gè)【】指針,該指針指向正在調(diào)用成員
函數(shù)的對(duì)象。
32.fun()函數(shù)的功能是:首先對(duì)a所指的N行N列的矩陣,找出各行中
的最大的數(shù),再求這N個(gè)最大值中的最小的那個(gè)數(shù)作為函數(shù)返回值。請(qǐng)
填空完成此程序。
#defineN100
intfun(int(*A)[N])
(
introw,col,max,min;
fbr(row=0;row{
for(max=a[row][0],col=l;colif([])
max=afrow][col];
if(row==0)
min=max;
elseif([])
min=max;
returnmin;
33.表達(dá)式x.operator+(y.operator++(0))還可以寫成。
34.假設(shè)inta=l,b=2;,則表達(dá)式(++a/b)*b-的值為[]o
35.參照函數(shù)模板的寫法,完成非模板函數(shù)的定義,語句為
#include<iostream.h>
#include<string.h>
template<classT>
Tmin(Ta,Tb)
(
return(a<b?a:b);
}
char*rain(char*a,char*b)
(
]
voidmain()
(
doublea=1.23,b=3.45;
charsi[]="abed",s2[]="efg";
cout<<min(a,b)<<min(sl,s2)<<endl;
四、程序改錯(cuò)題(10題)
36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)
行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果
為:
sizeof(Sl)=5
sizeof(s2)=10
sizeof(s3)=l
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在//******error******的下面。
⑴不能刪除assert()語句。
(2)只能修改后面的數(shù)字。
提示:assert函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。
試題程序:
#include<iostream.h>
#include<assert.h>
voidmain()
{
chartsl="abc":
I!********error********
assert(sizeof(s1)==3):
cout?"sizeof(sl)=5"?endl;
chars2ri0]="ab":
!1********enor********
assert(sizeof(s2)==2);
cout?"sizeof(s2)=10"?endl;
chars3=23:
II********error********
assert(sizeof(s3)=4);
cout?"sizeof(s3)=l"?endl;
return;
)
37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使程序正常運(yùn)行,并且要求最后一個(gè)
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
(
throw("error");
)
!i********e[£*or********
catch(chars)
cout?s?endl;
try
(
throw((int)0);
)
!i********e[£*or********
catch
{
cout?i?endl;
)
try
(
throw(O);
throw("error");
)
Ii********enor********
catch
{
cout?"ERROR"?endl;
)
returnO;
)
38.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本程序要求實(shí)
現(xiàn)的功能為從鍵盤輸入一個(gè)字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在
1I******error******卜曲j。
試題程序:
#include<iostream>
#include<fstream>
Ii********enor********
usingstd;
voidWriteFile(char*s)
{
ofstreamout1;
I!********error********
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=0;i++)
(
II********error********
outl.puts(s[i]);
)
outl.close;
)
voidClearFile
(
ofstreamout1;
outl.open("1.txt");
outl.close;
)
intmain
(
chars[1024];
ClearFile;
cout?"pleaseinputastrin9:"?endl;
cin.getline(s?1024);
WriteFile(s);
returnO;
39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行時(shí)有錯(cuò)。請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為
100
37
32
注意:錯(cuò)誤的語句在//******error******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
I!******error******
voidmain
(
II******enor******
intm=0142:
II******error******
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
40.使用VC++6.0打開考生文件夾下的源程序文件1.cppo本程序要
求輸入一個(gè)字符串,然后將其中的小寫字母改成大寫字母,字符可能輸
入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕
中。
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在//******error******的下面。
試題程序:
#include<iostream.h>
voidmain
{
inti=O;
charstrfl20];
cout?"Enterastringendwith?."?endl;
!1********enor********
cin.getline(str,120);
!1********enor********
while(str)
!1****************
if(str[i])=a)
str[i]=str[i]-a+A;
1++;
cout?str?endl;
return;
)
41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使程序正常運(yùn)行,并且要求最后一個(gè)
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在//******e"or******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
(
throw("error");
)
II********ej*j*or********
catch(chars)
cout?s?endl;
try
(
throw((int)0);
)
Ii********ej*j*or********
catch
(
cout?i?endl;
)
try
(
throw(O);
throw("error");
)
II********error********
catch
(
cout?"ERROR"?endl;
}
returnO;
)
42.使用VC++6.0打開考生文件夾下的源程序文件I.cpp,該程序運(yùn)
行有問題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果為:
number=1
number=10
number=100
注意:不要改動(dòng)main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在//******error******的下面。
試題程序:
#include<iostream.h>
classTC
(
public:
TC(inti)
{
number=i;
)
voidSetNumber(intm)
(
number=m;
)
intGetNumberconst
(
returnnumber;
)
voidPrintconst
(
cout?"number="?number?endl;
}
private:
intnumber;
);
voidmain
!!********enor********
TCobjl;
objl.Print;
TCobj2(3);
//********error********
objl.number=10;
!1********ej*j*0j**^^o******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
43.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本程序要求實(shí)現(xiàn)
的功能為從鍵盤輸入一個(gè)字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在
******error******的下面。
試題程序:
#include<iostream>
#include<fstream>
II********error********
usingstd;
voidWriteFile(char*s)
(
ofstreamout1;
I!********error********
outl.open("l.txt",binarylapp);
for(inti=0;s[i]!=0;i++)
********error********
outl.puts(s[i]);
)
outl.close;
)
voidClearFile
{
ofstreamoutl;
outl.open("l.txt");
outl.close;
)
intmain
(
chars[1024];
ClearFile;
cout?"pleaseinputastrin9:"?endl;
cin.getline(s,1024);
WriteFile(s);
returnO;
)
44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序
要求輸入一個(gè)字符串,然后將其中的小寫字母改成大寫字母,字符可
能輸入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出
到屏幕中。
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h>
voidmain
{
inti=O;
charstr[120];
cout?"Enterastringendwith?."?endl;
II********error********
cin.getline(str,120);
II********error********
while(str)
(
II********error********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
}
cout?str?endl;
return;
)
45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行有問題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果為:
number=l
number=10
number=100
注意:不要改動(dòng)main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h>
classTC
(
public:
TC(inti)
(
number』
)
voidSetNumber(intm)
(
number=m;
)
intGetNumberconst
(
returnnumber;
)
voidPrintconst
(
cout?"number="?number?endl;
)
private:
intnumber;
};
voidmain
(
II********enor********
TCobjl;
objl.Print;
TCobj2(3);
!i********e[£*or********
objl.number=10;
Ii********error*%o******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
)
五、綜合應(yīng)用題(2題)
46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定
義了用于表示矩形的CRect類,但類CRect的定義并不完整。請(qǐng)按要
求完成下列操作,將類CRect的定義補(bǔ)充完整。
(1)定義私有數(shù)據(jù)成員leftPoint>topPoint>rightPoint、bottomPoint,分
別用于表示矩形左上角及右下角的點(diǎn)的坐標(biāo),它們都是double型的數(shù)
據(jù)。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z句。
(2)完成默認(rèn)構(gòu)造函數(shù)CRect的定義,指定默認(rèn)實(shí)參為0,它們都是
double型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z句。
(3)定義函數(shù)體為空的析構(gòu)函數(shù)。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z句。
(4)在main函數(shù)中定義GReet類的實(shí)例rect2,并把re-
ctl的值賦給rect2。請(qǐng)?jiān)谧⑨?之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,不要改動(dòng)程序中的其他內(nèi)容。
試題程序:
#include<iostream.h>
classCRect
{
private:
public:
voidSetPoints(double,double,double,double);
voidSetLeftPoint(doublem){leftPoint=m;}
voidSetRightPoint(doublem){rightPoint=m;}
voidSetTopPoint(doublem){topPoint=m;}
voidSetBottomPoint(doublem){bottomPoint=m;}
voidDisplay();
};
CReet::CRect(doublel,doublet,doubler,doubleb)
(
leftPoint=1;topPoint=t;
rightPoint=r;bottomPoint=b;
}
voidCRect::Setpoints(doublel,doublet,doubler,doubleb)
leftPoint=l;topPoint=t;
rightPoint=n;bottomPoint=b;
)
voidCRect::Display()
(
cout?"left-toppointis("?leftPoint<<","?top-
Point?")"?\n;
cout?"right-bottompointis("?rightPoint<<","
?bottomPoint?")"?\n;
)
voidmain()
(
CRectrectO;
rectO.Display();
rectO.SetPoints(20,20.6,30,40);
rectO.Display();
CRectrectl(O,0,150,150);
recti.SetTopPoint(10.5);
recti.SetLeftPoint(10.5);
!1********4********rect2Display()?}
47.請(qǐng)使用VC6或使用【答題】菜單打開考生目錄proj3下的工程文件
proj3,此工程中包含一個(gè)源程序文件proj3.cpp,補(bǔ)充編制C++程序
proj3.cpp,其功能是讀取文本文件in.dat中的全部內(nèi)容,將文本存
放到doc類的對(duì)象myDoc中。然后將myDoc中的字符序列反轉(zhuǎn),并
輸出到文件out.dat中。文件in.dat的長度不大于1000字節(jié)。
要求:
補(bǔ)充編制的內(nèi)容寫在‘'〃**********''與"http://**********''兩行之間。實(shí)現(xiàn)
將myDoc中的字符序列反轉(zhuǎn),并將反轉(zhuǎn)后的序列在屏幕上輸出。不得
修改程序的其他部分。
注意:程序最后已將結(jié)果輸出到文件Out.dat中,輸出函數(shù)
writeToFile已經(jīng)給出并且調(diào)用。
//proj3.cpp
#include<iostream>
#include<fstream>
#include<catting>
usingnamespacestd;
classdoc
(
private:
char*sir;//文本字符串首地址
intlength;//文本字符個(gè)數(shù)
public:
//構(gòu)造函數(shù),讀取文件內(nèi)容,用于初始化新對(duì)象,filename是文件名字
符串首地址
doc(char*filename);
voidreverse;〃將字符序列反轉(zhuǎn)
doc;
voidwriteToFile(char*filename);
};
doc::doc(char}filename)
ifstreammyFile(filename);
intlen=1001,tmp;
atr=newcharf1en];
length=0;
while((trap=myFile.get)!=EOF)
str[length++]=trap;
str[length]=4\O,;
myFile,close;
)
voiddoc::reverse{
//將數(shù)組atr中的length個(gè)字符中的第一個(gè)字符與最后一個(gè)字符交換,
第二個(gè)字符與倒數(shù)第二個(gè)
〃字符交換
〃*************666*************
doc::~doe
delete[]str;
)
voiddoc::writeToFile(char*filename)
(
OfstreamoutFile(filename);
outFile?str;
outFile.close;
)
voidmain
(
docmyDoc("in.dat");
myDoc.reveme;
myDoc.writeToFile("out.dat");
)
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程test35_3o此工程包含一個(gè)
test35_3.cpp,其中定義了時(shí)鐘類clock,但該類的定義并不完整。請(qǐng)按
要求完成下列操作,將程序補(bǔ)充完整。
⑴定義類clock的私有數(shù)據(jù)成員hour和minute,它們都是int型的數(shù)據(jù)。
請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。
(2)補(bǔ)充完全類clock的構(gòu)造函數(shù),私有數(shù)據(jù)成員hour和minute分別初
始化為參數(shù)h和m的值,請(qǐng)?jiān)谧⑨尅啊?*2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成類clock的成員函數(shù)printtime,的定義,該函數(shù)以"Nowthetime
ishour:minute”的格式輸出數(shù)據(jù)成員hour和minute的值,如hour=3、
minute=59,則輸出為"Nowthetimeis03:59”,請(qǐng)?jiān)谧⑨尅啊?*3***之后
添加適當(dāng)?shù)恼Z句。
(4)完成類clock的成員函數(shù)addoneminutetime的定義,該函數(shù)可將clock
類對(duì)象表示的時(shí)間加一分鐘,如現(xiàn)在hour=3、minute=59,運(yùn)行該函數(shù)
后hour=4、minute=0o請(qǐng)?jiān)谧⑨尅啊?*4**”之后添加適當(dāng)?shù)恼Z句。
程序的輸出結(jié)果如下:
Now,thetimeis12:59
Now,thetimeis13:00
注意:除在指定位置添加語句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
源程序文件test35_3.cpp清單如下:
#include<iostream.h>
classclock
{
private:
H**]**
public:
c(lock(inth,intm)
〃**2**
intpresenthour(){returnhour;}
intpresentminute(){returnminute;}
voidaddoneminutetime();
voidprinttime();
);
voidclock::printtime()
(
if(hour<10)cout<<'O';
H**3**
if(minute<10)cout<<'O';
cout<<minute<<endl;
v(oidclock::addoneminutetime()
〃**4**
if(minute>59)
(
minute-=60;
hour++;
}
if(hour>23)
hour=0;
)
voidmain()
(
clockc(12,59);
c.printtime();
c.addoneminutetime();
c.printtime();
)
49.使用VC6打開考生文件夾下的工程MyProj2。此工程包含一個(gè)源程
序文件MyMain2.cpp,此程序的運(yùn)行結(jié)果為:
Derivel'sPrint()Called.
Derive2'sPrint()called.
其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。
①定義函數(shù)Print。為無值型純虛函數(shù)。請(qǐng)?jiān)谧⑨尅啊?*1**''之后添加適當(dāng)
的語句。
②建立類Derivel的構(gòu)造函數(shù),請(qǐng)?jiān)谧⑨尅啊?*2**”之后添加適當(dāng)?shù)恼Z句。
③完成類Derive2成員函數(shù)Print。的定義。請(qǐng)?jiān)谧⑨尅啊?*3**”之后添加
適當(dāng)?shù)恼Z句。
④定義類Derivel的對(duì)象指針dl,類Derive2的對(duì)象指針d2。其初始化
值分別為1和20
源程序文件MyMain2.cpp中的程序清單如下:
//MyMain2.cpp
#include<iostream>
usingnamespacestd;
classBase
{
public:
Base(inti)
(
b=i;
)
〃**]**
protected:
intb;
);
classDerivel:publicBase
(
public:
〃**2**
voidprint()
(
cout<<"Derivel'sPrint()called."<<endl;
)
);
classDerive2:publicBase
(
public:
Derive2(inti):Base(i){}
〃**3**
);
voidfun(Base*obj)
(
obj->Print();
)
intmain()
{
〃**4**
fun(dl);
fun(d2);
return0;
參考答案
l.B解析:C++是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,它充分支持面向?qū)ο?/p>
思想中的3個(gè)主要特征:封裝性、繼承性、多態(tài)性。B選項(xiàng)所描述是結(jié)
構(gòu)化程序設(shè)計(jì)的思想。
2.A解析:調(diào)用重載函數(shù),編譯器檢查調(diào)用中的參數(shù)個(gè)數(shù)、類型和順序。
3.D解析:在程序中,指針變量p是int類型的指針類型。從程序中可看
出:
①賦值語句“s=&k;",使s指向k,即s的值為k在內(nèi)存中地址,*s代
表k的值;
②賦值語句,p=&s;",使p指向s,*p代表s中的值,即k在內(nèi)存中的
地址:
③因?yàn)?P代表s中的值,即k在內(nèi)存中的地址,所以“p代表的是k的
值20°
4.A
5.D解析:調(diào)用對(duì)象的一個(gè)成員函數(shù)時(shí)不會(huì)調(diào)用拷貝構(gòu)造函數(shù)。
6.A解析:在塊和進(jìn)程的非正常出口處往往需要用goto語句。使用goto
語句會(huì)使程序執(zhí)行效率較高,但它造成程序的混亂,程序的質(zhì)量與goto
語句的數(shù)量成反比。結(jié)構(gòu)化程序設(shè)計(jì)的關(guān)鍵是提高程序的清晰性,因此
在結(jié)構(gòu)化程序設(shè)計(jì)使用got。語句的原則是限制。
7.D
Do【解析】只有公有繼承的公有成員才能被派生類的對(duì)象直接訪問,
其他的情況都會(huì)因?yàn)樵L問權(quán)限問題產(chǎn)生錯(cuò)誤。
8.B解析:數(shù)據(jù)庫的庫結(jié)構(gòu)是指數(shù)據(jù)在存儲(chǔ)介質(zhì)內(nèi)的存放形式。數(shù)據(jù)庫
中的數(shù)據(jù)可以是合法的任意數(shù)據(jù)類型,而不僅僅是數(shù)值型數(shù)據(jù)。數(shù)據(jù)庫
管理系統(tǒng)的功能主要有數(shù)據(jù)模式定義、數(shù)據(jù)存取的物理構(gòu)建、數(shù)據(jù)操縱、
數(shù)據(jù)的完整性、安全性定義與檢查、數(shù)據(jù)庫的并發(fā)控制與故障恢復(fù)和數(shù)
據(jù)的服務(wù)。數(shù)據(jù)庫文件的結(jié)構(gòu)可以由系統(tǒng)自動(dòng)生成。
9.A
10.D
11.B
抽象類是指包含純虛函數(shù)的類,它主要用于基類,給其他派生類提供
參考,由于含純虛函數(shù),故抽象類不能實(shí)例化。
12.A
Ao【解析】if...else語句的格式“if((條件>)<語句l>else<語句2>“注意
語句結(jié)束要以分號(hào)結(jié)尾,對(duì)照題中選項(xiàng)可知A正確。
13.B
Bo【解析】本題考查模板函數(shù)的應(yīng)用,表達(dá)式int(l.1)和int(4.2)用
于將1.1和4.2強(qiáng)制轉(zhuǎn)換為整型。
14.B
15.A
本題主要考查了繼承和派生。基類中的公有成員在派生類中的訪問控
制屬性將隨著繼承方式而改變:派生類從基類公有繼承時(shí),基類的公
有成員在派生類中仍然是公有成員;派生類從基類私有繼承時(shí),基類的
公有成員在派生類中改變?yōu)樗接谐蓡T;無論哪種繼承方式,派生類的成
員和派生類的對(duì)象都無法訪問基類的私有成員。因此選項(xiàng)B和選項(xiàng)D
錯(cuò)誤。通過類的對(duì)象只能訪問類的公有成員,因此選項(xiàng)C錯(cuò)誤。
16.C學(xué)號(hào)是學(xué)生表S的主鍵,課號(hào)是課程表C的主鍵,所以選課表SC
的關(guān)鍵字就應(yīng)該是與前兩個(gè)表能夠直接聯(lián)系且能唯一定義的學(xué)號(hào)和課
號(hào),所以選擇C項(xiàng)。
17.D
軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中主要的資源有硬件資源、
通信資源、輔助資源等。
(1)硬件資源是指組成計(jì)算機(jī)及相關(guān)應(yīng)用所需要的硬件,它是軟件開
發(fā)必不可少的資源,因?yàn)闊o論什么樣的軟件工具都需要在硬件上完成
任務(wù),它是其他資源的基礎(chǔ)資源。
(2)通信資源是指為軟件開發(fā)提供通信支撐的資源,它與測試數(shù)據(jù)無
關(guān)。
(3)支持軟件是指為軟件開發(fā)提供操作平臺(tái)的軟件,如常用的面向?qū)?/p>
象開發(fā)的Rose軟件,它主要是軟件開發(fā)的工具。
通過對(duì)上述分析的總結(jié),可以知道本題的正確答案選D。
18.D解析:選項(xiàng)A插入和選項(xiàng)C刪除因?yàn)橛袛?shù)據(jù)變更,因此會(huì)改變數(shù)
據(jù)元素之間的結(jié)構(gòu)關(guān)系,而排序則因?yàn)轫樞虻母淖儠?huì)改變數(shù)據(jù)元素之間
的結(jié)構(gòu)關(guān)系。
19.B解析:C++在重載運(yùn)算符時(shí),必須符合以下的條件:
①不可以重載內(nèi)置的C++數(shù)據(jù)類型(如int,double等類型)運(yùn)算符的含義;
②不可以定義C++中沒有的運(yùn)算符;
⑨不可以改變重載運(yùn)算符的優(yōu)先級(jí)與操作數(shù)的個(gè)數(shù);
④有些運(yùn)算符不能被重載,例如域運(yùn)算符(::),條件運(yùn)算符(?:)等,具體
哪些運(yùn)算符不能被重載與編譯器有關(guān)。
20.D
解析:在使用標(biāo)準(zhǔn)輸入流cin和流提取運(yùn)算符>>進(jìn)行多項(xiàng)數(shù)據(jù)的輸入
時(shí),使用空白字符(空格鍵、回車鍵和Tab鍵)作為兩項(xiàng)數(shù)據(jù)的分隔符,
當(dāng)遇到I后面的空格時(shí),cin對(duì)象即停止接收后面的數(shù)據(jù)。本題正確答
案為D。
21.B解析:char型數(shù)據(jù)所占內(nèi)存的大小為1個(gè)字節(jié)。注意:int型數(shù)據(jù)
占內(nèi)存的大小為4個(gè),congdouble,double占內(nèi)存的大小為8個(gè)字節(jié)。
注意:求字節(jié)數(shù)用sizeof運(yùn)算符。
22.C解析:在模塊化設(shè)計(jì)中,要求將一個(gè)大程序按人們能理解的大小規(guī)
模進(jìn)行分解,使每個(gè)模塊都能易于理解,各模塊的功能盡量單一,各模
塊之間的聯(lián)系盡量的少。因此,選項(xiàng)A中的說法是錯(cuò)誤的。自頂向下、
逐步細(xì)化的設(shè)計(jì)過程,主要包括兩個(gè)方面:一是將一個(gè)復(fù)雜問題的解法
分解和細(xì)化成由若干模塊組成的層次結(jié)構(gòu),?二是將一個(gè)模塊的功能逐步
分解細(xì)化為一系列的處理步驟,直到某種程序設(shè)計(jì)語言的語句或某種機(jī)
器指令。即在自頂向下、逐步細(xì)化的設(shè)計(jì)過程中,是按照先全局后局部,
先整體后細(xì)節(jié)、先抽象后具體的方法設(shè)計(jì)程序。因此.選項(xiàng)B中的說法
也是錯(cuò)誤的。\u3000在模塊化程序設(shè)計(jì)中.每一個(gè)模塊完成一個(gè)功能,
相對(duì)獨(dú)立,要求一個(gè)模塊內(nèi)部的控制結(jié)構(gòu)也要符合結(jié)構(gòu)化原則。因此,
選項(xiàng)C中的說法是正確的。由于在模塊化程序設(shè)計(jì)中,一個(gè)模塊內(nèi)部的
控制結(jié)構(gòu)也要符合結(jié)構(gòu)化原則,因此,在程序設(shè)計(jì)過程中,結(jié)構(gòu)化程序
設(shè)計(jì)方法與模塊化程序設(shè)計(jì)方法是要同時(shí)采用的。因此,選項(xiàng)D中的說
法是錯(cuò)誤的。
23.C
派生類可以訪問基類的保護(hù)成員,而不能訪問基類的私有成員。作為
虛基類的類可以被實(shí)例化。虛函數(shù)如果沒有派生類中重新實(shí)現(xiàn),那么
仍然使用基類的成員函數(shù)。
24.22解析:本題考核基類指針與派生類指針的使用。本例程序中類
Derived是從基類Base公有繼承來的。main。中定義了基類對(duì)象b和一
個(gè)基類指針pb,又定義了派生類Derived的對(duì)象d。由于Derived是Base
的子類型,因此可以將派生類Derived的對(duì)象d的地址賦值給指向基類
Base的指針pb,但這時(shí)指針pb只能使用從基類Base繼承的成員。所
以通過對(duì)象指針Pb調(diào)用的show函數(shù)是基類的成員函數(shù)show(),從而
輸出基類私有數(shù)據(jù)成員a的值20
25?類的繼承出現(xiàn)二義性類的繼承出現(xiàn)二義性解析:本題就是通過實(shí)例
來表現(xiàn)多繼承時(shí)出現(xiàn)的二義性問題。多重繼承比較復(fù)雜,盡管C++中提
供了虛基類來解決這個(gè)問題,但在實(shí)際開發(fā)中由于過于復(fù)雜而往往盡量
避免使用。
26=3.5
27.101020101020解析:本題考核函數(shù)的引用傳遞。“引用”實(shí)際上是
給一個(gè)已知變量起個(gè)別名,對(duì)引用的操作也就是對(duì)被它引用的變量的操
作。函數(shù)funA()的第1個(gè)形參為引用形參,那么在函數(shù)內(nèi)部形參a的改
變將弓I起實(shí)參的相應(yīng)改變。同理funB()中引用參數(shù)V的改變也會(huì)弓|起相
應(yīng)實(shí)參的改變。
28.上溢上溢解析:入隊(duì)運(yùn)算是指在循環(huán)隊(duì)列的隊(duì)尾加入一個(gè)新元素。
這個(gè)運(yùn)算有兩個(gè)基本操作:首先將隊(duì)尾指針進(jìn)一(即rear=rear+l),并當(dāng)
Year=m+1時(shí)置rear=1;然后將新元素插入隊(duì)尾指針指向的位置。當(dāng)循
環(huán)隊(duì)列非空(s=l)時(shí)且隊(duì)尾指針等于隊(duì)頭指針時(shí),說明循環(huán)隊(duì)列已滿,不
能進(jìn)行入隊(duì)運(yùn)算,這種情況稱為“上溢”。
29.1Opumpkin(s)1Opumpkin(s)解析:在主函數(shù)中pumpkinplflO];定義
了一個(gè)有10個(gè)元素的對(duì)象數(shù)組,所以調(diào)用了1。次構(gòu)造函數(shù),靜態(tài)數(shù)據(jù)
成員court累加了10次,pumpkin::total_count(),?顯式調(diào)用類成員函數(shù),
直接調(diào)用靜態(tài)成員函數(shù):total_count(),打印pumpkin(s)。
30.白箱法白箱法解析:白箱測試是根據(jù)程序內(nèi)部邏輯結(jié)構(gòu)的分析來選
取測試用例。由于測試用例對(duì)程序的邏輯覆蓋程序決定了測試的完全性
的程度,因此白箱測試也稱為邏輯覆蓋測試。
31.this
32.a[row][col]>max或a[row][col]>=max或max<a[row][col]或max<
=a[row][col]max<min或max<=min或min>max或min>=max。
a[row][col]>max或a[row][col]>=max或max<a[row][col]或max<
=a[row][col]\r\nmax<min或max<=min或min>max或min>=max。
解析:由程序可知,第2個(gè)for循環(huán)是用宋找出某一列中的最大值。由
于if選擇后面的語句是把數(shù)組元素值存入變量max中,說明此時(shí)的數(shù)
組元素比開始設(shè)定的max值要大,所以if中的條件表達(dá)式為ii[row][col]
>max。第1個(gè)for循環(huán)用于實(shí)現(xiàn)對(duì)矩陣的行掃描,由于elseif后面的
執(zhí)行語句是把max賦給min,說明此時(shí)max比開始設(shè)定的min還小,
所以elseif中的條件表達(dá)式為:max<min或max<=min。
33.x+y++或x+(y++)x+y++或x+(y++)
34.22解析:運(yùn)算符++的優(yōu)先級(jí)高于雙目運(yùn)算符/,所以括號(hào)中的運(yùn)算為
2/2,最后的結(jié)果為2/2*2。
35.return(strcmp(ab)<0?a:b);return(strcmp(a,b)<0?a:b);解析:對(duì)于兩個(gè)
變量的比較來說,字符間的比較不同于整型或浮點(diǎn)型變量那樣可以直接
比較,而是要采用專用函數(shù)進(jìn)行,因此不能采用同一個(gè)函數(shù)模板,所以
本題采用的就是單獨(dú)寫成一個(gè)非模板函數(shù)。
36.(1)應(yīng)改為"assert(sizeof(sD==4);
替⑵應(yīng)改為"assert(sizeof(s2)==lO);
\n(3)應(yīng)改為"assert(sizeof(s3)=l);
\n【解析】assert函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。所以要讓它正
常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會(huì)產(chǎn)生中斷異常。
t4assert(sizeof(s1)=3);”語句中“sizeof(sl尸=3”為假,這會(huì)使程序產(chǎn)生異
常,不能正常執(zhí)行。因?yàn)閟trl的值為abc,但是它還有一個(gè)尾符,它的
長度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(sl)==4)二。
str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)=10);”。
charstr3=23;語句說明23是字符,所占存儲(chǔ)空間為1,所以修改為
44assert(sizeof(s3)=1);
37.(1)應(yīng)改為"catch(char*s)”。
⑵應(yīng)改為“cateh(inti)”。
(3)應(yīng)改為"catch(…)”。
【解析】本題中第1個(gè)標(biāo)識(shí)前的異常拋出語句為“throw("error");",其
中的類型為字符串。所以對(duì)應(yīng)的異常捕捉語句catch中應(yīng)該符合這個(gè)類
型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語
句修改為“catch(char*S)”°第2個(gè)標(biāo)識(shí)前的異常拋出語句為
t4throw((int)0);",其中的類型為int。對(duì)應(yīng)的異常捕捉語句catch中應(yīng)
該符合這個(gè)類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配
的catch塊,系統(tǒng)就會(huì)調(diào)用一個(gè)系統(tǒng)函數(shù),使程序終止運(yùn)行。即第2處
的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類
型,那么就用刪節(jié)號(hào)“…”表示它可以捕捉任何類型的異常信息,即修
改為“catch(…)”。
38.(1)應(yīng)改為"usingnamespacestd;"。
(2)應(yīng)改為"outl.open("l.txt",ios::binaryIios::app);"。
(3)應(yīng)改為“outl.put(s[i]);
【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,
對(duì)于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處
的語句修改為“usingnamespacestd;第2處,調(diào)用成員函數(shù)open
中,輸入、輸出方式是在ios類中定義的,所以“outl.open("l.txt",
binaryIapp);”語句缺少類ios,即第2處的語句修改為
“outl.open("l.txt",ios::binaryIios::app);第3個(gè)標(biāo)識(shí)應(yīng)
該用流成員函數(shù)put輸出字符,所以第3處的語句修改為
Uoutl.put(s[i]);”。
39.(l)“voidmain”。
(2)uintm=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=0x25;”或“intn=0x25;
40.(1)應(yīng)改為“ein.getline(str,120,?);
業(yè)⑵應(yīng)改為"while(str[i])"°
,,
\n(3)應(yīng)改為"if(str[i]>=a&&str[i]<=2)0
\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員
函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個(gè)
數(shù),終止標(biāo)志字符)”,所以第1處改為“cin.getline(str,120,?);第
2處的“while(str)”語句應(yīng)該是判斷字符串str中的每一個(gè)字符是否為結(jié)
束符,若不是結(jié)束符,在循環(huán)中判斷每一個(gè)字符是否為小寫,若為小寫,
則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語句是
判斷字符str川是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,
但是小寫字符應(yīng)該是a到2,所以修改為“if(st巾]>=a&&str[i]>=z)”。
41.(1)應(yīng)改為"catch(char*s)”。
⑵應(yīng)改為“cateh(inti)”。
(3)應(yīng)改為"catch(…)”。
【解析】本題中第1個(gè)標(biāo)識(shí)前的異常拋出語句為“throw("error");”,其
中的類型為字符串。所以對(duì)應(yīng)的異常捕捉語句catch中應(yīng)該符合這個(gè)類
型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語
句修改為“catch(char*S)”°第2個(gè)標(biāo)識(shí)前的異常拋出語句為
uthrow((int)0);",其中的類型為int。對(duì)應(yīng)的異常捕捉語句catch中應(yīng)
該符合這個(gè)類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配
的catch塊,系統(tǒng)就會(huì)調(diào)用一個(gè)系統(tǒng)函數(shù),使程序終止運(yùn)行。即第2處
的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類
型,那么就用刪節(jié)號(hào)"…''表示它可以捕捉任何類型的異常信息,即修
改為“catch(…)”。
42.⑴應(yīng)改為"TCobjl⑴;
\n(2)應(yīng)改為“Objl.SetNumber(lO);”。
\n(3)應(yīng)改為“0bj2.SelNumber(lOO);"。
\n【解析】本題第1處的“TCobjl;”語句是聲明TC類的對(duì)象Objl,根據(jù)
TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個(gè)輸
出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl⑴;”。第2處處的
“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中
成員函數(shù)的使用形式應(yīng)該是:對(duì)象名.成員函數(shù),所以修改為
“objl.SetNumber(lO);類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。
第3處=(2.561即11加1'(100);”語句中的T(2為類,并不是對(duì)象,這里
應(yīng)該使用定義的對(duì)象,即obj2,所以將語句修改為
“obj2.SetNumber(lOO);
43.(1)應(yīng)改為"usingnamespacestd;
\n(2)應(yīng)改為"outl.open('l.txt',ios::binary|ios::app);"。
\n(3)應(yīng)改為“outl.put(s[i]);
\n【解析】本題第1處的“usingstd廠是在程序中引入標(biāo)準(zhǔn)命名空間std,
對(duì)于C++中弓I入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處
的語句修改為“usingnamespacestd;第2處,調(diào)用成員函數(shù)open中,
輸入、輸出方式是在ios類中定義的,所以“outl.open。1.txt',binary|
app);”語句缺少類ios,即第2處的語句修改為“outl.open('l.txt',ios::
binary|ios::app);”。第3個(gè)標(biāo)識(shí)應(yīng)該用流成員函數(shù)put輸出字符,所
以第3處的語句修改為“outl.put(s[i]);
44.(1)應(yīng)改為“ein.getline(str,120,?);
⑵應(yīng)改為“while(str[i])"°
⑶應(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īng)該是判斷字符串str中的每一
個(gè)字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個(gè)字符是否
為小寫,若為小寫,則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”。第3處的
“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只
是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為
uif(str[i]>=a&&str[i]>=z),,o
45.⑴應(yīng)改為“TCobjl(l);
(2)應(yīng)改為“Objl.SetNumber(lO);
(3)應(yīng)改為“0bj2.SelNumber(lOO);
【解析】本題第1處的“TCobjl;”語句是聲明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í)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年臨時(shí)員工派遣工作服務(wù)合同
- 2025版基礎(chǔ)設(shè)施建設(shè)項(xiàng)目退工程款合同樣本3篇
- 二零二五年度木材加工廢棄物處理與資源化利用合同2篇
- 2025年勞動(dòng)力補(bǔ)償福利協(xié)議
- 2025年大學(xué)生健身俱樂部協(xié)議
- 二零二五版新能源車輛充電站合作協(xié)議書下載3篇
- 2025版小產(chǎn)權(quán)房購房合同范本:房產(chǎn)交易稅費(fèi)優(yōu)惠政策解析2篇
- 2025年度木雕工藝品行業(yè)信息共享與數(shù)據(jù)服務(wù)合同4篇
- 2025年度個(gè)人二手房買賣協(xié)議書范本:房屋交易全程保險(xiǎn)合同4篇
- 2025年食堂承包經(jīng)營餐飲服務(wù)安全檢查與整改協(xié)議3篇
- 普通高中生物新課程標(biāo)準(zhǔn)
- 茉莉花-附指法鋼琴譜五線譜
- 結(jié)婚函調(diào)報(bào)告表
- SYT 6968-2021 油氣輸送管道工程水平定向鉆穿越設(shè)計(jì)規(guī)范-PDF解密
- 冷庫制冷負(fù)荷計(jì)算表
- 肩袖損傷護(hù)理查房
- 設(shè)備運(yùn)維管理安全規(guī)范標(biāo)準(zhǔn)
- 辦文辦會(huì)辦事實(shí)務(wù)課件
- 大學(xué)宿舍人際關(guān)系
- 2023光明小升初(語文)試卷
- GB/T 14600-2009電子工業(yè)用氣體氧化亞氮
評(píng)論
0/150
提交評(píng)論