C++面向对象程序设计(试题与答案)

模拟试题(1)
一、判断对错题(10%)(对√,错×)
()1.自动变量用堆方式创建,它与块共存亡。
()2.运算符+=是右结合的。
()3.表达式cout<<99的类型为int。
()4.++i是左值,但i++不是左值。
()5.Y[I][J]与*(*Y+I)+J不等价。
()6.从外部看类的private 成员和protected成员有区别。
()7.运算符&不可以重载。
()8.基类的protected成员经过protected派生,在派生类中它变成了private成员。()9.2.0/-3.0是一个正确的表达式。
()10.字符'\12'的ASCII为12。
二、填空题(20%)
#include <iostream.h>
typedef struct node
{
long data;
广西教育学院学报
node * next;
};
class stack
{
private:
node * head;
①__________
stack();
~stack();
void push (②__________);
③__________ pop();
④__________ print();
};
stack::stack()
{  head = new ⑤__________
head->next = ⑥__________  }
stack::~stack()风胸
{
node * p;
p = head;
while (p)
{
head = head->next;
⑦__________
p = head;
}
}
void stack::push(long x)
{
node * p = new node;
p->data = x;
p->next = head->next;
⑧__________ = p;
cout<<"Push" <<x<<" ok !"<<endl;
}
long stack::pop()
{
node *p = head->next;
if(p!=NULL)
{
long x = p->data;
head->next = p->next;
⑨__________
cout<<"pop "<<x<<" ok !"<<endl;
return x;
}
else
cout<<"Stack is empty !"<<endl;
return 0;
}
void stack::print()
{
node * p = head->next;
cout<<"Stack_Top"<<endl;
while (p)
{
cout<<p->data<<endl;
⑩__________;
}
cout<<"Stack_bottom"<<endl;
}
三、简答题(20%)(按条列出论点)
1.注解。
2.new运算。
3.宏定义。
4.private成员。
5.构造函数
四、程序设计题(50%)
1.写一基于文件流的程序,删除C++源程序中的单行注解。要求:C++源程序文件名和删除单行注解后的文件名均在命令行中给出。
2.已知A[N]是整数数组,试以递归函数实现求N个整数之和。
3.请为Fraction类(分数类)定义下列重载运算符函数(注意函数原型)
⑪复合赋值运算+=。
⑫等于运算=。
⑬插入运算<<。
class Fraction
{
private:
int fz;    //分子
int fm;  //分母
public:
米老鼠和唐老鸭电影…
};
模拟题一参考答案
一、判断对错题(10%)
本题共10分,每题1分。
①×②√③×④√⑤√
⑥√⑦×⑧√⑨√⑩×
二、填空题(20%)
本题共20分,每空2分。答案只少“;”或“:”等符号的给1分。
①public: ②long ③long ④void ⑤node;
⑥NULL; ⑦delete p; ⑧
head->next
⑨delete p; ⑩p=p->next
三、简要论述题(20%)
本题共20分,每题4分。概念解释正确给2分;论述要求有两条论点,每条给1分
(非参考答案中的论点只要正确同样给分)。
⑪注解
。写程序者为读程序者作的说明。
。C++编译器把所有的注解视为空白。
。注解有多行注解(/* */)和单行注解(//)。
。注解通常用来说明程序或模块的名称、用途、编写时间、编写人、变量说明和算法说明等。⑫new运算
。new是个单目运算,功能是给程序实体动态地分配空间。
。语法格式 X类型指针= new X类型。
。用new 申请空间的同时还可以进行初始化。
。用new 申请的空间可用delete运算收回。
⑬宏定义
。宏定义就是用一个宏名字来命名一个字符串。
。编译预处理时宏名将被用宏体简单替换。
。使用宏定义可以提高程序的可读性、可修改性与可移植性。
。宏定义可以带参数。
⑭private成员
。private成员为类成员的一种类型。
。private成员只能由类作用域中的函数访问。
。基类的private成员在派生类中也是不可见的。
。private成员只能通过public成员访问。
⑮构造函数
一个粗瓷大碗课文教案
构造函数是类的一种特殊成员。
。构造函数用来创建类的对象(实例)。
。构造函数具有特定的名字-与类名相同。
。构造函数可以重载。
四、程序设计题(50%)
本题共50分。(第1、2题各10分;第3题有3小题,每小题10,分共计30分。)
每题评分细则:
①函数原型正确3分(函数返回值类型1分,函数参数类型和个数2分)。
②函数总体结构正确4分(函数的总体结构指主要的循环结构和选择结构)。
③其他3分(实现的细节)。
1.
刚度矩阵
#include <fstream.h>
#include <stdlib.h>
void main(int argc,char * argv[])
{
if (argc!=3) exit(1);
char c0,c1=' ';
int k=1;
ifstream in(argv[1],ios::in|ios::binary);
ofstream out(argv[2],ios::out|ios::binary);
while (!in.eof())
{
if( k&&c0=='/' && c1=='/') k=0;
if( !k&&c0=='\x0d' ) k=1;
if( k&&c1=='/' && c0!='/') out.write(&c1,1);
if( k&&c0!='/') out.write(&c0,1);
c1=c0;
}
in.close();
out.close();
}
2.
int tga(int *a,int n)
{
if(n<1) return (0);
else return(a[n-1]+tga(a,n-1));
}
3.
fraction& fraction::operator +=(fraction & f)
{
fz = fz*f.fm+fm*f.fz;
fm = fm*f.fm;
return *this;
}
②int operator ==(fraction & f1,fraction & f2)
{
if (f1.fz==f2.fz && f1.fm==f2.fm)
return 1;
else
return 0;
}
③ostream & operator<<(ostream & os,fraction & f)
{
os<<f.fz<<"/"<<f.fm<<endl;
return os;
}
模拟试题(2)
一、判断对错题(10分)(对√,错×)
()1.在类定义中不允许对所定义的数据成员进行初始化。
()2.程序中不能直接调用构造函数,在创建对象时系统自动调用构造函数。()3.从外部看类的private 成员和protected成员没有区别。
()4.可以将派生类对象赋给基类对象,也可以将基类对象赋给派生类对象。()5.构造函数和析构函数都不能为虚函数。
()6.C++按列优先存放数组元素。
()7.1/2的值等于0.5。
()8.基类的protected成员经过protected派生后,在派生类中仍为protected成员。()9.所有运算符都可以重载。
()10.表达式cout<<99的类型为int。
二、单项选择题(20分)
1.下列有关类的说法不正确的是(    )。
A. 类是一种用户自定义的数据类型
B. 只有类中的成员函数才能存取类中的私有数据
C.在类中,如果不作特别说明,所有的数据均为私有类型
D. 在类中,如果不作特别说明,所有的成员函数均为公有类型
2.在C++程序中,对象之间的相互通信通过(    )。
A.继承实现
B.调用成员函数实现
C.封装实现
D.函数重载实现
3.对于任意一个类,析构函数的个数有(    )。
A.0
B.1
C.不确定
D.2
4.在下列各函数中, 不是类的成员函数的是()。
A. 构造函数
B. 析构函数
C. 友元函数
D. 拷贝构造函数
5.在多基继承的构造函数定义中,几个基类的构造函数之间用(    )分隔。
A.:B.;C.,D.::
6.若类A和类B的定义如下:
class A
{
int i,j;
public:
void get();
//...
};
class B: A
{
int  k;
public:
void make(int );
//...
};
void B::make(int j)
{
k = i*j;
}
则上述定义中,非法的表达式是(    )。
A.void get();
B.int k;
C.void make(int )
D.k=i*j;
7.已知:print函数是一个类的常成员函数,它无返回值,下列表示中正确的是()。
B.void const print()
C.void print(const)
D.void print()const
8.在类外部可以用p.a的形式访问派生类对象p的基类成员a,则a应是(    )。
瓶装饮用纯净水标准
A.私有继承的公有成员
B.公有继承的私有成员
C.公有继承的保护成员
D.公有继承的公有成员
9.下列关于运算符重载的描述中,正确的叙述是(    )。
A. 运算符重载可以改变运算数的个数
B. 运算符重载可以改变语法结构
C. 运算符重载可以构造新的运算符
D. 运算符重载不可以改变优先级和结合性
10.下列带缺省值参数的函数说明中,正确的说明是(  )。

本文发布于:2024-09-22 07:07:03,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/435039.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   成员   程序
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议