中兴软创C++笔试
中兴软创C++笔试
姓名 ____________ 学校 ____________ 电话 ___________
一、填空
1.在类中必须声明成员函数可以写在类外。
2.如果需要在被调函数运行期间,改变主调函数中实参变量的值,则函数的形参应该是 引用 类型或 指针 类型。 3. 4.进行函数重载时,被重载的同名函数如果都没有用const修饰,则它们的形参 个数 或 类型 必须不同。
5.通过一个函数。
6.函数的递归调用是指函数直接或间接地调用 7.拷贝构造函数的形参必须是
二、阅读下列程序,写出其运行时的输出结果
如果程序运行时会出现错误,请简要描述错误原因。 1.请在以下两题中任选一题,该题得分即为本小题得分。如两题都答,则取两题得分之平均值为本小题得分。 (1)程序:
#include #include class Base { private:
char msg[30]; protected: int n; public:
Base(char s[],int m=0):n(m) { strcpy(msg,s); }
void output(void)
{ cout
class Derived1:public Base
{ private: int n; public:
Derived1(int m=1):
Base(
{ n=m; }
void output(void) { cout
class Derived2:public Derived1 { private: int n;
public:
Derived2(int m=2):
Derived1(m-1)
{ n=m; }
void output(void) { cout
void main(void) {
Base B(
(2)程序:
#include class Samp {public:
void Setij(int a,int b){i=a,j=b;} ~Samp() { }
int GetMuti(){return i*j;}
cout
};
int main() {
Samp *p; p=new Samp[5]; int i; int j;
protected:
if(!p) { }
for(int j=0;j
p[j].Setij(j,j);
cout
}
for(int k=0;k
cout
delete[]p; return 0;
2.请在以下两题中任选一题,该题得分即为本小题得分。如两题都答,则取两题得分之平均值为本小题得分。 (1)程序:
#include #include class Vector {
public:
Vector(int s=100); int& Elem(int ndx); void Display(void); void Set(void); ~Vector(void); protected: int size; int *buffer;
};
Vector::Vector(int s) {
buffer=new int[size=s]; }
int& Vector::Elem(int ndx) {
if(ndx=size) {
cout
return buffer[ndx]; }
void Vector::Display(void) {
for(int j=0; j
void Vector::Set(void) {
for(int j=0; j
Elem(j)=j+1;
cout
}
Vector::~Vector(void) {
delete[] buffer; }
void main() {
Vector a(10); Vector b(a); a.Set(); b.Display(); }
(2)程序:
#include
class CAT
{
public:
CAT();
CAT(const &CAT); ~CAT();
int GetAge(){ return *itsAge; } void SetAge( int age ) { *itsAge=age; } protected: };
CAT::CAT() { }
itsAge=new int; *itsAge=5; int * itsAge;
CAT::~CAT() { }
void main() { CAT a;
cout
cout
cout
delete itsAge; itsAge=NULL;
三、阅读下列程序及说明和注释信息,在方框中填写适当的程序段,使程序完成指定的功能
程序功能说明:从键盘读入两个分别按由小到大次序排列的整数序列,每个序列10个整数,整数间以空白符分隔。用这两个序列分别构造两个单链表,每个链表有10个结点,结点的数据分别按由小到大次序排列。然后将两个链表合成为一个新的链表,新链表的结点数据仍然按由小到大次序排列。最后按次序输出合
并后新链表各结点的数据。
程序运行结果如下,带下划线部分表示输入内容,其余是输出内容:
1 3 5 7 9 11 13 15 17 19 2 4 6 8 10 12 14 16 18 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#include #include
//类定义部分
template class Node {
private:
Node *next; //指向后继节点的指针 public:
T data; //数据域
Node (const T& item, Node* ptrnext = NULL); // 构造函数 void InsertAfter(Node *p); //在本节点之后插入一个同类节点p Node *DeleteAfter(void); //删除本节点的后继节点,返回其地址 Node *NextNode(void) const; // 获取后继节点的地址 };
template class LinkedList {
private:
Node *front, *rear; // 表头和表尾指针
Node *prevPtr, *currPtr; //记录表当前遍历位置的指针,由插入和删除操作更新 int size; // 表中的元素个数
int position; // 当前元素在表中的位置序号。由函数Reset使用 Node *GetNode(const T& item,Node *ptrNext=NULL);
// 生成新节点,数据域为item,指针域为ptrNext void FreeNode(Node *p); //释放节点
void CopyList(const LinkedList& L); // 将链表L 拷贝到当前表
//(假设当前表为空)。被拷贝构造函数、operator=调用
public:
LinkedList(void); // 构造函数
LinkedList(const LinkedList& L); //拷贝构造函数 ~LinkedList(void); // 析构函数
LinkedList& operator= (const LinkedList& L);//重载赋值运算符 int ListSize(void) const; //返回链表中元素个数(size) int ListEmpty(void) const; //size为0时返回TRUE,否则返回FALSE void Reset(int pos = 0); //将指针currPtr移动到序号为pos的节点, //prevPtr相应移动,position记录当前节点的序号 void Next(void); //使prevPtr和currPtr移动到下一个节点
int EndOfList(void) const; // currPtr等于NULL时返回TRUE, 否则返回FALSE int CurrentPosition(void) const; //返回数据成员position
void InsertFront(const T& item); //在表头插入一个数据域为item的节点 void InsertRear(const T& item); //在表尾添加一个数据域为item的节点 void InsertAt(const T& item); //在当前节点之前插入一个数据域为item的节点 void InsertAfter(const T& item); //在当前节点之后插入一个数据域为item的节点 T DeleteFront(void); //删除头节点,释放节点空间,更新prevPtr、currPtr和size void DeleteAt(void); //删除当前节点,释放节点空间,更新prevPtr、currPtr和size T& Data(void); // 返回对当前节点成员data的引用
void ClearList(void); // 清空链表:释放所有节点的内存空间。 };
//类实现部分略......
template
void MergeList(LinkedList* la, LinkedList* lb,LinkedList* lc) {
//合并链表la和lb,构成新链表lc。
}
void main(void) {
LinkedList la, lb, lc; int item, i; la.Reset();
lb.Reset();
MergeList(&la, &lb, &lc);//合并链表 lc.Reset();
cout
相关文章
- 中兴公司计算机专业应届生笔试试卷(03)
- 技术类求职经验
- ask笔试题目
- 合工大研究生复试
- 中兴校园面试经验
- 软件公司入职面试笔试题(C++)
- 图像处理就业分析
- 浙商银行笔试题型考试题面试题大全
- 各公司面试笔试题
本试卷分三部分,公共部分.C++部分和JAVA 部分,其中公共部分为必考部分, C++与JAV 部分,两者选一完成.试卷满分100分. 公共部分(50分) 1:作业调度程序从处于___ D ____状态的队列中选择适当的作业投入运行.(3分 ...
前言: 前些日子看了Steve兄的求职分享帖,写的很好,相信对于将来想从事非技术类的师弟师妹们,一定有很大的积极作用. 相信我们09级的同学们很多人还记得07级信通院求职交流会中大脑门师兄的求职分享,我的自我介绍就是完全以大脑门师兄的模板为 ...
瀚海星云 - 同主题文章阅读 讨论区:Job 版主: wZhOu wqstar davyxun 回复本文 本讨论区 chord 121 381 31 364 本文: [转寄][转贴][删除][修改][回复][作者:chord][人气:262 ...
合肥工业大学2016年硕士研究生招生考试复试科目要求 001仪器科学与光电工程学院 联系电话:0551-62901513传真:0551-62901508联系人:袁老师 各专业复试科目包括英语听力测试.英语口语测试.专业综合课笔试及综合素质面 ...
中兴面试经验 导语:商立方高端商务平台根据自己用户真实体验,整理出用户的面试经验,与大家分享,共同进步. 大概在笔试三天之后收到了一面通知,由于这次中兴招聘以研究生为主所以本科生面试时间比较晚. 一面是专业面试.去之前一直在准备硬件的知识, ...
C++/C试题 本试题仅用于考查C++/C程序员的基本编程技能.内容限于C++/C常用语法,不涉及数据结构.算法以及深奥的语法.考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力. 笔试时间90分钟 ...
(转载)图像处理面试方法和前景 2011-04-27 17:05:16| 分类: 默认分类|字号 订阅 最近版上有不少人在讨论图像处理的就业方向,似乎大部分都持悲观的态度.我想结合我今年找工作的经验谈谈我的看法. 就我看来,个人觉得图像处理 ...
目录 浙商银行笔试题笔经..........................................................................................1 浙商银行面试题面经....... ...
■华为笔试题 1.请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图. 2.请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP与UDP呢 ? 3.请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的 ...