- 相關推薦
計算機二級《C++》上機考前沖刺試題
以下是應屆畢業生考試網小編整理的計算機二級《C++》上機考前沖刺試題,更多計算機二級考試內容請關注yjbys考試網。
一、選擇題(每小題1分,共40分)
1、一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯系是( )。
A.1:1聯系
B.1:m聯系
C.m:1聯系
D.m:n聯系
2、 Tilil程序的運行結果是( )。
#include void main()
{
int i=1:
while(i<=8)
if(++i%3 1=2)continue: else eout< }
A.25
B.36
C.258
D.369
3、下列關于線性鏈表的敘述中,正確的是( )。
A.各數據結點的存儲空間可以不連續,但它們的存儲順序與邏輯順序必須一致
B.各數據結點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續
C.進行插入與刪除時,不需要移動表中的元素
D.以上說法均不正確
4、對于一個類定義,下列敘述中錯誤的是( )。
A.如果沒有定義拷貝構造函數,編譯器將生成一個拷貝構造函數
B.如果沒有定義缺省的構造函數,編譯器一定將生成一個缺省的構造函數
C.如果沒有定義構造函數,編譯器將生成一個缺省的構造函數和一個拷貝構造函數
D.如果已經定義了構造函數和拷貝構造函數,編譯器不會生成任何構造函數
5、為了使類中的某個成員不能被類的對象通過成員操作符訪問,則不能把該成員的訪問權限定義為( )。
A.public
B.protected
C.private
D.static
6、下列關于運算符函數的描述中,錯誤的是( )。
A.運算符函數的名稱總是以operator為前綴
B.運算符函數的參數可以是對象
C.運算符函數只能定義為類的成員函數
D.在表達式中使用重載的運算符相當予調用運算符重載函數
7、 一個棧的初始狀態為空。現將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棧的順序是( )。
A.12345ABCDE
B.EDCBA54321
C.ABCDEl2345
D.5432lEDCBA
8、在數據管理技術發展的三個階段中,數據共享最好的是( )。
A.人工管理階段
B.文件系統階段
C.數據庫系統階段
D.三個階段相同
9、下面程序的運行結果為( )。
#include
void main() {
char a=’3’: switch(8)
{
case '3':cout<<”3”:
case '2':cout<<”2”;break; default:cout<<”l”;
}
}
A.3
B.321
C.31
D.32
10、數據庫設計中反映用戶對數據要求的模式是( )。
A.內模式
B.概念模式
C.外模式
D.設計模式
11、一棵二叉樹共有25個結點,其中5個是葉子結點,則度為1的結點數為( )。
A.16
B.10
C.6
D.4
12、 下列( )是C++語言的有效標識符。
A.Nol
B.N0.1
C.12345
D.int
13、 下列關于運算符重載的敘述中,錯誤的是( )。
A.有的運算符可以作為非成員函數重載
B.所有的運算符都可以通過重載而被賦予新的含義
C.不得為重載的運算符函數的參數設置默認值
D.有的運算符只能作為成員函數重載
14、 F列關于棧的敘述正確的是( )。
A.棧按“先進先出”組織數據
B.棧按“先進后出”組織數據
C.只能在棧底插入數據
D.不能刪除數據
15、 軟件生命周期中的活動不包括( )。
A.市場調研
B.需求分析
C.軟件測試
D.軟件維護
16、 下面對靜態數據成員的描述中,正確的是( )。
A.靜態數據成員是類的所有對象共享的數據
B.類的每個對象都有自己的靜態數據成員
C.類的不同對象有不同的靜態數據成員值
D.靜態數據成員不能通過類的對象調用
17、 軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是( )。
A.編譯程序
B.操作系統
C.教務管理系統
D.匯編程序
18、下面敘述中錯誤的是( )。
A.軟件測試的目的是發現錯誤并改正錯誤
B.對被調試的程序進行“錯誤定位”是程序調試的必要步驟
C.程序調試通常也稱為Debug
D.軟件測試應嚴格執行測試計劃,排除測試的隨意性
19、 層次型、網狀型和關系型數據庫劃分原則是( )。
A.己錄長度
B.文件的大小
C.聯系的復雜程度
D.數據之間的聯系方式
20、 下面程序的運行結果為( )。
#include void swap(int&a,int B. int temp;
temp=a++: a=b:
b=temp;
}
void main()
{
im a=2,b=3; swap(a,B.;
eout< }
A.2,3
B.3,2
C.2,2
D.3,3
21、 有如下程序:
#inClude using namespaCe std; Class MyClass{
publiC:
MyClass(int X):val(X){}
void Print()Const}tout<<”Const:val=”< private:
int val; };
int main(){
Const MyClass objl(10); MyClass obj2(20);
objl.Print(); obj2.Print(); retum 0;
}
執行這個程序的輸出結果是( )。
A.val=10 Const:val=20
B.Const:val=10 Const:val=20
C.Const:val=10 val=20
D.val=10 val=20
22、 一個工作人員可以使用多臺計算機,而一臺計算機可被多個人使用,則實體工作人員與實體計算機之間 的聯系是( )。
A.一對一
B.一對多
C.多對多
D.多對一
23、下列程序的運行結果是( )。
#include class Loeation{
private:
int X,Y;
public: void init(int=0,int=0);
void valueX(int val){X=val;} int valueX(){returnx;}
void valueY(int val){Y=val;} int valueY(){return Y;}};
void Location::init(int initX,int initY) {X=initX;
Y=initY4}
void main(X
{Location A,B;
A.init();
B.value X(5);
cout< B.value Y(4);
eout< }
A.5
0
6
4
B.0
0
6
4
C.5
0
6
2
D.0
0
6
2
24、 下面程序的運行結果為( )。
#include class A
static int n;
public:
A(){n=1;}
A(int num){n=hum;} void print(){cout< int A::n=2;
void main() {
A a,b(3); a.print(); b.print();
coutB.13
C.23
D.33
25、 負責數據庫中查詢操作的數據庫語言是( )。
A.數據定義語言
B.數據管理語言
C.數據操縱語言
D.數據控制語言
26、 已知枚舉類型聲明語句為:
enum COl,OR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};
則下列說法中錯誤的是( )。
A.枚舉常量YELLOW的值為1
B.枚舉常量RED的值為6
C.枚舉常量BLACK的值為10
D.枚舉常量WHITE的值為1
27、 有如下程序:
#include
using namespace std;
class Base
{
public:
void funl(){cout<<”Base\n”;}
virtual void fun2(){eout<<”Base\n”;}
};
class Derived:public Base{
public:
void funl(){eout<<”Derived、n”;}
void fura(){eout<.<”Derived\n”;}
};
void f(Base&B.}b.funl();b.ftm2();}
int main()
{
Derived obj;
f(obj);
return 0;
}
執行這個程序的輸出結果是( )。
A.Base
Base
B.Base
Derived
C.Derived
Base
D.Derived
Derived
28、有如下類聲明:
class SAMPLE
{
int n:
public:
SAMPLE(int i=0):n(i){}
void setValue(int nO);
};
下列關于9etValue成員函數的定義中,正確的是( )。
A.SAMPLE::setValue(int nO){n=n0;}
B.void SAMPLE::setValue(int胡){n=n0;
C.void setValue(int nO){n=n0;}
D.setValue(int nO){n=n0;}
29、 下列關于c++函數的說明中,正確的是( )。
A.內聯函數就是定義在另一個函數體內部的函數
B.函數體的最后一條語句必須是return語句
C.標準c++要求在調用一個函數之前,必須先聲明其原型
D.編譯器會根據函數的返回值類型和參數表來區分函數的不同重載形式
30、 有如下程序:
#inClude using namespaCe std; Class MusiC{
publiC:
void setTitle(Char*str){strCpy(title,str);} proteCted:
Char type[10]; private:
Char title[20];
Class Jazz:publiC MusiC{ publiC:
void set(Char*str){
strCpy(type,”Jazz'’);//① strCpy(title,str);//②
} }; 下列敘述中正確的是( )。
A.程序編譯正確
B.程序編譯時語句①出錯
C.程序編譯時語句②出錯
D.程序編譯時語句①和②都出錯
31、 在公有繼承的情況下,允許派生類直接訪問的基類成員包括( )。
A.公有成員
B.公有成員和保護成員
C.公有成員、保護成員和私有成員
D.保護成員
32、 有三個關系R、S和T如下:
由關系R和S通過運算得到關系T,則所使用的運算為( )。
A.笛卡爾積
B.交
C.并
D.自然連接
33、有如下類定義:
class MyClass
{
public:
private:
______________________________________
int data;
};
若要為MyClass類重載流輸入運算符“>>”,使得程序中可以“cin>>obj;”的形式改變MyClass類的對象0bj中數據成員data的值,則橫線處的聲明語句應為( )。
A.friend istream& operator>>(istream&is,MyClass&A.;
B.friend istream&operator>>(istream&is,MyClass A.;
C.istream&operator>>(istream&is,MyClass&A.;
D.istream&operator>>(istream&is,MyClass A.;
34、 有如下程序:
#inClude using namespaCe std; Class Sample{
friend long fun(Sample S); publiC:
Sample(10ng A.{x=a;} private:
long X;
}; long fun(Sample S){
if(S.x<2)return l;
return S.X*fun(Sample(s.x-1)); }
int main( ) {
int sum=0;
for(int i=0;i<6;i++) {sum+=fun(Sample(i));}
Cout< }
執行這個程序的輸出結果是( )。
A.120
B.16
C.154
D.34
35、 有如下程序:
#inClude using namespaCe std; Class Book{
publiC:
Book(Char*t=””){strCpy(title,t);}
private:
Char titlel40]; };
Class Novel:publiC Book{ publiC:
Novel(Char*t=””):Book(t){}
Char*Category( )Const{return”文學”;} };
int main( ){ Book * pb; pb=new Novel( );
Cout< return 0; }
若程序運行時輸出結果是“文學”,則橫線處缺失的語句是( )。
A.Char*Category( );
B.Char*Category( )Const;
C.virtual Char*Category( )Const;
D.virtual Char*Category( )Const=0;
36、 有如下頭變件:
int f1()
StatiCintf2( ); Class MA
publiC: intf3();
1statiC int f4();
};
在所描述的函數中,具有隱含的this指針的是( )。
A.fl
B.f2
C.B
D.f4
37、下面對靜態數據成員的描述中,正確的是( )。
A.靜態數據成員可以在類體內進行初始化
B.靜態數據成員不可以被類的對象調用
C.靜態數據成員不能受private控制符的作用
D.靜態數據成員可以直接用類名調用
38、 設int a=10,b=11,C=12;,表達式(a+B.A.2
B.0
C.-2
D.1
39、 下列說法正確的是( )。
A.內聯函數在運行時是將該函數的目標代碼插入每個調用該函數的地方
B.內聯函數在編譯時是將該函數的目標代碼插入每個調用該函數的地方
C.類的內聯函數必須在類體內定義
D.類的內聯函數必須在類體外通過加關鍵字inline定義
40、 下面對于友元函數描述正確的是( )。
A.友元函數的實現必須在類的內部定義
B.友元函數是類的成員函數
C.友元函數破壞了類的封裝性和隱藏性
D.友元函數不能訪問類的私有成員
二、基本操作題(18分)
41、請使用VC6或使用【答題】菜單打開考生文件夾projl下的工程projl,此工程中含有一個源程礙文件 projl.epp。其中位于每個注釋“//ERROR ****found****”之后的一行語句存在錯誤。請改正這些錯誤,使程序的輸出結果為:
ConstruCtor Called. The value is 10
Copy ConstruCtor Called. The value is 10
DestruCtor Called. DestruCtor Called. 注意:只修改注釋“//ERROR ****found****”的下一行語句,不要改動程序中的其他內容。
//pwjl.Cpp
#inClude ’using namespaCe std; Class MyClass{
publiC:
//ERROR**********found**********
MyClass(int i)
{value=i;Cout<<”ConstruCtor Called.” < //ERROR**********found********** MyClass(eonst MyClass P)
{
value = P.value;
eout<<”Copy ConstruCtor Called.”< }
void Print()
{Cout<<”The value is” < //ERROR**********found********* void-MyClass()
{Cout<<”DestruCtor Called.”< private:
int value;
}; int main()
{ MyChas objl
owl.Print();
MyClmss obj2(owl); obj2.Print();
retum 0;
三、簡單應用題(24分)
42、請使用VC6或使用【答題】菜單打開考生文件夾pr092下的工程pros2。此工程中包含一個程序文件main.cpp,其中有“部門”類Department和“職工”類Staff的定義,還有主函數main的定義。在主函數中定義了兩個“職工”對象,他們屬于同一部門。程序展示,當該部門改換辦公室后,這兩個人的辦公室也同時得到改變。請在程序中的橫線處填寫適當的代碼并刪除橫線,以實現上述類定義。此程序的正確輸出結果應為:
改換辦公室前:
職工號:0789姓名:張三部門:人事處辦公室:521
職工號:0513姓名:李四部門:人事處辦公室:521
改換辦公室后:
職工號:0789姓名:張三部門:人事處辦公室:311
職工號:0513姓名:李四部門:人事處辦公室:311
注意:只在橫線處填寫適當的代碼,不要改動程序中的其他內容,也不要刪除或移動“//****found****”。
#include
using namespace std;
class Department{ //“部門”類
public:
Department(const char*name,const char*office){
strcpy(this一>name,nanle);
//**********found**********
}
const char*getName()const{return name;}//返回部門名稱
//**********found**********
const char*getOffice()const{________} //返回辦公室房號
void changeOfficeTo(const char*office){ //改換為指定房號的另一個辦公室
strcpy(this一>office,office);
}
private:
char name[20];//部門名稱
char office[20];//部門所在辦公室房號
};
class staff{//“職工”類
public:
//**********found**********
Staff(const char*my—id,const char木my_name,Department&my_dept):——{
strcpy(this一>staff id,my_id);
strcpy(this一>name,my_name);
}
const char*getlD()const{return staff_id;}
const char*getName()consl{return name;}
Department getDepartment()const{return dept;} char staff=id[10];//職工號
char name[20];//姓名
Department&dept;//所在部門
}; void showStaff(Staff&staff){
cout<<”職工號:”< cout<<”姓名:”< cout<<”部門:”< cout<<”辦公室:”< int main(){
Department dept(”人事處”,”521”);
Staff Zhang(”0789”,”張三”,dept),Li(”0513”,”李四”,dept);
cout<<”改換辦公室前:”< showStaff(Zhang); showStaff(Li);
//人事處辦公室由521搬到311 //**********found********** ———————————————————————一
cout<<”改換辦公室后:”< showStaff(Zhang); showStaff(Li);
return 0; }
四、綜合應用題(18分)
43、
請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中包含了類IntegerSet和主函數main的定義。一個IntegerSet對象就是一個整數的集合,其中包含0個或多個無重復的整數;為了便于進行集合操作,這些整數按升序存放在成員數組elem的前若干單元中。成員函數add的作用是將一個元素添加到集合中(如果集合中不存在該元素),成員函數remove從集合中刪除指定的元素(如果集合中存在該元素)。請編寫成員函數remove。在main函數中給出了一組測試數據,此時程序的正確輸出結果應為:
2 3 4 5 27 28 31 66 75
2 3 4 5 6 27 28 31 56 75
2 3 4 5 6 19 27 28 31 66 75
3 4 5 6 19 27 28 31 66 75
3 4 5 6 19 27 28 31 66 75
要求:
補充編制的內容寫在“//***********333***********”與“//***********666***********”之間,不得修改程序的其他部分。
注意:程序最后將結果輸出到文件out.dat中。輸出函數writeToFile已經編譯為obj文件,并且在本程序中調用。
//IntegorSet.h
#ifndef INTEGERSET
#define INTEGERSET
#include
using namespace std;
const int MAXELEMENTS=100;
//集合最多可擁有的元素個數
class IntegerSet{
int elem[MAXELEMENTS];
//用于存放集合元素的數組
int counter; //用于記錄集合中元素個數的計數器
puhlic:
IntegerSet():counter(0){}
//創建一個空集合
IntegerSet(int data[],int size);
//利用數組提供的數據創建一個整數集合
void add(int element);
//添加一個元素到集合中
void remeve(int element);
//刪除集合中指定的元素
int getCount()const{return counter;}
//返回集合中元素的個數
int getElement(int i)const{retum elem[i];}//返回集合中指定的元素
void show()const;
};
void WriteToFile(char*);
#endif
//main.cpp
#include”IntegerSet.h”
#include
IntegerSet::IntegerSet(int data[],int size):counter(0){
for(int i=0;i add(data[i]);
}
}
void IntegerSet::add(int element){
int j;
//從后往前尋找第一個小于等于element的元素
for(j=counter;j>0;j-)
if(element>=elem[j一1])break;
//如果找到的是等于element的元素,說明要添加的元素已經存在,直接返回
if(j>0)
if(element==elem[j-1])return;
//如果找到的是小于element的元素,j就是要添加的位置
//該元素及其后面的元素依次后移,騰出插入位置
for(int k=counter;k>j;k一)
elem[k]=elem[k一1];
elem[j]=element;//將element插入到該位置
counter++; //計數器加l
}
void IntegerSet::remove(int element){
//***************333***************
//***************666***************
void IntegerSet::show()const{
for(int i=0;i cout< cout< }
int main(){
int d[]={5,28,2,4,5,3,2,75,27,66,31};
IntegerSet S(d,11);S.show();
S.add(6); s.show();
S.add(19); S.show();
S.remove(2); s.show();
S.add(4); S.show();
writeToFile(””);
return 0;
}
【計算機二級《C++》上機考前沖刺試題】相關文章:
全國計算機二級《C++》上機試題及答案08-15
2017計算機二級C++考前沖刺題及答案09-04
計算機二級Access考前沖刺試題與答案06-08
計算機二級《VB》考前沖刺試題及答案10-31
2016計算機二級《C++》上機練習題06-09
計算機二級《Java》上機試題及答案11-01
計算機二級C++模擬試題及答案09-22