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

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

试卷代号:11075

国家开放大学2 0 2 3年春季学期期末统一考试

C++语言程序设计 试题

2023年7月

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

1.执行下面语句后,将输出( )个*号。

for(int i= 20;i> =0 ,i-一)cout<<′*′;

A.0 B.19

C.20 D.21

2.执行下面语句后,x的值是( )。

int x=4,y;

y= x――;

A.3 B.4

C.2 D.0

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

A.i++ B.i+3

C.i>3 D.i==3

4.若OK是一个逻辑型变量,则在下列语句中,与其他语句输出不同的那个语句是( )。

A. if(OK) cout<<“!!”;else cout<<“??”;

B. if(OK==true) cout<<“!!”;else cout<<“??”;

C. if(! OK==true) cout<<“!!”;else cout<<“??”;

D. if(l OK)cout<<“??”;else cout<<“!!”;

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

while(循环条件)循环体

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

A.循环条件应该是一个逻辑表达式 B.循环条件应至少执行一次

C.循环体是一个逻辑表达式 D.循环体有可能一次都不执行

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

A.数组的名称是brm B.数组的类型是双精度实型

C.数组有5个元素 D.元素brm[l]的初值是1

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

A.数组名称是data B.数组有6个元素

C.最大列下标是2 D.元素data[2][1]的值为O

8.已知f是一个无参有返回值函数。下列对f的调用中,作为语句调用的是( )。

A.f()+1; B.x=f();

C. cout<<f(); D.f();

9.已知函数f的原型是:void f(int xy[],int size);,其中size表示数组xy的元素个数且还有如下数组定义:

int a[]一{1,2,3,4,5,6);

下列对f的调用中正确的是( )。

A.f(a[],6) B.f(a,6)

C.f(xy[],6) D.f(xy,6)

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.下列语句定义变量p使得语句”cout<<p;”输出单词Goodmorning,其中错误的定义语句是( )。

A. char p[]=“Goodmorning”;

B. char*p=“Goodmorning”;

C.char p[]={′G′,′O′O,′d′,′m′,′o′,′r′, ′n′F′,′g′,′\O′);

D.char*p={′G′,′o′,′o′,′d′,′m′,′o′,′r′,′n′,′i′,n′,g′,′\0};

12.有如下类声明:

classf

int i,j;

private:

int m;

public:

int n:

private:

int p;

};

其中私有成员的个数是( )。

A.2 B.3

C.4 D.5

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

A.每个类至少有两个构造函数

B.构造函数的名称与类名相同

C.可以不提供实参的构造函数称为默认的构造函数

D.构造函数可以重载

14.关于复制构造函数,下列表述中错误的是( )。

A.复制构造函数参照参数传来的对象来初始化同类的新对象

B.每个类可以有多个复制构造函数

C.如果类中没有声明复制构造函数,系统将自动生成一个默认的复制构造函数

D.默认的复制构造函数以内存映像复制的方式来初始化新对象

15.已知应用系统中已声明了如下函数:

int block(double,int=0);

下列函数声明试图重载block,其中正确的是( )。

A. double block(double,int); B.int block(double,int, char=′A′);

C. int block(double,long=0); D.int block(double,int, char);

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

A.函数模板声明以保留字template开头

B.必须用虚拟类型参数声明模板函数返回值的类型

C.调用模板函数时,模板实参在一定条件下可以省略

D.在调用模板函数时,根据需要,有可能生成该函数模板的一个实例

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

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

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

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

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

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

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

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

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

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

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

A.类模板以保留字template开头

B.类模板的每一个实例就是一个类定义

C.可以为任意的一个或多个模板参数设置默认值

D.有默认值的实参在一定条件下可以省略

20.下列标识符中,不属于C++流操纵符的是( )。

A. delete B.setw

C.endl D.right

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

21.程序开发过程的四个步骤按正确的顺序分别称___________.

22.有如下枚举声明:

enum ANIMAL{ DOG, CAT=35, PIG, HEN, DOVE};

其中DOVE所对应的整数是_____________。

23.结束所在循环类语句或switch语句执行的中断语句的保留字为_____________。

24.语句”float p[5]={1.lf,2.2f,3.3f);”定义了一维数组p,其元素个数是 。

25若一函数直接或间接调用了该函数自身,此种类型的调用称为_____________。

26.有两个不同操作符都用符号*表示,一个用于乘法,另一个用于_________________。

27.在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的 _____________使其初始化。

28.重载”/”的操作符函数的名称是 。

29.具有纯虚函数的类称为_____________。

30.在C++流中,endl、setw、left等用于控制流的输入输出的符号统称为 _____________。

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

31.有程序:

# include<iostream>

using namespace std;

class A{

private :

int n;

public :

A(int i) { n=i; }

A& operator ++() {n++; return * this; }

A operator ++(int) { n+ =2; return * this; }

void Display() {cout<<′rn=u<<n<< endl;)

};

void main(){

A a(2),b(2);

a++;

++b;

a.Display();

b.Display();

}

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

32.有如下程序:

# include<iostream>

using namespace std;

int main(){

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

for(int i=l; i<6; i+=2)s+=x[i];

cout<<s;

return O:

}

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

33.有如下程序:

# include<iostream>

using namespace std;

int main(){

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

for(int i=O;i<5; i++) cout<<*(px+i);

return O:

}

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

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

34. int WD(int a[], int n) {

int m=a[0],

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

if(a[i]>m)m—a[i];

return m;

}

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

double x,y=0;

do}

cin>>x;

y+=x*x;

} while(- -n);

return y;

}

函数功能: