2022年4月自考04737C++程序设计试题(历年真题)

2022年4月自考C++程序设计真题试卷出来了,免费下载哦,欢迎有需要的同学下载学习哦,此外还包含2022年4月高等教育自学考试全国统一命题考试真题试卷免费下载。

绝密★启用前

2022年4月高等教育自学考试全国统一命题考试C++程序设计

(课程代码04737)

注意事项:

  1. 本试卷分为两部分,第一部分为选择题,第二部分为非选择题。
  2. 应考者必须按试题顺序在答题卡(纸)指定位置上作答,答在试卷上无效。
  3. 涂写部分、画图部分必须使用2B铅笔,书写部分必须使用黑色字迹签字笔。

点击免费下载:2022年4月高等教育自学考试全国统一命题考试

9.从一个基类派生岀的各个类的对象之间

  1. 共享部分数据成员和函数成员
  2. 共享所有数据成员,每个对象还包含基类的所有属性
  3. 共享部分数据成员,每个对象还包含基类的所有属性
  4. 不共享任何数据成员,但每个对象还包含基类的所有属性

表示式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式, 则可表示为

  1. operator(a+b)
  2. operator+(a,b) 函数重载是指
  3. a. operator+(b)
  4. b.operator+(a)

 

两个以上的函数名字不同,但形参的个数或类型相同

两个以上的函数取相同的函数名,而且函数的返回类型相同 两个以上的函数取相同的函数名,但形参的个数或类型不同 两个以上的函数取相同的名字且有相同的参数个数,但形参的类型不同

一、单项选择题:本大题共20小题,每小题1分,共20分。在每小题列出的备选项中 只有一项是最符合题目要求的,请将其选出。

下列对C++程序的描述中,不正确的是

A.继承于C语言

C.以.cpp作为文件扩展名 在下面循环语句中循环体执行的次数为 fbr(int i-1; i<n; i++)

if(i>n/2) break;

  1. n/2
  2. n-1

B,必有且仅有一个主函数

D.程序从#include指令开始执行

  1. n/2+l
  2. n/2-l

有函数原型^int fun(int,float);以下语句正确的是

  1. int a=fun(); B. cout«fun(l,3-14)
  2. double a~fun(); D. cout«fun(l+3.13)

关于封装,下列说法中不正确的是

经过封装,

经过封装,

经过封装, 经过封装,

对象的属性都是不可见的

每个对象都成为相对独立的实体

对象的全部属性和操作结合在一起,形成一个整体 一个对象的实现细节被尽可能地隐藏起来(不可见)

假定A为一个类,abc为该类的一个成员函数,则参数表中隐含的第一个参数为

  1. abc B. *this
  2. this D. this&

将一个类A或函数f()说明为另一个类B的友元,则A或H)可直接访问类B的 A.只能是公有成员 B.

C.只能是保护成员 D.

具有任何权限的成员 除私有成员之外的任何成员

如果一个类的成员函数print。不修改类的数据成员值,则应将其声明为 A. void print() const; B. void print(const);

  1. void const print(); D. const void print();

ustudent wanghao(“王浩”,”M”,22); wanghao.id(“2005131000”);w 中,可判断 id 是 A,私有成员数据 B.私有成员函数

C.公有成员数据 D.公有成员函数

若一个类的成员函数前用static关键字修饰,则该成员函数

只能用对象名来调用 可以访问该类的所有成员

A.没有this指针

C.可以被声明为const

  1. C-H-中实现接口重用的是

A.虚函数

C.重载函数

  1. C++中的虚基类机制能够保证

限定基类只经过一条路径派生岀派生类

当一个类多次间接从基类派生以后,其基类只被一次继承

允许基类经过多条路径派生岀派生类,派生类也就能多次继承该基类 当一个类多次间接从基类派生以后,派生类对象能保留多份间接基类的成员

内联函数
模板函数

  1. 将标准输入重定向到文件dat的语句是
  2. freopen(stdin, nrn,”input.dat”); B. freopen(stdout, “input.dat”);
  3. freopen(ninput.datH, *’r n,stdin); D. freopen(,,input.datn, nr “,stdout);
  4. 语句”cout«setbase(8)«l6«setw(3)«l8«endl;”的输岀结果是
  5. 1618 B.
  6. 2022 D.

