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

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

试卷代号:1075

国家开放大学2022年春季学期期末统一考试

C++语言程序设计试题

2022年7月

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

1.执行下列语句后,不可能出现的情况是( )。

cin>>k;

if(k>100)cout<<'G';

if(k<100)cout<<'L';

A.显示GB.显示L

C.显示GLD.无任何显示

2.执行语句序列

int a=23.3

cout<<(a+=32.15);

后,屏幕显示的是( )。

A.55.45B.55.3

C.55.15D.55

3.下列表达式中,无副作用的是( )。

A.i++B.i+3

C.i+=3D.cout<<i

4.有如下语句:

switch(n){

case0:

case1:n+=l;break;

case2:n+=2;

default:n+=3;

若一开始n的值为O,则执行此语句后,n的值是( )。

A.OB.1

C.3D.6

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

do循环体while(循环条件);

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

A.循环体有可能一次都不执行

B.循环体是一个语句或一组复合语句

C.循环体和循环条件执行的次数相同

D.循环条件是一个逻辑表达式或关系表达式

6.语句“int crm[7]={1,2,3};”定义了一个一维数组。关于此数组,下列表述中错误的是( )。

A.数组的名称是crmB.数组的类型是整型

C.数组有3个元素D.数组的最大下标6

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

1 2 3

1 2 0

1 0 0

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

A.int data[3][]={{1,2,3},{1,2},{1}};

B.int data[3][3]={{1,2,3},{1,2,0},{1,O,O}};

C.int data[][3]={{1,2,3},{1,2,O},{1,0,0}};

D.int data[3][3]={{1,2,3},{1,2},{1}};

8.下列原型声明中的函数,不可作为表达式调用的是( )。

A.int af(char);B.double bf(void);

C.void cf(double);D.long df(int i,long n);

9.关于函数定义中的形参声明,下列表述中正确的是( )。

A.每个形参声明定义一个常量B.每个形参声明定义一个变量

C.每个形参声明定义一个类型修饰符D.每个形参声明定义一个表达式

10.关于地址,下列表述错误的是( )。

A.数据可以存放在从任何地址开始的若干连续的存储单元中

B.程序中的每个变量都对应一个地址

C.每个单元占用一个字节,对应一个唯一的地址

D.地址本身也可以作为数据来处理

11.下列语句试图定义指针p,使之指向一个动态空间中的int型二维数组,其中正确的是( )。

A.int*p[][5]=new int[6][5];B.int*p[5]=new int[6][5];

C.int(*P)[][5]=new int[6][5];D.int(*p)[5]=new int[6][5];

12.class的默认访问属性是( )。

A.privateB.protected

C.publicD.static

13.若有一个名为XY的类,则下列关于该类构造函数和析构函数的表述中,错误的是( )。

A.类XY的构造函数名为XYB.类XY的析构函数名为~XY

C类XY可以有多个构造函数D.类XY可以有多个析构函数

14.已知类AA的类体中有如下成员函数定义:

int Double(intn)const{return n+n;}

要在类BB中将其声明为友元,正确的是( )。

A.friend int Double(int n);B.friend int Double(int n)const;

C.friend int AA::Double(int n);D.friend int AA::Double(int)const;

15.已知在类体外有如下操作符重载声明:

AA operator+(AA,AA);

其中的AA是类名。若x、y是两个AA的对象,下列表达式欲求x、y之和,其中正确的是( )。

A.X.operator+(y)B.y.operator+(x)

C.x operator+yD.operator+(x,y)

16.关于函数模板,下列表述中错误的是( )。

A.要声明虚拟类型参数,必须使用保留字typename

B.函数模板的参数表必须用<>括起来

C.函数模板可以有多个参数

D.可以为函数模板的参数设置默认值

17.关于继承成员的访问属性,下列表述中错误的是( )。

A.在公有继承方式下,所有继承成员的访问属性保持不变

B.在保护继承方式下,原来的公有属性变为保护属性

C.在私有继承方式下,原来的公有、保护属性变为私有属性

D.在任何继承方式下,原来的私有属性变为继承的私有属性

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

A.以“=0;”结尾的虚函数声明,所声明的即为纯虚函数

B.据有纯虚函数的类称为抽象类,不能用于定义对象

C.纯虚函数没有实现版本

D.派生类给出实现版本后,不再是纯虚函数,但仍然是虚函数

19.有如下类模板定义:

template<int ize=10,typename T=int>classMG{public:T data[size];};

下面的语句试图定义模板类MG的对象,其中错误的是( )。

A.MG<>obj;B.MG<20>obj;

C.MG<double>obj;D.MG<20,double>obj;

20.C++流的下列函数(只列函数名)中,完成输出操作的函数是( )。

A.putB.get

C.readD.ignore

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

21.C++源程序文件的缺省扩展名为 。

22.简单表达式包括常量、变量和 。

23.关系表达式x<5的相反表达式为 。

24.语句“int d[][3]={{1,2,3},{1,2},{1}};”定义了二维数组的,其元素个数是

25.函数被调用时,实参向形参的传送分为引用传送和 传送两种方式。

26.假定指针p所指对象的值为25,p+l所指对象的值为46,则*++p的值为 。

27.假定指针px指向一个类的动态分配的对象,则执行“deletepx.”语句时,将自动调用该类的 。

28.根据一函数模板生成的函数定义称为该模板的 。

29.对虚函数的调用分为两种情况:多态调用和 。

30.对于一个C++输入流,当输入到达流尾时,函数good的值是 。

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

31.有如下程序:

#include<iostream>

using namespace std;

classAA{

public:

static in tn,

AA(){n++;}

};

int AA::n=0;

void main(){

cout<<"AA::n="<<AA.n<<endl;

AAdl,

Cout<<dl.n<<endl;

AAd2,

cout<<d2.n<<endl;

AAd3,d4;

cut<<d3.n<<endl;

cut<<d4.n<<endl;}

运行此程序的输出是( )

32.有如下程序:

#include<iostream>

Using namespace std;

int main(){

int X[][4]={{1,2,3,4},{5,6,7},{8,9}},s=O;

int i=O:

while(i<3){

for(int j=O;j<3;j++)s+=x[i][j];

i++;

}

Cout<<s;

return O;

}

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

33.有如下程序:

#include<iostream>

using namespace std;

int main(){

int x[]={1,2,3,4,5},*px=x;

int s=*(px+l);

*(px+1)=*(px+3);

*(px+3)=s;

for(inti=0;i<5;i++)cout<<x[i];

return O:

}

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

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

34.int LK(inta[],intn){

double s=0;

int i,m=0;

for(i=0;i<++=)s+=a[i];

s=s/n;

for(i=0;i<++=)if(a[i]>=s)m++;

return m;

}

函数功能:

35.doubleFI(int n){//n为大于等于1的整数

double x,y=0;

do{

cin>>x;

y+=x;

}while(--n);

return y;

函数功能: