第一范文网 - 专业文章范例文档资料分享平台

C++程序设计模拟试题及答案

来源:用户分享 时间:2025/6/10 4:50:29 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

access=filebuf::openprot);

ifstream::ifstream(const char *fname,int mode=ios::in,int access=filebuf::openprot); 其中,第一个参数是用来传递文件名的;第二个参数mode的值决定文件将如何被打开;第三个参 数access的值决定文件的访问方式,一般取缺省值filebuf::openprot,表示是普通文件。 mode的取值如下:(1)ios::in:打开一个文件进行读操作,而且该文件必须已经存在 ;(2)ios::nocreate:不建立新的文件。当文件不存在时,导致open()失败

;(3)ios::noreplace:不修改原来已经存在的文件。若文件已经存在,导致open()失败 ;(4)ios::binary:文件以二进制方式打开,缺省时为文本文件。

19. 如果要把类B的成员函数void fun()说明为类A的友元函数,则应在类A中加入语句___。 答案:(P111)friend void B::fun();

[解析]声明成员函数作为另外一个类的友元函数时,使用类作用域运算符::。 20. 在编译指令中,宏定义使用___指令。 答案:(P6、97)#define

[解析]静态成员是所有对象共享的特征,也就是类的特征。

三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下 横线标出错误所在行并给出修改意见。 1. #include

#include #include using namespace std; class A {public:

A(const char *na){strcpy(name,na);} private:

char name[80]; };

class B:public A { public:

B(const char *nm):A(nm){} void show(); };

void B::show()

{ cout<<\}

void main() { B b1(\b1.show(); }

答案:private:因为name如果是私有的,在派生类中无法访问,而基类没有提供成员函数来访问 name,所以更改name访问权限为公有或保护,这样对于派生类来说是透明的。 [修改]public:或protected: 2. #include void f(int *a,int n) {int i=0,j=0; int k=0;

for(;i

21

{k=a[i];

a[i]=a[n-i-1]; a[n-i-1]=k; } }

void show(int a[],int n) {for(int i=0;i

void main() {int p[5]; int i=0,n=5; for(;i<5;i++) {p[i]=i;} f(*p,n); show(p,n);

答案: [修改]f(p,n);

[解析]f(*p,n);f函数第一个参数是指针而调用时使用*p,*p表示p所指向的变量或对象,不是 地址即不是指针。

3. #include void main() {int i(3),j(8); int * const p=&i; cout<<*p<

cout<<*p<

答案:int * const p=&i;在指针变量前加const表示一个常指针即地址不能变化,它指向的变 量不能改变且定义时必须设置指向变量或对象的地址。 [修改]int *p=&i;

4. #include void main() {int i,*p; i=10; *p=i;

cout<<*p<

答案:*p=i;指针即地址没有被赋值。 [修改]p=&i;

5. #include class A {private: int x,y; public:

void fun(int i,int j)

22

{x=i;y=j;} void show()

{cout<

void main() {A a1; a1.fun(2); a1.show(); }

答案:void fun(int i,int j)调用时有一个参数,形参有两个,可以使第二个带默认值。 [修改]void fun(int i,int j=0)

四、完成程序题(本大题共5小题,每小题4分,共20分) 1. 完成下面类中成员函数的定义。

#include #include using namespace std; class str {private: char *st; public:

str(char *a) {set(a); }

str & operator=(____) {delete st; set(a.st); return *this; }

void show(){cout<

void set(char *s)//初始化st {_____

strcpy(st,s); } };

void main()

{str s1(\s1.show(),s2.show(); s2=s1;

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

答案:str &a,st=new char[strlen(s)+1];

[解析]对“=”运算符进行重载,调用时s2=s1,都是对象,所以形参使用对象的引用,不 要使用对象作为形参(产生临时对象)。使用strcpy进行字符的复制,st必须有一定的空间,空 间是strlen(s)+1(‘\0’作为结束符,strlen得到的长度不包括结束符)。

2. 一个类的头文件如下所示,num初始化值为5,程序产生对象T,且修改num为10,并使用 show()函数输出num的值10。

23

#include class Test {private:

static int num; public: Test(int); void show(); };

_________

Test::Test(int n) {num=n;}

void Test::show() {cout<

答案:int Test::num=5;,t.show();

[解析]静态成员在类外初始化,注意它的格式。调用show输出。

3. 下面是一个三角形三边,输出其面积C++程序,在下划线处填上正确的语句。 #include #include void area() {double a,b,c;

cout<<\________

if(a+b>c&&a+c>b&&c+b>a) {double l=(a+b+c)/2; _______

cout<<\} else

cout<<\}

void main() {area();}

答案:cin>>a>>b>>c;,double s=sqrt(l*(l-a)*(l-b)*(l-c));

[解析]输入三个边的长度,由公式得出三角形的面积double s=sqrt(l*(l-a)*(l-b)*(l-c)); 4. 下面程序中Base是抽象类。请在下面程序的横线处填上适当内容,以使程序完整,并使程序 的输出为: Der1 called! Der2 called!

#include class Base {public:

_______________;

24

搜索更多关于: C++程序设计模拟试题及答案 的文档
C++程序设计模拟试题及答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4fgqh3f006670et7bbez_6.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top