17.关于文本文件和二进制文件的描述正确的是 A.二进制文件数据兼容性好

C.文本文件具有较高的兼容性

16 18

20 22

二进制文件以文本形式存储 文本文件便于对数据随机访问

  1. 关于对象概念的描述中,错误的是 对象就是C语言中的结构变量 对象之间的信息传递是通过消息进行的 对象代表着正在创建的系统中的一个实体 对象是一个状态和操作(或方法)
  2. 关于析构函数的叙述中,正确的是

A.用户必须定义类的析构函数

C.析构函数的定义只能在类体内

  1. 假设有类模板声明如下,则选项中正确的是 template <typename T> class Tclass(int a;

public :Tclass(int b){a=b;});

  1. Tclass t(9);
  2. Tclass (0.9>t(9));

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

  1. C++语言支持的两种多态性分别是编译时的多态性和 的多态性。
  2. 当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移 动到 的开始位置。
  3. x>0||y==5的相反表示式为 o
  4. 如果类A继承类B,则类A称为 ,类B称为基类。
  5. 要想访问基类的private成员变量,只能通过基类提供的 进行间接访问。
  6. strlen(“apple”)的值为
  7. 假定用户为类AB定义了一个构造函数“AB(intaa){a=aa;}”,则该构造函数实现对 数据 的初始化。
  8. 通过指向基类的指针调用派生类对象的函数时,采用 调用。
  9. 复制构造函数使用一个 初始化创建中的对象。
  10. 在C++中,对于构造函数和析构函数来说, 是不可以重载的。
  11. 设有一时间类Time,现欲用成员函数方法重载运算符+,实现一个时间与一个整数 的相加运算,所得结果为一个新时间,则成员函数的声明语句为
  12. 在表达式“x+=y”中,”+=”是作为非成员函数重载的运算符,若是使用显式的函 数调用代替直接使用运算符这个表达式还可以表示为 o
  13. 假定a是一个一维指针数组,则a+i所指对象的地址比a大 字节。
  14. 如果一个派生类只有一个唯一的基类,则这样的继承称为 o
  15. C++虚函数有两种调用方式,分别是 和多态调用方式。

三、程序填空题:本大题共5小题,每小题4分,共20分。请按试题顺序和空格顺序 在答题卡(纸)指定位置上填写答案,错填、不填均无分。

  1. 程序的输出结果为:helo:third

#include <iostream>

using namespace std;

int main()

{ intx=3,y=3;

string sl=”first\n”,s2=”second\rr,s3=”third\n”;

switch(x%2)

{

case 1: 

{

case 0: cout«sl;

case 1: cout«s2; break;

default: cout«”hello: ”;

)

case 2:   ;

}

return 0;

)

  1. 函数Convert。将一个数字字符串转换为对应的整数

#include <iostream>

using namespace std;

int Convert(char *str);

int main()

{

char s[10] = ”12345”;

int n = Convert(s);

cout« n « endl;

return 0;

} 

int num=0,digit;

fdr(int i=0; i < strlen(str); i++) {

digit =    – 48; num = num*10 + digit;}return num;

  1. 程序的输出结果为:1234

class A ( private: int X,Y; protected: int Z;

public:

A(int a, int b, int c) ( X=a; Y=b; Z=c;} int GetX() ( return X; ) int GetY() ( return Y; }};

class B:public A(

private: int K;

public:

B(int a,int b,int c,int d): A(a,b,c) ( K=d;}

void Show() ( cout«GetX()«GetY()<<Z«K«endl;); int main()

Bb(l,2,3,4);

return 0;)

  1. Shape类是一个表示形状的抽象类,area()是求图形面积的函数,total。是一个通用的 用以求不同形状的图形面积总和的函数,Shape类派生三角形类Triangle class Shape (

public:

virtual float area()=0;};

float total(Shape *s[],int n)

float sum=0.0; for(int i=0;ivn;i++)

return sum;}

public:

Triangle(double h,double w){H=h;W=w;} double area() const (return H*W*0.5;} private:

double H,W;

  • 下面的程序将一个已有文件的内容复制到另一个文件中,请将程序补充完整 #include<fstream> using namespace std;

int main()

infile.openC’d:\\filel.txt”,ios::in); if(! infile)

