2023年自考类计算机类(工学类)C++程序设计历年高频考题带答案难题附详解_第1页
2023年自考类计算机类(工学类)C++程序设计历年高频考题带答案难题附详解_第2页
2023年自考类计算机类(工学类)C++程序设计历年高频考题带答案难题附详解_第3页
2023年自考类计算机类(工学类)C++程序设计历年高频考题带答案难题附详解_第4页
2023年自考类计算机类(工学类)C++程序设计历年高频考题带答案难题附详解_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023年自考类计算机类(工学类)C++程序设计历年高频考题带答案难题附详解(图片大小可自由调整)第1卷一.历年考点试题黑钻版(共25题)1.给出下面程序的输出结果。

#include<iostream>

usingnamespacestd;

classTest

{intx,y;

public:

Test(inti,intj=0)

{x=i;y=j;}

intget(inti,intj)

{returni+j;}

};

voidmain()

{Testt1(),t2(3,4);

int(Test::*p)(int,int=40);

p=Test::get:

cout<<(t1.*p)(7)<<endl;

Test*p1=&t2;

cout<<(p1->*p)(7,20)<<endl;

}2.下列说法中正确的是

A.类定义中只能说明成员函数的函数头,不能定义函数体B.类中的成员函数可以在类体中定义,也可以在类体之外定义C.类中的成员函数在类体之外定义时必须要与类声明在同一文件中D.在类体之外定义的成员函数不能操作该类的私有数据成员3.下面Shape类是一个表示形状的抽象类,Area()为求图形面积的函数。请从Shape类派生梯形类(Trapezoid)、圆形类(Circle),三角形类(Triangle),并给出具体的求面积函数。其中,所有派生类计算面积需要用到的参数由构造函数给出,梯形面积计算需要上底、下底和高,三角形面积需要底和高,圆形面积需要半径。

形状的抽象类声明如下:

classShape{

public:

virtualdoubleArea()=0;

};4.设类A有成员函数voidf(void);,若要定义一个指向类成员函数的指针变量pf来指向f,该指针变量的声明语句是______。5.UML中实例连接反映对象之间的静态关系,消息连接描述对象之间的______关系。6.有以下程序段,其输出结果是______

#include<iostream>

usingnamespacestd;

voidmain()

{charb[]="Hello,you";

b[5]='!';

coutbendl;

}A.Hello,youB.HelloC.Hello!youD.!7.vector类中用于获取向量可以容纳最多对象的个数的方法是______。8.#include<iostream>

usingnamespacestd;

classA

{private:

intden;

intnum;

public:

A(intd=0,intn=1):den(d),num(n){}

friendA&operator+=(A&,A&);

voidshow(){cout<<den<<'/'<<num;}

};

friendA&operator+=(A&f1,A&f2)

{f1.den=f1.den*f2.hum+f1.num*f2.den;

f1.num*=f2.num;

returnf1;

}

voidmain()

{Afr(3,4);

fr+=A(5,7);

fr.show();

cout<<endl;

}9.下列对静态成员函数描述正确的是

A.静态成员函数中可使用1个this指针B.静态成员函数中不能使用this指针C.静态成员函数中可使用多个this指针D.静态成员函数中只可使用1个that指针10.在下面程序横线处填上适当内容,使程序执行结果为:

x=0.y=0

x=1,y=2

x=10.y=20

程序如下:

#include<iostream.h>

classSample

{

intx,y;

public:

Sample(){______}

Sample(______){x=a;y=b;}

voiddisp()

{

cout<<"x="<<x<<",y="<<y<<endl;

}

};

voidmain()

{

Samples1,s2(1,2),s3(10,20);

Sample*pa[3]={&s1,&s2,&s3};

for(inti=0;i<3;i++)

pa[i]->disp();

}11.在下面横线处填上求两个浮点数之差的cha函数的原型声明、调用方法。

#include<iostream>

usingnamespacestd;

voidmain()

{floata,b;

______//函数cha的原型声明

a=12.5;

b=6.5;

floatc=______;//调用函数cha

cout<<c<<endl;

}

floatcha(floatx,floaty)

{floatw;

w=x-y;

returnw;

}12.结构体中,没有使用private定义的成员函数,默认为______。13.假定一个类的构造函数为A(intaa,intbb){a=aa++;b=a*++bb;},则执行Ax(4,5);语句后,x.a和x.b的值分别为______A.4和5B.4和20C.4和24D.20和514.假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行"delete[]px;"语句时调用该类析构函数的次数为

