国开11075《C++语言程序设计》期末考试历届试题及答案2020年01月(课程号:03591)

小虾米 2026-05-11 15:24:08 3 次阅读 0 分钟阅读

试卷代号:1075

国家开放大学2 0 1 9年秋季学期期末统一考试

C++语言程序设计试题

2020年1月

一、单选题(每小题2分,共40分)

1.下列实型常量中错误的是( )。

A.3. 25 B.+3. 25

C.-3. 25E+3 D.3.25e6.1

2.下列表达式中错误的是( )。

A.++x B.x-

C. (++x)一一 D.+ +x-

3.下列语句中,无意义的语句是( )。

A.k=3; B.-k;

C.k+3; D.k/=3;

4.有如下语句:

if (x>0) if(x>100) cout《“!!!”;else cout<<′!′;else

if(x<-302) cout《"???";else cout<<'?';

若x的值为-302,则执行此语句将输出( )。

A.! B.!!!

C. ? D.???

5.for语句的语法格式可表示为:

for(循环初始化;循环条件;循环参数调整)循环体

下列关于for语句的表述中,错误的是( )。

A.循环初始化中定义的变量的作用域仅限于此循环语句

B.循环条件应该是一个逻辑表达式

C.循环参数调整与循环体执行相同的次数

D.循环体至少执行一次

6.语句“char drm[]一{'A′,′B′,′C′,′D'),”定义了一个一维数组。关于此数组,下列表述中错误的是( )。

A.数组的名称是drm B.元素drm[3]的值是′C'

C.数组有4个元素 D.数组的最小下标是0

7.若要定义一个双精度二维数组data,使其元素的初始值排列如下:

1.1 2.2 3.3

1.1 2.2 0.0

0.0 0.0 0.0

则下列定义语句中错误的是( )。

A. double data[ ][3]={{1.1,2.2,3.3},{1.1,2.2}}

B. double data[3][3]={{1. 1,2.2,3.3),{1. 1,2. 2,0.0}};

C double data[ ][3]一“1.1,2.2,3.3},{1,2.2,0.0},{0.0,0.0,0.O}};

D. double data[3][3]={{1. 1,2. 2,3.3},{1. 1,2.2}};

8.若有如下函数:

int val(int n){return (n<=0 7 1:n+val(n/2));)

则执行语句“cout《val(10);”的输出是( )。

A.1 B.11

C.15 D. 19

9.下列函数原型中错误的是( )。

A. int f(int n=0,double d); B.int f(int n,double d=0.0);

C. int f(int n=0, double d=0.0); D.int f(int =O, double-0.0);

10.要想定义一个指向字符串”Hello!”的指针p,且不允许p改为指向别的字符串,则p应定义为( )。

A. char*const p='Hello!"; B. const char* p=“Hello!”;

C. char const p= "Hello!” D.const char p= “Hello!”;

11.已知执行了如下两个语句:

int* pl=new int(3);

int* p2=new int[3],

要想释放pl. p2所指向的动态空间,正确的语句序列是( )。

A. delete pl; delete p2; B.delete []pl; delete p2;

C. delete pl; delete []p2; D.delete []pl; delete []p2;

12.有如下类声明:

class MyClass{

public:

char c:

};

且有如下变量定义:

MyClass d,*pd= &d, &rd=d;

则下列访问类成员c的表达式中,正确的是( )。

A. pd.c和rd.c B. pd->c和rd->c

C.rd.c和pd->c D.rd->c和pd.c

13.关于默认的构造函数,下列表述中错误的是( )。

A.默认构造函数没有参数或所有参数都有默认值

B.如果类中没有声明任何构造函数,系统将自动生成默认构造函数

C.每个类最多只有一个默认构造函数

D. 每个类至少有一个默认构造函数

14.有如下定义:

class BBf

int k:

public:

BB(int n=0):k(n)()

};

class AAf

BB bb;

char cc,

public:

AA(int b,char c) ,//b用于初始化bh,c用于初始化ce

);

