全国热线:0755-26920591

2022年4月高等教育自学考试全国统一命题考试药理学(一)

2023-07-15   来源:学历君

2022年10月高等教育自学考试全国统一命题考试C++ 程序设计(课程代码 04737)

  2022年10月高等教育自学考试全国统一命题考试

  C++ 程序设计

  (课程代码 04737)

注意事项:

1. 本试卷分为两部分,第一部分为选择题,第二部分为非选择题。

2. 应考者必须按试题顺序在答题卡(纸)指定位置上作答,答在试卷上无效。

3. 涂写部分、画图部分必须使用2B 铅笔,书写部分必须使用黑色字迹签字笔。 第一部分  选择题

一 、单项选择题:本大题共20小题,每小题1分,共20分。在每小题列出的备选项中

只有一项是最符合题目要求的,请将其选出。

1. 给出函数声明: void func(int, int y=1); 下列函数调用中,错误的是

​    ​ A.    func();                                                                B.    func(0);

C.    func(1);                                                               D.     func(2,3);

2. 下列关于C++ 的程序结构的叙述中,错误的是

A. 一个程序中必须有一个主函数

B. 一个程序的所有代码必须写到一个文件中

C. 执行到主函数中的 return 语句,程序结束

D. 执行到主函数最后面的括号},程序结束

3. 下列关于类的叙述中,错误的是

A. 类体可以为空,没有成员变量和成员函数

B. 类成员的默认访问权限是私有

C. 只有类的成员函数才能访问类中的私有成员

D. 类是一种自定义数据类型

4. void f()是类A 的非静态成员函数, a 是 类A 的对象,下列说法中正确的是

A.a.f() 也可以写成 A::f()

B. a.f()也可以写成 a.A::f()

C. 编译器为对象a 分配的存储空间中包含了成员函数 f()的存储空间

D. 编译器会为类A 和对象a 分别分配存储空间

5. 在一个类中,不能有多个的是

A. 构造函数                              B. 析构函数

C. 成员函数                              D. 静态成员函数

6. 下列关于运算符重载的叙述中,错误的是

A. 只能重载一元或二元运算符

B. 运算符可以被重载为类的成员函数或全局函数

C. 运算符重载时,可以对运算符优先级、结合性等进行重新定义

D. 不能创建新的运算符

7. 对于类A 和 类B, 如 果A(B()); 能够通过编译,那么最有可能是下面哪一种情况 A. 类 A 中定义了构造函数 A(const B*)

B. 类 B 是 类A 的派生类,且定义了无参构造函数

C. 类 B 是 类A 的友元类

D. 类 A 中存在类型转换函数B()

8. 如果类A 的构造函数都是 protected 的,类B 以公有方式继承类 A, 那 么

A. 在 main()函数中, A a; 语句正确

B. 在 main()函数中, B b; 语句正确

C. 在 类B 中可以实例化类A 的对象

D. 在类A 中可以实例化类 B 的对象

9. 类 A 没有基类,也没有任何数据成员,下列叙述中正确的是

A. 类 A 一定是抽象类,不能实例化

B. 类 A 可以实例化,但其对象的存储空间大小为0

C. 如果类A 中只有虚函数,则其对象的存储空间大小也不会为0

B. 如果类A 中没有虚函数,则其对象的存储空间大小取决于成员函数的多少

10. 派生类可以从基类继承

A. 私有成员变量                         B. 拷贝构造函数

C. 析构函数                              D. 友元函数

11. 类 A 派生了类B,A a;A *pa;B b;B *pb;下列语句错误的是 A.    pa=&a;                                                                B.pa=&b;

C.    pb=&a;                                                                D.    pb=&b;

12. 下列关于纯虚函数和空函数的叙述,错误的是

A. 纯虚函数和空函数都没有函数体

B. 只包含纯虚函数的类,不能实例化

C. 只包含空函数的类,可以实例化

D. 包含纯虚函数和空函数的类,可以派生出新类

13. 下列可以定义为虚函数的是

A. 构造函数                              B. 析构函数

C. 静态函数                              D. 友元函数

14. 下列关于 cout的叙述,正确的是

A. cout 不能向文件输出数据               B. cout 是流类 ostream 的对象

C.cout 不支持重定向                     D. cout 只能输出字符类型数据

15. 使 用cin从键盘连续读入数据时,可以中断输入流的组合键是 A.   Ctrl+Z                                                                  B.    Ctrl+C

