c++语言程序设计 问答题 答案,西华大学C++语言程序设计__期末考试试题及答案...

1、1 西华大学 C+语言程序设计 期末考试试题及答案 蒋代军 姓名_ 学号_ 班号_ 题号一二(1)二(2)三总 分 成绩 一、填空 1在类中必须声明成员函数的原型,成员函数的实现部 分可以写在类外。 2如果需要在被调函数运行期间,改变主调函数中实参变量的值,则 函数的形参应该是引用类型或指针类型。 3抽象类只能作为基类使用,而不能声明它的对象。 4进行函数重载时,被重载的同名函数如果都没有用const修饰,则 它们的形参个数或类型必须不同。 5通过一个常对象只能调用它的常成员函数,不能调用其他成员 函数。 6函数的递归调用是指函数直接或间接地调用自身。 7拷贝构造函数的形参必须是本类对象的引用。

2、。 二、阅读下列程序,写出其运行时的输出结果 如果程序运行时会出现错误,请简要描述错误原因。 1请在以下两题中任选一题, 该题得分即为本小题得分。 如两题都答, 则取两题得分之平均值为本小题得分。 (1)程序: #include #include class Base private: char msg30; protected: int n; public: Base(char s,int m=0):n(m) strcpy(msg,s); void output(void) 2 cout class Samp public: void Setij(int a,int b)i=a,j=b; S。

3、amp() cout #include class Vector public: Vector(int s=100); int void Display(void); void Set(void); Vector(void); protected: int size; int *buffer; ; Vector:Vector(int s) buffer=new intsize=s; 4 int CAT(const CAT(); int GetAge() return *itsAge; void SetAge( int age ) *itsAge=age; protected: int * it。

4、sAge; ; CAT:CAT() itsAge=new int; *itsAge=5; CAT:CAT() delete itsAge; itsAge=NULL; int main() CAT a; cout #include / 类定义部分 template class Node private: Node *next; /指向后继节点的指针 public: T data; /数据域 Node (const T / 构造函数 void InsertAfter(Node *p); /在本节点之后插入一个同类节点p Node *DeleteAfter(void); /删除本节点的后继节点, 返。

5、回其地址 Node *NextNode(void) const; / 获取后继节点的地址 ; template class LinkedList private: Node *front, *rear; / 表头和表尾指针 Node *prevPtr, *currPtr; /记录表当前遍历位置的指针, 由插入和删除操作更新 int size; / 表中的元素个数 int position; / 当前元素在表中的位置序号。由函数Reset 使用 Node *GetNode(const T / 生成新节点,数据域为item ,指针域为 ptrNext void FreeNode(Node *p);。

6、 /释放节点 - 7 - void CopyList(const LinkedList / 将链表 L 拷贝到当前表 /(假设当前表为空)。被拷贝构造函数、operator=调用 public: LinkedList(void); / 构造函数 LinkedList(const LinkedList /拷贝构造函数 LinkedList(void); / 析构函数 LinkedList/重载赋值运算符 int ListSize(void) const; /返回链表中元素个数(size ) int ListEmpty(void) const; /size为 0 时返回 TRUE, 否则返回 FA。

7、LSE 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 的节点 void Ins。

8、ertRear(const T /在表尾添加一个数据域为item 的节点 void InsertAt(const T /在当前节点之前插入一个数据域为item 的节点 void InsertAfter(const T /在当前节点之后插入一个数据域为item 的节点 T DeleteFront(void); /删除头节点 , 释放节点空间,更新prevPtr 、currPtr和 size void DeleteAt(void); /删除当前节点 , 释放节点空间,更新prevPtr 、currPtr和 size T / 返回对当前节点成员data 的引用 void ClearList(void。

9、); / 清空链表:释放所有节点的内存空间。 ; / 类实现部分略 template void MergeList(LinkedList* la, LinkedList* lb,LinkedList* lc) / 合并链表 la 和 lb, 构成新链表 lc 。 / 函数结束后,程序的数据所占内存空间总数不因此函数的运行而增加。 - 8 - while ( !la-ListEmpty() la-DeleteAt(); else lc-InsertRear(lb-Data(); lb-DeleteAt(); while ( !la-ListEmpty() ) lc-InsertRear(la-D。

10、ata(); la-DeleteAt(); while ( !lb-ListEmpty() ) lc-InsertRear(lb-Data(); lb-DeleteAt(); int main() LinkedList la, lb, lc; int item, i; / 读如数据建立链表la for (i=0;i item; la.InsertRear(item); - 9 - la.Reset(); / 读如数据建立链表lb for (i=0;i item; lb.InsertRear(item); lb.Reset(); MergeList(/合并链表 lc.Reset(); / 输出各节点数据,直到链表尾 while(!lc.EndOfList() cout lc.Data() “ “; lc.Next(); / 使 currPtr指向下一个节点 cout endl; 。

《西华大学C++语言程序设计__期末考试试题及答案》由会员飞***分享,可在线阅读,更多相关《西华大学C++语言程序设计__期末考试试题及答案》请在金锄头文库上搜索。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值