2022年江蘇省鎮(zhèn)江市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)真題(含答案)_第1頁
2022年江蘇省鎮(zhèn)江市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)真題(含答案)_第2頁
2022年江蘇省鎮(zhèn)江市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)真題(含答案)_第3頁
2022年江蘇省鎮(zhèn)江市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)真題(含答案)_第4頁
2022年江蘇省鎮(zhèn)江市全國計(jì)算機(jī)等級(jí)考試C++語言程序設(shè)計(jì)真題(含答案)_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論