C.    Ctrl+U                                                                D.    Ctrl+X

16. 打开文件时需要明确文件的使用方式,下列哪一个不是有效的文件使用方式

A. 只 读                                  B. 追加

C. 只 写                                 D. 覆盖

17. 如果一个文件只能顺序读取,其原因可能是

A.  文件的格式决定的                      B. 文件的存储介质决定的

C. 文件的大小决定的                      D. 文件的内容决定的

18. 模板的作用主要是

A.  提高代码运行效率                      B. 实现多态

C. 实现封装                                D. 降低编码工作量

19. 通过类模板,可以实例化多个不同的类,这些类之间的关系是 A.  相互独立                               B. 继承关系

C. 组合关系                              D. 包含关系

20. 非抽象类一般被称为具体类。若具体类A 定义如下: class  A    {Sub       subs[100];}

下列叙述错误的是

A.  类 A 的实例化对象大小不为0

B.Sub  一 定是具体类

C. 类 A 的子类一 定是具体类

D. 类 A 的拷贝构造函数无需自定义

第二部分 非选择题

二、 填空题:本大题共15小题,每空1分,共15分。

21. 在面向对象程序设计中,类是现实世界中客观事物的

22. 在一个由多个文件组成的C++ 项目中,类A 的定义放在头文件 a.h中,如果有多个 .cpp 文件都通过#include "a.h"用到类 A, 那么在链接时会发生         错误。

23. 使 用 private 修饰类成员,有利于隐藏程序的

24. 在同一个作用域内,不能声明         的标识符。

25. 使 用 new 实例化对象时,系统将自动调用该对象的

26. 静态局部变量具有局部作用域和全后

27. 定义在所有类和函数之外的变量具有           作用域。

28. 一个类的常量成员函数,不能           该类的成员变量。

29. 通过         机制,可以扩充和完善已有的类以适应新的需求。

30. 类的静态成员函数中不能使用        指针。

31. 类 A 不能多次成为类 B 的直接基类,但可以多次成为类 B 的

32. 要实现动态多态,除了继承之外,必须使用

33. 多重继承指的是一个派生类同时有一个以上的           34. “张三是一个厨师”体现了一种       关系。

35. 进行函数重载时,新函数和已有函数的参数个数和类型完全相同,那么新函数必需 用         修饰。

、程序填空题:本大题共5小题,每小题4分,共20分。请按试题顺序和空格顺序

在答题卡(纸)指定位置上填写答案,错填、不填均无分。

36. 程序完成后的执行结果为:90

#include

#include

using   namespace   std;

class   Student

{

private:

string    name;

int   score;

public:

Student(string    n)

{

name     =n;

}

(1)

{

score  =  s;

}

int    getScore()

{

return   score;

}

int    averageScore(Student    stu)

{

(2)

}

};

int   main()

{

Student          stul("tom"),stu2("jerry");

stul.setScore(100);

stu2.setScore(80);

cout<<stul.averageScore(stu2);

return   0;

37. 程序完成后的执行结果为: x=6,y=8,z=10

#include

using  namespace  std;

class  TwoCord

{

private:

int x,y

public:

TwoCord(int x, int yy)

(1)

y=yy;

void  display()

{

cout<<"x="<<x<<",y="<<y

}

};

class  ThreeCord

{

int z;

public:

ThreeCord(int  x,  int  yy,  int  zz):TwoCord(x,yy)

{

Z=Zz;

}

void  display()

{

}

};

main()

ThreeCord

c.display();

return  0;

}

38. 程序完成后的运行结果为:100

#include

using  namespace  std;

class   Singleton