要在类体外给出类AA的构造函数的定义,正确的是( )。

A. AA(int b,char c):bb(b) ,cc(c)()

B. AA:: AA(int b,char c):cc(c), bb(b){}

C AA(int b,char c){bb. k=b; cc=c;)

D. AA:: AA(int b,char c){bb. k=b, cc=c;)

15.关于操作符重载,下列表述中错误的是( )。

A.每个重载的操作符是一个操作符函数

B.若重载+,相应操作符函数的名称是operator+

C.通过操作符重载,可以创造出新的操作符

D.重载的操作符不改变原操作符的优先级和结合性

16.有如下函数模板声明:

template<int n,typename Tl, typename T2 =int>

T2 add(T1 tl){ return tl+n,)

下列对模板函数add的调用中,错误的是( )。

A. add<3 ,int,int> (5) B.add<3 ,int> (5)

C add<3> (5) D. add(5)

17.关于基类和派生类,下列表述中错误的是( )。

A.一个基类可以有若干派生类

B.一个派生类可以有若干基类

C.基类是它的所有派生类的共性的体现

D.派生类继承基类的所有非私有成员作为自己的成员

18.关于虚函数,下列表述中错误的是( )。

A.只有用virtual修饰的函数才是虚函数

B.只有类的成员函数才能声明为虚函数

C.在派生类中可以重新定义基类声明的虚函数

D.静态成员函数不得声明为虚函数

19.关于类模板,下列表述中错误的是( )。

A.每一次定义模板类对象时,如果尚无相应的类定义,即刻生成该类的定义

B.类模板的声明、定义属于参考性声明,应放在头文件中

C.模板类可以是派生类,其基类不得是另一个模板类

D. 可以为类模板的最后若干参数设置默认值

20.下列符号中,不属于c++流定位方式的是( )。

A. ios_base:: end B.ios_base::cur

C. ios_base::app D.ios_base::beg

二、填空题c每小题2分,共20分)

21.c++语言中每条复合语句以左花括号开始,并以________结束。

22.假定y的值为5,则增量表达式++y的值为____。

23.假定整数变量x-48,则x/6的运算结果为 。

24.语句“char s[]=”Hello!”;”定义了一维字符数组s,其元素个数是____。

25.假定一个二维数组的定义为“int a[3][5];”,则该数组包含有 一个整型元素。

26.假定a是一个一维数组,则a[i]的指针访问方式为____。

27.假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数

为 。

28.在公有继承方式下,基类的公有成员在派生类中的访问属性是____。

29.多态性包括编译时的多态性和____。

30.若程序中需要打开一文件用于输入,则须包含头文件____。

三、给出下列程序运行后的输出结果(每小题8分,共24分,

31.有如下程序:

# include<iostream>

using namespace std;

class Person f

public:

Person() { cout<<"Construct Person"<< endl;}

-Person(){cout<<"Destruct Person"<< endl,)

);

class Student:public Person{

public:

Student() {cout<<"Construct Student"<< endl;}

~Student() {cout<<"Destruct Student"<< endl;}

};

void main(){

Student s;

}

运行此程序的输出是( )。

32.有如下程序:

# include<iostream>

using namespace std;

int main(){

int x[]= {2,4,6,8,10,12), s=0;

int i=l;

do{s+一x[i];i+一5;)while(i<6);

cout《s,

return 0:

}

运行此程序的输出是( )。

33.有如下程序:

# include<iostream>

using namespace std;

int main(){

int x[]=(1,2,3,4,5),*px—x+4;

for(int i=O;i<2; i++) - -px,

cout《* px,

return 0:

)

运行此程序的输出是( )。

四、写出下列每个函数的功能(每小题8分,共16分)

34. bool WE(int a口,int b[],int n){

for(int i=0;i<n;i++)

if(a[i]!一b[i])break;

if(i=一n) return true; return false;

}

函数功能:

35. int LK(int a[] , int n) {

double s=0;

int i.m=0;

s=s/n,

return m;

}

函数功能 :