一、選擇題((1)~(35)每小題2分,共70分)
下列各題A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請(qǐng)將正確選項(xiàng)涂
寫(xiě)在答題卡相應(yīng)位置上,答在試卷上不得分。
(1)下列選項(xiàng)不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的是
A)自頂向下 B)逐步求精
C)模塊化 D)可復(fù)用
(2)兩個(gè)或兩個(gè)以上模塊之間關(guān)聯(lián)的緊密程度稱(chēng)為
A)耦合度 B)內(nèi)聚度
C)復(fù)雜度 D)數(shù)據(jù)傳輸特性
(3)下列敘述中正確的是
A)軟件測(cè)試應(yīng)該由程序開(kāi)發(fā)者來(lái)完成
B)程序經(jīng)調(diào)試后一般不需要再測(cè)試
C)軟件維護(hù)只包括對(duì)程序代碼的維護(hù)
D)以上三種說(shuō)法都不對(duì)
(4)按照“后進(jìn)先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是
A)隊(duì)列 B)棧
C)雙向鏈表 D)二叉樹(shù)
(5)下列敘述中正確的是
A)線(xiàn)性鏈表是線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
B)棧與隊(duì)列是非線(xiàn)性結(jié)構(gòu)
C)雙向鏈表是非線(xiàn)性結(jié)構(gòu)
D)只有根結(jié)點(diǎn)的二叉樹(shù)是線(xiàn)性結(jié)構(gòu)
(6)對(duì)如下二叉樹(shù)
進(jìn)行后序遍歷的結(jié)果為
A)ABCDEF B)DBEAFC
C)ABDECF D)DEBFCA
(7)在深度為7的滿(mǎn)二叉樹(shù)中,葉子結(jié)點(diǎn)的個(gè)數(shù)為
A)32 B)31 C)64 D)63
(8)“商品”與“顧客”兩個(gè)實(shí)體集之間的聯(lián)系一般是
A)一對(duì)一 B)一對(duì)多
C)多對(duì)一 D)多對(duì)多
(9)在E-R圖中,用來(lái)表示實(shí)體的圖形是
A)矩形 B)橢圓形 C)菱形 D)三角形
(10)數(shù)據(jù)庫(kù)DB、數(shù)據(jù)庫(kù)系統(tǒng)DBS、數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS之間的關(guān)系是
A)DB包含DBS和DBMS B)DBMS包含DB和DBS
C) DBS包含DB和DBMS D)沒(méi)有任何關(guān)系
(11)下列關(guān)于C++函數(shù)的說(shuō)明中,正確的是
A)內(nèi)聯(lián)函數(shù)就是定義在另一個(gè)函數(shù)體內(nèi)部的函數(shù)
B)函數(shù)體的最后一條語(yǔ)句必須是return語(yǔ)句
C)標(biāo)準(zhǔn)C++要求在調(diào)用一個(gè)函數(shù)之前,必須先聲明其原型
D)編譯器會(huì)根據(jù)函數(shù)的返回值類(lèi)型和參數(shù)表來(lái)區(qū)分函數(shù)的不同重載形式
(12)由于常對(duì)象不能被更新,因此
A)通過(guò)常對(duì)象只能調(diào)用它的常成員函數(shù)
B)通過(guò)常對(duì)象只能調(diào)用靜態(tài)成員函數(shù)
C)常對(duì)象的成員都是常成員
D)通過(guò)常對(duì)象可以調(diào)用任何不改變對(duì)象值的成員函數(shù)
(13)下列關(guān)于虛函數(shù)的說(shuō)明中,正確的是
A)從虛基類(lèi)繼承的函數(shù)都是虛函數(shù) B)虛函數(shù)不得是靜態(tài)成員函數(shù)
C)只能通過(guò)指針或引用調(diào)用虛函數(shù) D)抽象類(lèi)中的成員函數(shù)都是虛函數(shù)
(14)運(yùn)算符重載是對(duì)已有的運(yùn)算符賦予多重含義,因此
A)可以對(duì)基本類(lèi)型(如int類(lèi)型)的數(shù)據(jù),重新定義“+”運(yùn)算符的含義
B)可以改變一個(gè)已有運(yùn)算符的優(yōu)先級(jí)和操作數(shù)個(gè)數(shù)
C)只能重載C++中已經(jīng)有的運(yùn)算符,不能定義新運(yùn)算符
D)C++中已經(jīng)有的所有運(yùn)算符都可以重載
(15)模板對(duì)類(lèi)型的參數(shù)化提供了很好的支持,因此
A)類(lèi)模板的主要作用是生成抽象類(lèi)
B)類(lèi)模板實(shí)例化時(shí),編譯器將根據(jù)給出的模板實(shí)參生成一個(gè)類(lèi)
C)在類(lèi)模板中的數(shù)據(jù)成員都具有同樣類(lèi)型
D)類(lèi)模板中的成員函數(shù)都沒(méi)有返回值
(16)下列關(guān)于C++流的說(shuō)明中,正確的是
A)與鍵盤(pán)、屏幕、打印機(jī)和通信端口的交互都可以通過(guò)流類(lèi)來(lái)實(shí)現(xiàn)
B)從流中獲取數(shù)據(jù)的操作稱(chēng)為插入操作,向流中添加數(shù)據(jù)的操作稱(chēng)為提取操作
C)cin是一個(gè)預(yù)定義的輸入流類(lèi)
D)輸出流有一個(gè)名為open的成員函數(shù),其作用是生成一個(gè)新的流對(duì)象
(17)下列符號(hào)中可以用作C++標(biāo)識(shí)符的是
A)_radius B)foo~bar C)else D)3room
(18)下列語(yǔ)句中,錯(cuò)誤的是
A)const int buffer=256; B)const int temp;
C)const double *point; D)const double *rt =new double(5.5);
(19)有如下程序:
int x=3;
do{
x -= 2;
cout<
}while(!(--x));
執(zhí)行這個(gè)程序的輸出結(jié)果是
A) 1 B) 3 0 C) l-2 D)死循環(huán)
(20)有如下程序:
#include
using namespace std;
int main()
{
int *p;
*p = 9;
cout<<"The value at p:"<<*p;
return 0;
}
編譯運(yùn)行程序?qū)⒊霈F(xiàn)的情況是
A)夠編譯時(shí)出現(xiàn)語(yǔ)法錯(cuò)誤,不能生成可執(zhí)行文件
B)運(yùn)行時(shí)一定輸出:The value at p: 9
C)運(yùn)行時(shí)一定輸出:The value at p: *9
D)運(yùn)行時(shí)有可能出錯(cuò)
(21)有如下程序:
#include
using namespace std;
int main()
{
void function(double val);
double val;
function(val);
cout<
return 0;
}
void function(double val)
{
val = 3;
}
編譯運(yùn)行這個(gè)程序?qū)⒊霈F(xiàn)的情況是
A)編譯出錯(cuò),無(wú)法運(yùn)行 B)輸出:3
C)輸出:3.0 D)輸出一個(gè)不確定的數(shù)
(22)有如下類(lèi)定義:
class AA
{
int a;
public:
int getRef() const{return &a;} //①
int getvalue() const{return a;} //②
void set(int n) const{a=n;} //③
friend void show(AA aa) const {cout< //④
};
其中的四個(gè)函數(shù)定義中正確的是
A)① B)② C)③ D)④
(23)有如下程序:
#include +
using namespace std;
#include
using namespace std;
class Base
{
public:
void fun(){cout<<"Base::fun"<
};
class Derived:public Base
{
public:
void fun()
{
cout<<"Derived::fun"<
}
};
int main()
{
Derived d;
d.fun();
return 0;
}
已知其執(zhí)行后的輸出結(jié)果為:
Base::fun
Derived::fun
則程序中下劃線(xiàn)處應(yīng)填入的語(yǔ)句是
A)Base.fun(); B)Base::fun() C)Base->fun() D)fun();
(24)下面是重載為非成員函數(shù)的運(yùn)算符函數(shù)原型,其中錯(cuò)誤的是
A)Fraction operator + (Fraction, Fraction);
B)Fraction operator - (Fraction);
C)Fraction& operator = (Fraction&, Fraction);
D)Fraction& operator += (Fraction&, Fraction);
(25)有如下函數(shù)模板:
template
T cast(U u){return u;}
其功能是將U類(lèi)型數(shù)據(jù)轉(zhuǎn)換為T(mén)類(lèi)型數(shù)據(jù)。已知i為int型變量,下列對(duì)模板函數(shù)cast的調(diào)用中正確的是
A)cast(i); B)cast<>(i);
C)cast(i); D)cast (i);
(26)若磁盤(pán)上已存在某個(gè)文本文件,其全路徑文件名為d:\ncre\test.txt,下列語(yǔ)句中不 能打開(kāi)該文件的是
A)ifstream file("d:\ncre\test.txt");
B)ifstream file("d:\ncre\test.txt");
C)ifstream file; file.open("d:\ncre\test.txt");
D)ifstream* pFile=new ifstream("d:\ncre\test.txt");
(27)有如下類(lèi)定義:
class Foo
{
public:
Foo(int v):value(v){} //①
~Foo(){} //②
private:
Foo(){} //③
int value = 0; //④
};
其中存在語(yǔ)法錯(cuò)誤的行是
A)① B)② C)③ D)④
(28)有如下類(lèi)定義:
class Point
{
int x_, y_;
public:
Point():x_(0), y_(0){}
Point(int x, int y = 0):x_(x),y_(y){}
};
若執(zhí)行語(yǔ)句
Point a(2), b[3], *c[4];
則Point類(lèi)的構(gòu)造函數(shù)被調(diào)用的次數(shù)是
A)2次 B)3次 C)4次 D)5次
(29)有如下類(lèi)定義:
class Test
{
public:
Test(){ a = 0; c = 0;} //①
int f(int a)const{this->a = a;} //②
static int g(){return a;} //③
void h(int b){Test::b = b;}; //④
private:
int a;
static int b;
const int c;
};
int Test::b = 0;
在標(biāo)注號(hào)碼的行中,能被正確編譯的是
A)① B)② C)③ D)④
(30)有如下程序:
#include
using namespace std;
class A
{
public:
A(){cout<<"A";}
~A(){cout<<"~A";}
};
class B:public A
{
A* p;
public:
B(){cout<<"B"; p = new A();}
~B(){cout<<"~B"; delete p;}
};
int main()
{
B obj;
return 0;
}
執(zhí)行這個(gè)程序的輸出結(jié)果是
A)BAA~A~B~A B)ABA~B~A~A
C)BAA~B~A~A D)ABA~A~B~A
(31)有如下程序:
#include
using namespace std;
class Base
{
private:
void funl() const{cout<<"funl";}
protected:
void fun2() const{cout<<"fun2";}
public:
void fun3() const{cout<<"fun3";}
};
class Derived:protected Base
{
public:
void fun4() const{cout<<"fun4";}
};
int main()
{
Derived obj;
obj.funl(); //①
obj.fun2(); //②
obj.fun3(); //③
obj.fun4(); //④
return 0;
}
其中有語(yǔ)法錯(cuò)誤的語(yǔ)句是
A)①②③④ B)①②③ C)②③④ D)①④
(32)有如下程序:
#include
using namespace std;
class Base
{
public:
void funl(){cout<<"Base\n";}
virtual void fun2(){cout<<"Base\n";}
};
class Derived:public Base
{
public:
void funl(){cout<<"Derived\n";}
void fun2(){cout<<"Derived\n";}
};
void f(Base &b){b.funl();b.fun2();}&, lt;, /P>
int main()
{
Derived obj;
f(obj);
return 0;
}
執(zhí)行這個(gè)程序的輸出結(jié)果是
A)Base B)Base C)Derived D)Derived
Base Derived Base Derived
(33)有如下程序:
#include
using namespace std;
class Complex
{
double re, im;
public:
Complex(double r, double i):re(r), im(i){}
double real() const{return re;}
double image() const{return im;}
Complex& operator +=(Complex a)
{
re += a.re;
im += a.im;
return *this;
}
};
ostream &operator<<(ostream& s,const Complex& z)
{
return s<<'('<
}
int main()
{
Complex x(1, -2), y(2, 3);
cout<<(x += y)<
return 0;
}
執(zhí)行這個(gè)程序的輸出結(jié)果是
A)(1, -2) B)(2, 3) C)(3, 5) D)(3, 1)
(34)有如下程序:
#include
#include
using namespace std;
int main()
{
cout.fill('*');
cout<
return 0;
}
執(zhí)行這個(gè)程序的輸出結(jié)果是
A)123*OK B)123*OK** C)*123OK D)*123**OK
(35)有如下類(lèi)聲明:
class SAMPLE
{
int n;
public:
SAMPLE (int i = 0): n(i){}
void setvalue(int n0);
};
下列關(guān)于setvalue成員函數(shù)的實(shí)現(xiàn)中,正確的是
A)SAMPLE::setvalue(int n0){n = n0;}
B)void SAMPLE::setvalue(int n0){n = n0;}
C)void setvalue(int n0){n = n0;}
D)setvalue(int n0){n = n0;}
二、填空題(每空2分,共30分)
請(qǐng)將每一個(gè)空的正確答案寫(xiě)在答題卡【1】~【15】序號(hào)的橫線(xiàn)上,答在試卷上不得分。
(1)對(duì)長(zhǎng)度為10的線(xiàn)性表進(jìn)行冒泡排序,最壞情況下需要比較的次數(shù)為 【1】 。
(2)在面向?qū)ο蠓椒ㄖ校?【2】 描述的是具有相似屬性與操作的一組對(duì)象。
(3)在關(guān)系模型中,把數(shù)據(jù)看成是二維表,每一個(gè)二維表稱(chēng)為一個(gè) 【3】 。
(4)程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中 【4】 是指不執(zhí)行程序,而只是對(duì)程序 文本進(jìn)行檢查,通過(guò)閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。
(5)數(shù)據(jù)獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)改變時(shí),其邏輯結(jié)構(gòu) 可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱(chēng)為 【5】 。
(6)有一種只在循環(huán)語(yǔ)句或switch語(yǔ)句中使用的流程控制語(yǔ)句,表示該語(yǔ)句的關(guān)鍵字是 【6】 。
(7)程序中有如下語(yǔ)句
for(int i = 0; i<5; i++)cout<<*(p + i)<<",";
能夠依次輸出int型一維數(shù)組DATA的前5個(gè)元素。由此可知,變量p的定義及初始 化語(yǔ)句是 【7】 。
(8)若下面程序運(yùn)行時(shí)輸出結(jié)果為
1, A, 10.1
2, B, 3.5
請(qǐng)將程序補(bǔ)充完整。,
#include
using namespace std;
int main()
{
void test(int, char,double 【8】 );
test(1,'A',10.1);
test(2,'B');
return 0;
}
void test(int a, char b, double c)
{
cout<
}
(9)有如下類(lèi)聲明:
class MyClass
{
int i;
private: int j;
protected:int k;
public:int m, n;
};
其中,私有成員的數(shù)量為 【9】 。
(10)有如下程序:
#include
using namespace std;
class Con
{
char ID;
public:
Con():ID('A'){cout<<1;}
Con(char ID):ID(ID){cout<<2;}
Con(Con& c):ID(c.getID()){cout<<3;}
char getID() const{return ID;}
};
void show(Con c){cout<
int main()
{
Con c1;
show(c1);
Con c2('B');
show(c2);
return 0;
}
執(zhí)行上面程序的輸出是 【10】 。
(11)有如下程序:
#include
using namespace std;
class ONE
{
public:
virtual void f(){cout<<"l";}
};
class TWO:public ONE
{
public:
TWO(){cout<<"2";}
};
class THREE:public TWO
{
public:
virtual void f(){TWO::f(); cout<<"3";}
};
int main()
{
ONE aa, *p;
TWO bb;
THREE cc;
p = &cc;
p->f();
return 0;
}
執(zhí)行上面程序的輸出是 【11】 。
(12)有如下程序:
#include
using namespace std;
class PARENT
{
public:
PARENT(){cout<<"PARENT";}
};
class SON:public PARENT
{
public:
SON(){cout<<"SON";}
};
int main()
{
SON son;
PARENT *p;
p = &son;
return 0;
}
執(zhí)行上面程序的輸出是 【12】 。
(13)若以非成員函數(shù)形式,為類(lèi)Bounce重載“!”運(yùn)算符,其操作結(jié)果為一bool型數(shù)據(jù),則該運(yùn)算符重載函數(shù)的原型是 【13】 。
(14)下面是復(fù)數(shù)類(lèi)complex的定義,其中重載的運(yùn)算符“+”的功能是返回一個(gè)新的復(fù) 數(shù)對(duì)象,其實(shí)部等于兩個(gè)操作對(duì)象實(shí)部之和,其虛部等于兩個(gè)操作對(duì)象虛部之和;請(qǐng)補(bǔ)充完整:
class complex
{
double real; //實(shí)部
double imag; //虛部
public:
complex(double r,double i):real(r),imag(i){}
complex operator+(complex a)
{
return complex( 【14】 );
}
};
(15)已知一個(gè)函數(shù)模板定義為
template T1, typename T2>
T1 FUN(T2 n) {return n * 5.0;}
若要求以int型數(shù)據(jù)7為函數(shù)實(shí)參調(diào)用該模板函數(shù),并返回一個(gè)double型數(shù)據(jù),則該 調(diào)用應(yīng)表示為 【15】 。
下列各題A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請(qǐng)將正確選項(xiàng)涂
寫(xiě)在答題卡相應(yīng)位置上,答在試卷上不得分。
(1)下列選項(xiàng)不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的是
A)自頂向下 B)逐步求精
C)模塊化 D)可復(fù)用
(2)兩個(gè)或兩個(gè)以上模塊之間關(guān)聯(lián)的緊密程度稱(chēng)為
A)耦合度 B)內(nèi)聚度
C)復(fù)雜度 D)數(shù)據(jù)傳輸特性
(3)下列敘述中正確的是
A)軟件測(cè)試應(yīng)該由程序開(kāi)發(fā)者來(lái)完成
B)程序經(jīng)調(diào)試后一般不需要再測(cè)試
C)軟件維護(hù)只包括對(duì)程序代碼的維護(hù)
D)以上三種說(shuō)法都不對(duì)
(4)按照“后進(jìn)先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是
A)隊(duì)列 B)棧
C)雙向鏈表 D)二叉樹(shù)
(5)下列敘述中正確的是
A)線(xiàn)性鏈表是線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
B)棧與隊(duì)列是非線(xiàn)性結(jié)構(gòu)
C)雙向鏈表是非線(xiàn)性結(jié)構(gòu)
D)只有根結(jié)點(diǎn)的二叉樹(shù)是線(xiàn)性結(jié)構(gòu)
(6)對(duì)如下二叉樹(shù)
進(jìn)行后序遍歷的結(jié)果為
A)ABCDEF B)DBEAFC
C)ABDECF D)DEBFCA
(7)在深度為7的滿(mǎn)二叉樹(shù)中,葉子結(jié)點(diǎn)的個(gè)數(shù)為
A)32 B)31 C)64 D)63
(8)“商品”與“顧客”兩個(gè)實(shí)體集之間的聯(lián)系一般是
A)一對(duì)一 B)一對(duì)多
C)多對(duì)一 D)多對(duì)多
(9)在E-R圖中,用來(lái)表示實(shí)體的圖形是
A)矩形 B)橢圓形 C)菱形 D)三角形
(10)數(shù)據(jù)庫(kù)DB、數(shù)據(jù)庫(kù)系統(tǒng)DBS、數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS之間的關(guān)系是
A)DB包含DBS和DBMS B)DBMS包含DB和DBS
C) DBS包含DB和DBMS D)沒(méi)有任何關(guān)系
(11)下列關(guān)于C++函數(shù)的說(shuō)明中,正確的是
A)內(nèi)聯(lián)函數(shù)就是定義在另一個(gè)函數(shù)體內(nèi)部的函數(shù)
B)函數(shù)體的最后一條語(yǔ)句必須是return語(yǔ)句
C)標(biāo)準(zhǔn)C++要求在調(diào)用一個(gè)函數(shù)之前,必須先聲明其原型
D)編譯器會(huì)根據(jù)函數(shù)的返回值類(lèi)型和參數(shù)表來(lái)區(qū)分函數(shù)的不同重載形式
(12)由于常對(duì)象不能被更新,因此
A)通過(guò)常對(duì)象只能調(diào)用它的常成員函數(shù)
B)通過(guò)常對(duì)象只能調(diào)用靜態(tài)成員函數(shù)
C)常對(duì)象的成員都是常成員
D)通過(guò)常對(duì)象可以調(diào)用任何不改變對(duì)象值的成員函數(shù)
(13)下列關(guān)于虛函數(shù)的說(shuō)明中,正確的是
A)從虛基類(lèi)繼承的函數(shù)都是虛函數(shù) B)虛函數(shù)不得是靜態(tài)成員函數(shù)
C)只能通過(guò)指針或引用調(diào)用虛函數(shù) D)抽象類(lèi)中的成員函數(shù)都是虛函數(shù)
(14)運(yùn)算符重載是對(duì)已有的運(yùn)算符賦予多重含義,因此
A)可以對(duì)基本類(lèi)型(如int類(lèi)型)的數(shù)據(jù),重新定義“+”運(yùn)算符的含義
B)可以改變一個(gè)已有運(yùn)算符的優(yōu)先級(jí)和操作數(shù)個(gè)數(shù)
C)只能重載C++中已經(jīng)有的運(yùn)算符,不能定義新運(yùn)算符
D)C++中已經(jīng)有的所有運(yùn)算符都可以重載
(15)模板對(duì)類(lèi)型的參數(shù)化提供了很好的支持,因此
A)類(lèi)模板的主要作用是生成抽象類(lèi)
B)類(lèi)模板實(shí)例化時(shí),編譯器將根據(jù)給出的模板實(shí)參生成一個(gè)類(lèi)
C)在類(lèi)模板中的數(shù)據(jù)成員都具有同樣類(lèi)型
D)類(lèi)模板中的成員函數(shù)都沒(méi)有返回值
(16)下列關(guān)于C++流的說(shuō)明中,正確的是
A)與鍵盤(pán)、屏幕、打印機(jī)和通信端口的交互都可以通過(guò)流類(lèi)來(lái)實(shí)現(xiàn)
B)從流中獲取數(shù)據(jù)的操作稱(chēng)為插入操作,向流中添加數(shù)據(jù)的操作稱(chēng)為提取操作
C)cin是一個(gè)預(yù)定義的輸入流類(lèi)
D)輸出流有一個(gè)名為open的成員函數(shù),其作用是生成一個(gè)新的流對(duì)象
(17)下列符號(hào)中可以用作C++標(biāo)識(shí)符的是
A)_radius B)foo~bar C)else D)3room
(18)下列語(yǔ)句中,錯(cuò)誤的是
A)const int buffer=256; B)const int temp;
C)const double *point; D)const double *rt =new double(5.5);
(19)有如下程序:
int x=3;
do{
x -= 2;
cout<
}while(!(--x));
執(zhí)行這個(gè)程序的輸出結(jié)果是
A) 1 B) 3 0 C) l-2 D)死循環(huán)
(20)有如下程序:
#include
using namespace std;
int main()
{
int *p;
*p = 9;
cout<<"The value at p:"<<*p;
return 0;
}
編譯運(yùn)行程序?qū)⒊霈F(xiàn)的情況是
A)夠編譯時(shí)出現(xiàn)語(yǔ)法錯(cuò)誤,不能生成可執(zhí)行文件
B)運(yùn)行時(shí)一定輸出:The value at p: 9
C)運(yùn)行時(shí)一定輸出:The value at p: *9
D)運(yùn)行時(shí)有可能出錯(cuò)
(21)有如下程序:
#include
using namespace std;
int main()
{
void function(double val);
double val;
function(val);
cout<
return 0;
}
void function(double val)
{
val = 3;
}
編譯運(yùn)行這個(gè)程序?qū)⒊霈F(xiàn)的情況是
A)編譯出錯(cuò),無(wú)法運(yùn)行 B)輸出:3
C)輸出:3.0 D)輸出一個(gè)不確定的數(shù)
(22)有如下類(lèi)定義:
class AA
{
int a;
public:
int getRef() const{return &a;} //①
int getvalue() const{return a;} //②
void set(int n) const{a=n;} //③
friend void show(AA aa) const {cout< //④
};
其中的四個(gè)函數(shù)定義中正確的是
A)① B)② C)③ D)④
(23)有如下程序:
#include +
using namespace std;
#include
using namespace std;
class Base
{
public:
void fun(){cout<<"Base::fun"<
};
class Derived:public Base
{
public:
void fun()
{
cout<<"Derived::fun"<
}
};
int main()
{
Derived d;
d.fun();
return 0;
}
已知其執(zhí)行后的輸出結(jié)果為:
Base::fun
Derived::fun
則程序中下劃線(xiàn)處應(yīng)填入的語(yǔ)句是
A)Base.fun(); B)Base::fun() C)Base->fun() D)fun();
(24)下面是重載為非成員函數(shù)的運(yùn)算符函數(shù)原型,其中錯(cuò)誤的是
A)Fraction operator + (Fraction, Fraction);
B)Fraction operator - (Fraction);
C)Fraction& operator = (Fraction&, Fraction);
D)Fraction& operator += (Fraction&, Fraction);
(25)有如下函數(shù)模板:
template
T cast(U u){return u;}
其功能是將U類(lèi)型數(shù)據(jù)轉(zhuǎn)換為T(mén)類(lèi)型數(shù)據(jù)。已知i為int型變量,下列對(duì)模板函數(shù)cast的調(diào)用中正確的是
A)cast(i); B)cast<>(i);
C)cast(i); D)cast (i);
(26)若磁盤(pán)上已存在某個(gè)文本文件,其全路徑文件名為d:\ncre\test.txt,下列語(yǔ)句中不 能打開(kāi)該文件的是
A)ifstream file("d:\ncre\test.txt");
B)ifstream file("d:\ncre\test.txt");
C)ifstream file; file.open("d:\ncre\test.txt");
D)ifstream* pFile=new ifstream("d:\ncre\test.txt");
(27)有如下類(lèi)定義:
class Foo
{
public:
Foo(int v):value(v){} //①
~Foo(){} //②
private:
Foo(){} //③
int value = 0; //④
};
其中存在語(yǔ)法錯(cuò)誤的行是
A)① B)② C)③ D)④
(28)有如下類(lèi)定義:
class Point
{
int x_, y_;
public:
Point():x_(0), y_(0){}
Point(int x, int y = 0):x_(x),y_(y){}
};
若執(zhí)行語(yǔ)句
Point a(2), b[3], *c[4];
則Point類(lèi)的構(gòu)造函數(shù)被調(diào)用的次數(shù)是
A)2次 B)3次 C)4次 D)5次
(29)有如下類(lèi)定義:
class Test
{
public:
Test(){ a = 0; c = 0;} //①
int f(int a)const{this->a = a;} //②
static int g(){return a;} //③
void h(int b){Test::b = b;}; //④
private:
int a;
static int b;
const int c;
};
int Test::b = 0;
在標(biāo)注號(hào)碼的行中,能被正確編譯的是
A)① B)② C)③ D)④
(30)有如下程序:
#include
using namespace std;
class A
{
public:
A(){cout<<"A";}
~A(){cout<<"~A";}
};
class B:public A
{
A* p;
public:
B(){cout<<"B"; p = new A();}
~B(){cout<<"~B"; delete p;}
};
int main()
{
B obj;
return 0;
}
執(zhí)行這個(gè)程序的輸出結(jié)果是
A)BAA~A~B~A B)ABA~B~A~A
C)BAA~B~A~A D)ABA~A~B~A
(31)有如下程序:
#include
using namespace std;
class Base
{
private:
void funl() const{cout<<"funl";}
protected:
void fun2() const{cout<<"fun2";}
public:
void fun3() const{cout<<"fun3";}
};
class Derived:protected Base
{
public:
void fun4() const{cout<<"fun4";}
};
int main()
{
Derived obj;
obj.funl(); //①
obj.fun2(); //②
obj.fun3(); //③
obj.fun4(); //④
return 0;
}
其中有語(yǔ)法錯(cuò)誤的語(yǔ)句是
A)①②③④ B)①②③ C)②③④ D)①④
(32)有如下程序:
#include
using namespace std;
class Base
{
public:
void funl(){cout<<"Base\n";}
virtual void fun2(){cout<<"Base\n";}
};
class Derived:public Base
{
public:
void funl(){cout<<"Derived\n";}
void fun2(){cout<<"Derived\n";}
};
void f(Base &b){b.funl();b.fun2();}&, lt;, /P>
int main()
{
Derived obj;
f(obj);
return 0;
}
執(zhí)行這個(gè)程序的輸出結(jié)果是
A)Base B)Base C)Derived D)Derived
Base Derived Base Derived
(33)有如下程序:
#include
using namespace std;
class Complex
{
double re, im;
public:
Complex(double r, double i):re(r), im(i){}
double real() const{return re;}
double image() const{return im;}
Complex& operator +=(Complex a)
{
re += a.re;
im += a.im;
return *this;
}
};
ostream &operator<<(ostream& s,const Complex& z)
{
return s<<'('<
}
int main()
{
Complex x(1, -2), y(2, 3);
cout<<(x += y)<
return 0;
}
執(zhí)行這個(gè)程序的輸出結(jié)果是
A)(1, -2) B)(2, 3) C)(3, 5) D)(3, 1)
(34)有如下程序:
#include
#include
using namespace std;
int main()
{
cout.fill('*');
cout<
return 0;
}
執(zhí)行這個(gè)程序的輸出結(jié)果是
A)123*OK B)123*OK** C)*123OK D)*123**OK
(35)有如下類(lèi)聲明:
class SAMPLE
{
int n;
public:
SAMPLE (int i = 0): n(i){}
void setvalue(int n0);
};
下列關(guān)于setvalue成員函數(shù)的實(shí)現(xiàn)中,正確的是
A)SAMPLE::setvalue(int n0){n = n0;}
B)void SAMPLE::setvalue(int n0){n = n0;}
C)void setvalue(int n0){n = n0;}
D)setvalue(int n0){n = n0;}
二、填空題(每空2分,共30分)
請(qǐng)將每一個(gè)空的正確答案寫(xiě)在答題卡【1】~【15】序號(hào)的橫線(xiàn)上,答在試卷上不得分。
(1)對(duì)長(zhǎng)度為10的線(xiàn)性表進(jìn)行冒泡排序,最壞情況下需要比較的次數(shù)為 【1】 。
(2)在面向?qū)ο蠓椒ㄖ校?【2】 描述的是具有相似屬性與操作的一組對(duì)象。
(3)在關(guān)系模型中,把數(shù)據(jù)看成是二維表,每一個(gè)二維表稱(chēng)為一個(gè) 【3】 。
(4)程序測(cè)試分為靜態(tài)分析和動(dòng)態(tài)測(cè)試。其中 【4】 是指不執(zhí)行程序,而只是對(duì)程序 文本進(jìn)行檢查,通過(guò)閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。
(5)數(shù)據(jù)獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)改變時(shí),其邏輯結(jié)構(gòu) 可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱(chēng)為 【5】 。
(6)有一種只在循環(huán)語(yǔ)句或switch語(yǔ)句中使用的流程控制語(yǔ)句,表示該語(yǔ)句的關(guān)鍵字是 【6】 。
(7)程序中有如下語(yǔ)句
for(int i = 0; i<5; i++)cout<<*(p + i)<<",";
能夠依次輸出int型一維數(shù)組DATA的前5個(gè)元素。由此可知,變量p的定義及初始 化語(yǔ)句是 【7】 。
(8)若下面程序運(yùn)行時(shí)輸出結(jié)果為
1, A, 10.1
2, B, 3.5
請(qǐng)將程序補(bǔ)充完整。,
#include
using namespace std;
int main()
{
void test(int, char,double 【8】 );
test(1,'A',10.1);
test(2,'B');
return 0;
}
void test(int a, char b, double c)
{
cout<
}
(9)有如下類(lèi)聲明:
class MyClass
{
int i;
private: int j;
protected:int k;
public:int m, n;
};
其中,私有成員的數(shù)量為 【9】 。
(10)有如下程序:
#include
using namespace std;
class Con
{
char ID;
public:
Con():ID('A'){cout<<1;}
Con(char ID):ID(ID){cout<<2;}
Con(Con& c):ID(c.getID()){cout<<3;}
char getID() const{return ID;}
};
void show(Con c){cout<
int main()
{
Con c1;
show(c1);
Con c2('B');
show(c2);
return 0;
}
執(zhí)行上面程序的輸出是 【10】 。
(11)有如下程序:
#include
using namespace std;
class ONE
{
public:
virtual void f(){cout<<"l";}
};
class TWO:public ONE
{
public:
TWO(){cout<<"2";}
};
class THREE:public TWO
{
public:
virtual void f(){TWO::f(); cout<<"3";}
};
int main()
{
ONE aa, *p;
TWO bb;
THREE cc;
p = &cc;
p->f();
return 0;
}
執(zhí)行上面程序的輸出是 【11】 。
(12)有如下程序:
#include
using namespace std;
class PARENT
{
public:
PARENT(){cout<<"PARENT";}
};
class SON:public PARENT
{
public:
SON(){cout<<"SON";}
};
int main()
{
SON son;
PARENT *p;
p = &son;
return 0;
}
執(zhí)行上面程序的輸出是 【12】 。
(13)若以非成員函數(shù)形式,為類(lèi)Bounce重載“!”運(yùn)算符,其操作結(jié)果為一bool型數(shù)據(jù),則該運(yùn)算符重載函數(shù)的原型是 【13】 。
(14)下面是復(fù)數(shù)類(lèi)complex的定義,其中重載的運(yùn)算符“+”的功能是返回一個(gè)新的復(fù) 數(shù)對(duì)象,其實(shí)部等于兩個(gè)操作對(duì)象實(shí)部之和,其虛部等于兩個(gè)操作對(duì)象虛部之和;請(qǐng)補(bǔ)充完整:
class complex
{
double real; //實(shí)部
double imag; //虛部
public:
complex(double r,double i):real(r),imag(i){}
complex operator+(complex a)
{
return complex( 【14】 );
}
};
(15)已知一個(gè)函數(shù)模板定義為
template T1, typename T2>
T1 FUN(T2 n) {return n * 5.0;}
若要求以int型數(shù)據(jù)7為函數(shù)實(shí)參調(diào)用該模板函數(shù),并返回一個(gè)double型數(shù)據(jù),則該 調(diào)用應(yīng)表示為 【15】 。