{

public:

int  gld;

static   Singleton*  getInstance()

{

if(instance  ==  NULL)  instance  =new   Singleton();

return   instance;

private:

Singleton(){}

static  Singleton*  instance;

};

(1)

int  main()

{

(2)

p->gId   =100;

cout<gld;

return  0;

39. 程序完成后的运行结果为:103050

#include

using  namespace  std;

class   Container

{

public:

Container(int   defVal=10)

{

for(int     i=0;i<3;i++)          (1)

}

(2)       {  return  item[index];}

int  Item(int  index)  const  {  return  item[index];}

private:

int  item[3];

};

int  main()

{

Container    vc;

const   Container   cc(20);

int  i;

for(i=0;i<3;i++)vc.Item(i)+=i*                cc.Item(i);

for(i=0;i<3;i++)cout<<vc.Item(i)<<"";

return   0;

}

40. 程序完成后的运行结果为:(4,6)

#include

using   namespace   std;

class   TwoCord

{

int   x,y;

public:

TwoCord(int  xx,  int  yy)

{

X=XX;

y=yy;

}

(1)     (const  TwoCord  &cl,  const  TwoCord  &c2)

{

}

void    display()

{

cout<<"("<<x<<","<<y<<")";

}

};

int   main()

{

TwoCord   c1(1,2),   c2(3,4);

c1=c1+c2;

cl.display();

return   0;

}

、程序分析题:本大题共5小题,每小题6分,共30分。阅读程序后,填写程序的

正确运行结果。

41.#include

using   namespace   std;

class   Triangle

{

public:

void       setRows(int       rows){  rows       =rows;}

void    create()

{

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

{

for(intj=0;j<=i;j++)

array[i][i]=  array[i- 1][j- 1]+  array[i- 1][j];

array[i][0]=  array[i][i]=1;

}

void    display()

{

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

{

for(int        j=0;j<=i;j++)        cout<<  array[i][j]<<""

cout<<endl;

}

}

private:

int    rows;

int       array[100][100];

};

int   main()

{

Triangle    ta;

ta.setRows(5);

ta.create();

ta.display();

return   0;

}

42.#include

using  namespace  std;

class A

{

public:

A(int   n):   val(n){}

protected:

int val;

};

class  B:public  A

{

B*pb;

public:

B(int    n):A(n){pb=(n>0?    new    B(n-1):0);}

~B(){   delete   pb;}

void  display()

{

cout<<val<<endl;

if(pb)   pb->display();

}

};

int  main()

{

B b(4);

b.display();

return  0;

}

43.#include

using  namespace  std;

class A

{

public:

virtual~A()       {}

void       f(){g();h();}

virtual    void    h(){cout<<"A::h()"<<endl;}

protected:

void        g(){cout<<"A:g()"<<endl;}

};

class  B

{

public:

B(int   n):val(n){}

protected:

int  val;

};

class  C:public  A,  private  B

{

public:

C(int  nl,  int  n2):B(n2),num(n1){}

virtual~C()      {}

virtual void h()

{

cout<<"num="<<num<<endl;

cout<<"val="<<val<<endl;

}

protected:

void        g(){cout<<"C:g()"<<endl;}

private:

int  num;

};

int  main()

C c(1,2);

c.f();

return  0;

44.#include

using  namespace  std;

class A

{

public:

virtual

void

};

class   B:public   A

{

public:

void       f(){cout<<"B::f()"<<endl;}

virtual     void     g({cout<<"B::g()"<<endl;};

};

class   C:public   B

{

public;

void

void

};

int  main()

{

Cc;

A*pa=&c;

B     *pb=&c

pa->f();

pa->g();

pb->f();

pb->g();

return  0;

}

45.#include

using  namespace  std;

int  main()

{

cout.width(5);

cout.fill('#’);

cout<<135<<endl;

cout.fill('0’);

cout<<135<<endl;

cout.width(10);

cout.setf(ios::left);

cout<<135.79<<endl;

return  0;

五、 程序设计题:本大题共2小题,第1小题5分,第2小题10分,共15分。

46. 某程序需要定义一个用户类,要求如下:

(1)用户类的成员变量包括 id和密码,其中 id为常量,在用户对象生存期间不能 修改,密码不能通过用户对象直接访问。

(2)用户对象可以修改自己密码,但需要先验证旧密码是否正确。

(3)保证如下main()函数的执行结果为: false true int  main()

{

User    user(1001,"123456");

cout<<boolalpha<<user.changePwd("123","863973")<<"";

cout<<boolalpha<<user.changePwd("123456","863973");

return  0;

47. 定义一个日志管理类,实现如下功能:

(1)将单条日志信息追加到二进制日志文件 e:log.dat 中。日志信息包括:日志序 号(整型)、日志类型(整型)和日志内容(字符串,长度不大于100字节)。

(2)计算日志文件中日志的数量。

(3)从日志文件中读取最近的10条日志,显示到屏幕上。如果不足10条,则全 部显示。

成人自考
了解更多信息,可直接联系我们
了解更多信息,可直接联系我们
热点推荐

【深大控股】提升学历 就选深大优课

进群领取试题
扫码进群领取试题资料
热门专题