2015年9月計(jì)算機(jī)二級(jí)C++練習(xí)題及答案
一、填空題
1.用樹(shù)結(jié)構(gòu)表示實(shí)體類(lèi)型及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱(chēng)為【1】。
【參考答案】
【1】層次模型
2.數(shù)據(jù)流圖的類(lèi)型有【2】和事務(wù)型。
【參考答案】
【2】變換型
3.在最壞情況下,堆排序需要比較的次數(shù)為【3】。
【參考答案】
【3】O(nlog2n)
4.軟件開(kāi)發(fā)環(huán)境是全面支持軟件開(kāi)發(fā)全過(guò)程的【4】集合。
【參考答案】
【4】軟件工具
5.冒泡排序算法在最好的情況下的元素交換次數(shù)為【5】。
【參考答案】
【5】0
6.C++語(yǔ)言標(biāo)識(shí)符是以字母或【6】開(kāi)頭的,由字母,數(shù)字和下劃線(xiàn)組成的字符串。
【參考答案】
【6】下劃線(xiàn)
7.mystrlen函數(shù)的功能是計(jì)算str所指字符串的長(zhǎng)度,并作為函數(shù)值返回,請(qǐng)?zhí)羁铡?/p>
int mystrlen(char *str)
{ int i;
for(i=0;【7】!=′\0′;i++);
return(i);}
【參考答案】
【7】*(str+i)或str[i]
8.如果一個(gè)類(lèi)中定義了成員對(duì)象,則該類(lèi)的對(duì)象和成員對(duì)象先被初始化的是【8】。
【參考答案】
【8】類(lèi)的成員對(duì)象
9.C++在重載運(yùn)算符中,如用成員函數(shù)重載一元運(yùn)算符參數(shù)表中需要【9】個(gè)參數(shù),如用友元函數(shù)重載一元運(yùn)算符參數(shù)表中需要【10】個(gè)參數(shù)。
【參考答案】
【9】0 【10】1
10. 假設(shè)int a=1,b=2;,則表達(dá)式(++a/b)*b--的值為【11】。
【參考答案】
【11】2
11.C++語(yǔ)句const char *const p=″hello″;,所定義的指針p和它所指的內(nèi)容都不能被【12】。
【參考答案】
【12】改變
12.對(duì)于下面定義的類(lèi)MyClass,請(qǐng)?jiān)诤瘮?shù)f()中添加對(duì)象成員把n的值修改為50。
class MyClass
{
public:
MyClass(int x){n=x;}
void SetNum(int nl){n=nl;}
private:
int n;
};
int f()
{
MyClass *ptr=new MyClass(45);
【13】
}
【參考答案】
【13】ptr->SetNum(50);
13.表達(dá)式operator+(x,y)還可以表示為【14】。
【參考答案】
【14】x+y
14.通過(guò)使用new和delete兩個(gè)運(yùn)算符進(jìn)行的分配為【15】存儲(chǔ)分配。
【參考答案】
【15】動(dòng)態(tài)
上機(jī)部分
一、改錯(cuò)題
使用VC6打開(kāi)考生文件夾下的工程kt4_1,此工程包含一個(gè)源程序文件kt4_1.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正程序中的錯(cuò)誤,使程序的輸出結(jié)果如下:
1:
weight:5
age:0
2:
weight:7
age:9
源程序文件kt4_1.cpp清單如下:
#include
classanimal
{
public:
/****************found*******************/
friendvoidsetvalue(animal&,int);
/****************found*******************/
viodprint();
protected:
intitsweight;
intitsage;
};
voidanimal::print()
{
cout<<"weight:"<
cout<<"age:"<
}
voidsetvalue(animal&ta,inttw)
{
ta.itsweight=tw; www.Examda.CoM
ta.itsage=0;
}
voidsetvalue(animal&ta,inttw,inttn)
{
ta.itsweight=tw;
ta.itsage=tn;
}
voidmain()
{/****************found*******************/
animalpeppy
setvalue(peppy,5);
cout<<"1:"<
peppy.print();
setvalue(peppy,7,9);
cout<<"2:"<
peppy.print();}
【參考答案】
(1)添加友元函數(shù)的聲明
friend void setvalue(animal&,int,int);
(2)將viod print();改為:void print();
(3)將animal peppy改為:animal peppy;
【試題解析】
(1)主要考查對(duì)成員函數(shù)定義規(guī)則的掌握,成員函數(shù)必須先聲明再使用,即使是友元函數(shù)也不例外;
(2)主要考查對(duì)關(guān)鍵字的掌握,空類(lèi)型應(yīng)用void;
(3)主要考查對(duì)變量定義的掌握,該處缺少“;”。
二、簡(jiǎn)單應(yīng)用題
請(qǐng)編寫(xiě)一個(gè)函數(shù)intSeqSearch(intlist[],intstart,intn,intkey),該函數(shù)從start開(kāi)始,在大小為n的數(shù)組list中查找key值,返回最先找到的key值的位置,如果沒(méi)有找到則返回-1。請(qǐng)使用for循環(huán)實(shí)現(xiàn)。
注意:部分源程序已存在文件kt4_2.cpp中。
請(qǐng)勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)SeqSearch的花括號(hào)中填寫(xiě)若干語(yǔ)句。
文件kt4_2.cpp的內(nèi)容如下:
#include
intSeqSearch(intlist[],intstart,intn,intkey)
{
}
voidmain()
{
intA[10];
intkey,count=0,pos;
cout<<"Enteralistof10integers:";
for(pos=0;pos<10;pos++)
{
cin>>A[pos];
}
cout<<"Enterakey:";
cin>>key;
pos=0;
while((pos=SeqSearch(A,pos,10,key))!=-1)
{
count++;
pos++;
}
cout<
}
【參考答案】
int SeqSearch(int list[], int start, int n, int key)
{
for(int i=start;i
{
if(list[i]==key)
{
return i;
}
}
return -1;
}
【試題解析】
本題考查的是考生使用for和if等基本控制結(jié)構(gòu)的綜合水平,查找一個(gè)數(shù)組中的指定元素并返回序號(hào)是一個(gè)基本操作,注意一維數(shù)組的實(shí)參格式。
三、綜合應(yīng)用題
使用VC6打開(kāi)考生文件夾下的工程kt4_3,此工程包含一個(gè)源程序文件kt4_3.cpp,其中定義了用于表示向量的類(lèi)vector,但類(lèi)vector的定義并不完整。請(qǐng)按要求完成下列操作,將類(lèi)vector的定義補(bǔ)充完整。
(1)補(bǔ)充類(lèi)vector的構(gòu)造函數(shù),該函數(shù)有參數(shù)x和y,它們都是int型的數(shù)據(jù),默認(rèn)值都為0。請(qǐng)使用參數(shù)列表的形式分別將類(lèi)的數(shù)據(jù)成員a和b分別初始化為參數(shù)x和y的值。請(qǐng)?jiān)谧⑨?ldquo;//**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(2)完成類(lèi)vector的成員函數(shù)input(intx,inty)的定義,將int型的參數(shù)x和y分別賦值給數(shù)據(jù)成員a和b,請(qǐng)?jiān)谧⑨?ldquo;//**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(3)完成類(lèi)vector的友元函數(shù)frienddoubleMultiply(vector&x,vector&y)的定義,先定義double型的臨時(shí)變量c,然后將參數(shù)對(duì)象x和對(duì)象y的數(shù)據(jù)成員a與b分別相乘再相加后賦值給c,最后返回c的值,將請(qǐng)?jiān)谧⑨?ldquo;//**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。輸出結(jié)果如下:
(10,20)
(2,3)
80
注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
源程序如下:
#include
classvector
{
inta;
intb;
public:
//**1**
voidinput(intx,inty)
{//**2**}
voidoutput()
{cout<<'('<
frienddoubleMultiply(vector&x,vector&y);
};
doubleMultiply(vector&x,vector&y)
{
//**3**
c=x.a*y.a+x.b*y.b;
returnc;
}
voidmain()
{
vectorx(10,20),y;
doubled;
y.input(2,3);
d=Multiply(x,y);
x.output();
y.output();
cout<
}
【參考答案】
(1)vector (int x=0,int y=0):a(x),b(y){}
(2)a=x; b=y;
(3)double c;
【試題解析】
本題主要考查類(lèi)的定義和友元函數(shù)定義,其中(1)中的參數(shù)列表形式和(3)中對(duì)象訪問(wèn)成員使用“.”操作符。
【9月計(jì)算機(jī)二級(jí)C++練習(xí)題及答案】相關(guān)文章:
2016年9月計(jì)算機(jī)二級(jí)《C++》練習(xí)題及答案03-06
2017年9月計(jì)算機(jī)二級(jí)C++強(qiáng)化練習(xí)題及答案04-28
2015年9月計(jì)算機(jī)二級(jí)C++精選練習(xí)題(附答案)12-07
2016年12月計(jì)算機(jī)二級(jí)C++練習(xí)題及答案05-30
2017年3月計(jì)算機(jī)二級(jí)C++練習(xí)題及答案04-27
2017年3月計(jì)算機(jī)二級(jí)《C++》單選練習(xí)題及答案07-24
2017年12月計(jì)算機(jī)二級(jí)C++考前練習(xí)題及答案07-20