A.0B.1C.nD.n+115.C++输入/输出操控符中,含义是设置转换基数为十进制的是______。16.下列指针的定义和使用中,错误的是______A.inti;int*ptr=&i;B.inti;int*ptr;i=*ptr;C.int*ptr;ptr=0;D.inti=5;int*ptr;*ptr=i;17.在保护派生中,基类权限为public的成员在派生类中为______。18.给出以下程序的输出结果。

#include<iostream>

usingnamespcestd;

template<classT>

classpair

{

Tvalue1,value2;

public:

pair(Tfirst,Tsecond)

{value1=first;value2=second;}

Tgetmax();

};

template<classT>

Tpair<T>::getmax()

{

Tretval;

retval=value1>value2?value1:value2;

returnretval;

}

voidmain()

{

pair<int>myobject(100,75);

cout<<myobject.getmax()<<endl;

}19.完成下面类中成员函数的定义。

#include<iostream>

#include<string>

usingnamespacestd;

classstr

{private:

char*st;

public:

str(char*a)

{set(a);}

str&operator=(______)

{deletest;

set(a.st);

return*this;

}

voidshow(){cout<<st<<endl;}

~str(){deletest;}

voidset(char*s)//初始化st

{______

strcpy(st,s);

}

};

voidmain()

{

strs1("he"),s2("she");

s1.show(),s2.show();

s2=s1;

s1.show(),s2.show();

}20.下列叙述中,错误的是______A.bad()函数功能表示如果进行非法操作,返回ture,否则返回falseB.ios_base::in打开文件用于输入(输入流的打开模式)C.ios_base::ate打开一个已有的输入或输出文件并查找到文件尾D.ios_base::out打开文件进行读操作21.下面程序运行的结果是______。

#include<iostream.h>

voidmain(){

cout.fill('*');

cout.width(6);

cout"hello"endl;

cout.clear();

}22.#include<iostream>

usingnamespacestd;

voidmain(){

inta;

cin>>a;

return0;

}23.通过______建立的一系列类称为类族。

A.类B.数组C.指针D.继承24.下列程序段的输出结果是______。

cout.setf(ios::showpos);

cout<<509.3<<endl;25.类对象一般都包括数据成员和______。第1卷参考答案一.历年考点试题黑钻版1.参考答案:4727[考点]类和对象[解析]cout<<(t1.*p)(7)<<endl;执行之前赋值j=40,i=7,则p=Test::get()=47;cout<<(p1->*p)(7,20)<<endl;执行的操作是7+20=27。2.参考答案:B3.参考答案:classCircle:publicShape

{

public:

Circle(doubler){radius=r;}

doubleArea()const{return3.1416*radius*radius;}

private:

doubleradius;

};

classTrapezoid:publicShape

{

public:

Trapezoid(doubletop,doublebottom,doublehigh)

{

T=top;

B=bottom;

H=high;

}

doubleAtea()const

{

return(T+B)*H*0.5;

}

private:

doubleT,B,H;

};

classTriangle:publicShape

}

public:

Triangle(doublebottom,doubleheight)

{

B=bottom;

H=height;

}

doubleArea()const

{

returnB,H*0.5;

}

private:

doubleB,H;

};4.参考答案:void(A::*pf)(void)=&A::f;5.参考答案:动态6.参考答案:C[解析]语句b[5]='!';将字符数组b中的第六个字符“,”改为“!”。故输出字符数组b为Hello!you。7.参考答案:max_size()8.参考答案:friendA&operator+=(A&f1,A&f2)有误[考点]运算符重载[解析]定义函数时,不能用friend修饰。应该改为A&operator+=(A&f1,A&f2)。9.参考答案:B[解析]静态成员函数没有this指针,所以静态成员函数只能通过对象名(或指向对象的指针)访问该对象的非静态成员。10.参考答案:x=y=0;或x=0;y=0;

inta,intb11.参考答案:floatcha(float,float);

cha(a,b)12.参考答案:public13.参考答案:C14.参考答案:C[解析]本题主要考查的知识点为析构函数和运算符delete。[要点透析]当使用运算符delete删除一个动态对象时,它首先为这个动态对象调用析构函数,然后再释放这个动态对象占用的内存。该类使用new动态创建了n对象,必须使用delete释放产生的对象,每个对象都要释放内存空间,所以调用n次。15.参考答案:dec[考点]C++输入/输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论