cout«nfilel.txt can’t open.\nH; outfile.open(“d:\\file2.txt,,,ios::out); if(!outfile)

cout«nfile2.txt can’t openAn”; char str[8O]=H\On; while(!infile.eof())

(infile.read(str,sizeof(str));

cout«str;)

infile.closeQ; outfile.closeQ; return 0;}

四、程序分析题:本大题共5小题,每小题6分,共30分。阅读程序后,填写程序的 正确运行结果。

  1. #include <iostream>

using namespace std;

enum BoolConst ( False=0 , True=l };

class Boolean(

public:

Boolean(BoolConst x = False) {logic = x; }

void print() const ( logic? cout«H TRUE “: cout«n FALSE ) friend Boolean operator *(const Boolean & objl, const Boolean & obj2);

protected: BoolConst logic;

};

Boolean operator* ( const Boolean & obj 1, const Boolean & obj2 )

( return (obj 1.logic && obj2.logic) ? Boolean(True): Boolean(False); ) int main()

{

Boolean a(False), b(True), c;

c = a * b;

a.print(); b.printQ; c.printQ;};

int main()

( Samp *p;

int N=3;

p= new Samp[N];

if(!p)

( coutvv”内存分配错误\n”;

return 1;

)

for(int i=0;ivN;i++) p[i].SetMuti(i,i+l);

fbr(int i=0;i<N;i-H-) cout«nMuti[,,<<i«n]值是:n«p[i].GetMuti()«endl;

delete []p;

return 0;

}

  1. #include <iostream>

using namespace std;

class Computer(

public:

Computer() { cout« “Computer constructor’1« endl; }

virtual void subscribe() = 0;

void read() ( cout« “Read paper’* « endl; )

~Computer() { cout«“Computer destructor” « endl;}

};

class Design : public Computer{

public:

DesignQ (cout « ”Design constructor” « endl; )

virtual void subscribeQ ( cout« “Subscribing Design*’ « endl; } void read() (cout«”Reading Design1‘ « endl;}

〜Design。( cout«”Design destructor” « endl;}

};

int main()

( Design journal;

Computer *pjoumal= &journal;

joumal.subscribe();

pjoumal->read();

return 0;

  1. #include <iostream>

using namespace std;

class A {

private:

int n;

public:

A(int i)( n=i;)

A operator -h-() { n++; }

A operator ++(int) ( n+=2; }

void DisplayO { cout«’*n:=’,«n«endl; }};

int main()

(Aa(2), b(2);

a++;

++b;

  1. Display();
  2. Display();}

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

  1. 根据下面类中Sum函数成员的原型和注释写出它的类外定义。

^include <iostream>

using namespace std;

class AA{

int *a, n,MS;

public:

void InitAA(int aa[],int nn,int ms)

(if(nn>ms){cout«nError!’,«endl;retum;}

MS=ms;

a=new int[MS];

fbr(int i=0;ivn;i++)a[i]=aa[i];}int Sum();〃求出并返回数组a中前n个元素之和};

  1. 请声明Student类,类中包含数据成员姓名和分数,成员函数compare (用于比较两 名学生的分数)。在主函数中输入n名学生的信息后,输出其中最高分和最低分学 生的姓名及分数。

高等教育自学考试全国统一命题考试
以上就是2022年4月自考C++程序设计真题试卷,有需要的同学可以自行下载使用,有什么问题可以随时留言咨询。

中国自考网:本站所有历年真题和视频资料,持续更新到最新的,如发现不是最新,联系客服即可。
中国自考网:建议开通SVIP超级会员更划算,全站所有资源永久免费下载(正版自考网课除外)
1. 本站所有网课课程资料来源于用户上传和网络收集,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,助力考生上岸!
3. 如果你想分享自己的自考经验或案例,可在后台编辑,经审核后发布在“中国自考网”,有下载币奖励哦!
4. 本站提供的课程资源,可能含有水印,介意者请勿下载!
5. 如有链接无法下载、失效或广告,请联系管理员处理(在线客服)!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 星光不问赶路人,岁月不负有心人,不忘初心,方得始终!
中国自考网 » 2022年4月自考04737C++程序设计试题(历年真题)

中国自考网-百万考生与你同行

会员介绍 在线客服