- 相關推薦
2016計算機二級C++上機模擬試題及答案
一、改錯題
使用VC6打開考生文件夾下的工程kt11_1,此工程包含一個源程序文件kt11_1.cpp,但該程序運行有問題,請改正函數(shù)中的錯誤,使該程序的輸出結果為:
Valuesare:1,2and3
Pressanykeytocontinue
源程序文件kt11_1.cpp清單如下:
#include
classCommonBase
{ public:
intx; };
/*****************found*****************/
classDeriveCommonA::publicCommonBase
{ public:
inty; };
classDeriveCommonB:publicCommonBase
{ public:
intz; };
/*****************found*****************/
classOverlapping:publicDeriveCommonA;publicDeriveCommonB
{ public:
voidDisplay()
{ cout<<"Valuesare:"<
intmain()
{ Overlappingov;
/*****************found*****************/
ov.x=1;
ov.y=2;
ov.z=3;
ov.Display();
return0; }
【試題解析】
(1)主要考查對派生類定義的理解,C++規(guī)定的繼承格式是在類名的后面加冒號,之后是繼承方式和繼承類的名稱,題目中錯誤的使用了作用域運算符;
(2)主要考查多繼承的定義,多繼承的格式基本上和單繼承相同,不過在多個基類之間應該使用逗號分開,題目中錯誤的使用了分號,分號在C++中是結束標志;
(3)主要考查對派生類的對象訪問的掌握,x是類CommonBase的成員,如果不加限制的訪問就會產(chǎn)生二義性,編譯程序不知道這個x是A類的,還是B類的,所以必須使用作用域限制符“::”,為了解決這個問題可以使用虛基類。
二、簡單應用題
請編寫函數(shù)fun(),該函數(shù)的功能是判斷字符串是否為回文,若是則函數(shù)返回1,主函數(shù)中輸出YES;否則返回0,主函數(shù)中輸出NO;匚氖侵疙樧x和倒讀都一樣的字符串。
例如:字符串LEVEL是回文,而字符串123312就不是回文。
注意:部分源程序已存在文件kt11_2.cpp中。
請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填寫若干語句。
文件kt11_2.cpp的內(nèi)容如下:
#include
#include
#defineN80
intfun(char*str)
{
}
voidmain()
{ chars[N];
cout<<"Enterastring:"<
gets(s);
cout<<"\n\n";
puts(s);
if(fun(s))
cout<<"YES\n";
else
cout<<"NO\n"; }
【參考答案】
int fun(char *str)
{
int i,n=0,fg=1;
char *p=str;
while(*p)
{ n++; p++; }
for(i=0;i
if(str[i]==str[n-1-i]) ;
else
{ fg=0; break; }
return fg;
}
【試題解析】
本題的解題思路是:先利用循環(huán)中指針的移動來求得字符串的長度n,然后用一個for循環(huán)依次取得數(shù)組中的前半部分元素,用取得的前半部分內(nèi)的元素逐個與后半部分內(nèi)的對應位置的元素進行比較,如果相同,不做任何工作,接著取下一個元素,繼續(xù)比較;如果不相同,可以判斷該字符串肯定不是回文,就給標志變量fg賦值0(fg的初始值為1)。最終把fg作為函數(shù)的返回值返回(fg值為1表明是回文,fg值為0表明不是回文)。
三、綜合應用題
使用VC6打開考生文件夾下的工程kt11_3。此工程包含一個kt11_3.cpp,其中定義了類queue,但該類的定義并不完整。請按要求完成下列操作,將程序補充完整。
(1)完成類queue的無參數(shù)的構造函數(shù)的定義,要求把數(shù)據(jù)成員bl和el都初始化為0,同時輸出queueinitialized。請在注釋“//**1**”之后添加適當?shù)恼Z句。
(2)完成類queue的成員函數(shù)qput(intj)的定義,它的功能是把新的元素加入隊列,過程是先依據(jù)bl的值判斷數(shù)組是否已經(jīng)滿了,如果是就輸出queueisfull,否則bl自加一,并且把參數(shù)j的值存入bl指向的數(shù)組元素中,請在注釋“//**2**”之后添加適當?shù)恼Z句。
(3)完成類queue的成員函數(shù)qget()的定義,它的功能是把隊列開頭的元素提取出隊列,并返回該值,過程是先比較el和bl的值判斷隊列是否已空,如果是就輸出queueisempty,
否則el自加一,并且把el指向的數(shù)組元素返回,請在注釋“//**3**”之后添加適當?shù)恼Z句。
程序輸出結果如下:
queueinitialized
queueinitialized
3311
4422
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件kt11_3.cpp清單如下:
#include
classqueue
{ intq[100];
intbl,el;
public:
queue();
voidqput(intj);
intqget(); };
queue::queue()
{ //**1** }
voidqueue::qput(intj)
{ //**2**
{ cout<<"queueisfull\n";
return; }
bl++;
q[bl]=j; }
intqueue::qget()
{ //**3**
{ cout<<"queueisempty\n";
return0; }
el++;
returnq[el]; }
voidmain()
{
queueaa,bb;
aa.qput(11);
bb.qput(22); aa.qput(33);
bb.qput(44);
cout<
cout<
}
【參考答案】
(1)bl=el=0;
cout<<"queue initialized\n";
(2)if(bl==100)
(3)if(el==bl)
【試題解析】
主要考查對于具體的一個隊列類的掌握,對列是一種特殊的存儲結構,應使用先進先出原則。題目中bl和el分別指向隊列的開頭和結尾,其中(2)是隊列的標準插入操作,(3)是隊列的標準的刪除操作,注意它們的操作方式和先判斷后操作的原則。
【計算機二級C++上機模擬試題及答案】相關文章:
計算機二級C++模擬試題及答案09-22
全國計算機二級《C++》上機試題及答案08-15
2016年計算機二級C++上機模擬試題06-05
計算機二級《C++》上機考前沖刺試題06-25
計算機二級《Java》上機試題及答案11-01
計算機二級VB上機試題及答案09-09