2015下半年計算機二級C++考前模擬試題及答案(二)
一、填空題
1.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【1】。
【參考答案】
【1】存儲結(jié)構(gòu)
2.耦合和內(nèi)聚是評價模塊獨立性的兩個主要標準,其中【2】反映了模塊內(nèi)各成分之間的聯(lián)系。
【參考答案】
【2】內(nèi)聚
3.數(shù)據(jù)庫設(shè)計分為以下6個設(shè)計階段:需求分析階段、【3】、邏輯設(shè)計階段、物理設(shè)計階段、實施階段、運行和維護階段。
【參考答案】
【3】數(shù)據(jù)庫概念設(shè)計階段
4.面向?qū)ο蟮哪P椭校罨镜母拍钍菍ο蠛汀?】。
【參考答案】
【4】類
5.數(shù)據(jù)模型按不同應(yīng)用層次分成3種類型,它們是概念數(shù)據(jù)模型、【5】和物理數(shù)據(jù)模型。
【參考答案】
【5】邏輯數(shù)據(jù)模型
6.開發(fā)一個C++語言程序的步驟通常包括編輯、【6】、鏈接、運行和調(diào)試。
【參考答案】
【6】編譯
7.下面程序的輸出結(jié)果為【7】。
#include
void main()
{
int num=0,i=8;
do{
i--;
num++;
}while(--i);
cout<
}
【參考答案】
【7】-4
8.下面程序的運行結(jié)果為【8】。
#include
void fun(int x=0,int y=0)
{cout<
void main()
{fun(5);}
【參考答案】
【8】50
9.C++語言支持的兩種多態(tài)性分別是編譯時的多態(tài)性和【9】的多態(tài)性。
【參考答案】
【9】運行時
10.cout.put(′A′);,還可以表示為【10】。
【參考答案】
【10】cout<<′A′;
11.將以下程序?qū)懗扇窟\算表達式是【11】。
if(a>b)max=a;
else max=b;
【參考答案】
【11】max=(a>b)?a:b;
12.下面程序的功能是將字符數(shù)組a中下標值為偶數(shù)的元素從小到大排列,其他元素不變,請?zhí)羁铡?/p>
#include
#include
void main()
{ char a[]=″clanguage″,t;
int i,j,k;
k=strlen(a);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j<=k;【12】)
if(【13】)
{ t=a[i];a[i]=a[j];a[j]=t;}
cout<
cout<
【參考答案】
【12】j+=2 【13】a[i]>=a[j]或a[i]>a[j]
13.請定義一個函數(shù)名為A,返回值為int,沒有參數(shù)的純虛函數(shù)的定義是【14】。
【參考答案】
【14】virtual int A()=0;
14.假設(shè)fin是一個文件流對象,則關(guān)閉文件的語句是【15】。
【參考答案】
【15】fin
上機部分
一、改錯題
使用VC6打開考生文件夾下的工程kt5_1,此工程包含一個源程序文件kt5_1.cpp,但該程序運行有問題,請改正程序中的錯誤,使程序的輸出結(jié)果如下:
(1,2)
5,6
(6,9)
源程序文件kt5_1.cpp清單如下:
#include
classA{
public:
A(inti,intj){a=i;b=j;}
/****************found*******************/
voidMove(intx,inty){a+=x;b+=y}
voidShow(){cout<<"("<
private:
inta,b;
};
classB:privateA
{
public:
/****************found*******************/
B(inti,intj,intk,intl):(i,j){x=k;y=l;}
voidShow(){cout<
voidfun(){Move(3,5);}
/****************found*******************/
voidf1(){Show();}
private:
intx,y;
};
voidmain()
{
Ae(1,2);
e.Show();
Bd(3,4,5,6);
d.fun();
d.Show();
d.f1();
}
【參考答案】
(1)將void Move( int x, int y) {a+=x;b+=y}
改為:void Move( int x, int y) {a+=x;b+=y;}
(2)將B(int i,int j,int k,int l):(i,j) {x=k;y=l;}
改為:B(int i,int j,int k,int l):A(i,j) {x=k;y=l;}
(3)將void f1(){Show();}
改為:void f1(){A::Show();}
【試題解析】
(1)主要考查對表達式定義規(guī)則的掌握,此處缺少一個“;”,任何一個表達式都應(yīng)該以分號作為結(jié)束標志;
(2)主要考查對派生類構(gòu)造函數(shù)定義的掌握,參數(shù)列表中基類的成員應(yīng)使用基類構(gòu)造函數(shù)初始化,因此必須向基類傳遞參數(shù),傳遞時直接使用基類名;
(3)主要考查對基類函數(shù)調(diào)用方法的掌握,為了調(diào)用基類的函數(shù)應(yīng)該使用作用域符“::”以限定訪問的位置。
二、簡單應(yīng)用題
請編寫一個函數(shù)intpattern_index(charsubstr[],charstr[]),該函數(shù)執(zhí)行含通配符"?"的字符串的查找時,該通配符可以與任一個字符匹配成功。當子串substr在str中匹配查找成功時,返回子串substr在str中的位置,否則返回值為0。要求使用for循環(huán)實現(xiàn)。輸出結(jié)果如下:
子串起始位置:5
注意:部分源程序已存在文件kt5_2.cpp中。
請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)pattern_index的花括號中填寫若干語句。
文件kt5_2.cpp的內(nèi)容如下:
#include
intpattern_index(charsubstr[],charstr[])
{
}
voidmain()
{
char*substring,*string;
intsame;
substring="???gram";
string="thisprogramreturnindexofsubstring";
same=pattern_index(substring,string);
if(same)
cout<<"子串起始位置:"<
else
cout<<"匹配不成功"<
}
【參考答案】
int pattern_index(char substr[],char str[])
{int i,j,k;
for(i=0;str[i];i++)
for(j=i,k=0;(str[j]==substr[k])||(substr[k]=='?');j++,k++)
if(!substr[k+1])
return(i);
return(0);}
【試題解析】
本題主要考查使用for循環(huán)和一維數(shù)組的能力。對于復(fù)雜查找,往往使用for的多重循環(huán)。
三、綜合應(yīng)用題
使用VC6打開考生文件夾下的工程kt5_3,此工程包含一個源程序文件kt5_3.cpp,其中定義了用于表示復(fù)數(shù)的類comp,但類comp的定義并不完整。請按要求完成下列操作,將類comp的定義補充完整。
(1)定義comp的構(gòu)造函數(shù),函數(shù)含參數(shù)x和y,它們都是int型的數(shù)據(jù),默認值都為0,請使用參數(shù)列表的形式分別將類數(shù)據(jù)成員a和b初始化x和y的值。請在注釋“//**1**”之后添加適當?shù)恼Z句。
(2)完成類comp的成員函數(shù)input(intx,inty)的定義,將int型的參數(shù)x和y分別賦值給數(shù)據(jù)成員a和b,請在注釋“//**2**”之后添加適當?shù)恼Z句;
(3)完成類comp的友元函數(shù)friendcompplus(comp&x,comp&y)的定義,該函數(shù)首先要定義一個comp類的對象c,然后將參數(shù)x和y的數(shù)據(jù)成員a與b分別相加并分別賦值給c的成員a和b,最后返回c的值,請在注釋“//**3**”之后添加適當?shù)恼Z句。輸出結(jié)果如下:
10+20i
2+3i
result:12+23i
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件kt5_3.cpp清單如下:
#include
classcomp
{inta;
intb;
public:
//**1**
friendcompplus(comp&x,comp&y);
voidinput(intx,inty)
{//**2**}
voidoutput()
{cout<
compplus(comp&x,comp&y)
{//**3**
c.b=x.b+y.b;
returnc;}
voidmain()
{compx(10,20),y,z;
y.input(2,3);
z=plus(x,y);
x.output();
y.output();
cout<<"result:";
z.output();}
【參考答案】
(1)comp(int x=0,int y=0):a(x),b(y){}
(2)a=x;
b=y;
(3)comp c;
c.a=x.a+y.a;
【試題解析】
本題主要考查類的定義和友元函數(shù)定義的。
【下半年計算機二級C++考前模擬試題及答案二】相關(guān)文章:
計算機二級C++模擬試題及答案09-22
2015下半年計算機二級C++考前模擬試題及答案(三)07-23
2015下半年計算機二級C++考前模擬試題及答案(一)07-03
計算機二級c++試題及答案08-27
計算機二級考試C++考前沖刺試題10-13