欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    10级CPP2试题.docx

    • 资源ID:10515053       资源大小:21.71KB        全文页数:24页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    10级CPP2试题.docx

    1、10级CPP2试题成绩上海大学20102011学年度春季学期试卷课程名: 高级语言程序设计(二) 课程号: 08305002 学分: 4 应试人声明: 我保证遵守上海大学学生手册中的上海大学考场规则,如有考试违纪、作弊行为,愿意接受上海大学学生考试违纪、作弊行为界定及处分规定的纪律处分。应试人 应试人学号 应试人所在院系 题号一(30)二(20)三(20)四(30)得分得分 一、判断题(每小题2分,共30分)1. 当不指定访问属性时,类(class)的成员的默认访问属性是private,而结构体(struct)的成员的默认访问属性为public。 ()2. 类是对象的抽象,而对象是类的具体实例

    2、。 ()3. 可以重载类的构造函数。 ()4. 可以重载类的析构函数。 ()5. 只要类的对象不带资源,就不需要定义复制构造函数,而直接利用系统提供的默认复制构造函数即可。 ()6. 所有对象(包括全局对象、局部对象、动态对象)都是先构造者后被析构。 ()7. 对于class A;创建堆对象数组的语句A *p = new A10;将会调用10次默认的构造函数。 ()8. 类的静态数据成员不占用具体对象的数据空间。 ()9. 只能通过类的对象才能调用类的静态成员函数。 ()10. 类的友元函数不能访问该类对象的protected及private成员。 ()11. 系统提供的默认赋值运算符函数的功

    3、能是按非静态数据成员依次执行该数据成员的赋值运算。 ()12. 重载运算符不能改变运算符的优先级、操作数的个数、结合方向。 ()13. 创建派生类的对象时,先调用基类的构造函数,后执行派生类的构造函数。 ()14. 派生类没有继承基类的访问属性为private的数据成员和成员函数。 ()15. 含有纯虚函数的类为抽象类。可以创建抽象类的对象。 ()得分二、填空题(每空2分,共20分)如下是为了处理单向链表所设计的类模板,请根据代码及其运行结果,完成程序。/ LinkList.h (头文件)#ifndef LINKLIST_H#define LINKLIST_H#include using na

    4、mespace std;template struct Node T x; Node *next ;template class LinkListprivate: Node *head;public: LinkList(int n=0, const T *a=NULL) : head(NULL) Node *p; if(n=0; i- ) p = new Node; p-x = ai; p-next = head; head = p; LinkList(const LinkList &link) : head(NULL或0) / 深复制构造 *this = link; / 利用深赋值运算 Li

    5、nkList & operator =(const LinkList &link) / 深赋值运算 if(&link = this) return *this; FreeList(); Node *p, *q; for(p=link.head; p!=NULL; p=p-next) if(head=NULL) head = q = new Node; else q-next = new Node; q = q-next; q-x = p-x ; q-next = NULL; return *this; virtual LinkList() FreeList(); void Insert(con

    6、st T &t); / 插入一个结点到链首结点前 void FreeList(); / 释放所有结点 int Num() const; / 统计并返回链表中结点的个数 LinkList operator+(const LinkList &link) const; / 将两条链表拼接成一条新链表 template friend / 友元函数,重载插入运算符 ostream & operator(ostream &out, const LinkList &link); / 限于篇幅,其他函数略;template LinkList LinkList: operator+(const LinkList

    7、 &link) const if(head=NULL) return link; if(link.head=NULL) return *this; LinkList result(*this); Node *p, *q; for(q=result.head; q-next!=NULL; q=q-next) ; for(p=link.head; p!=NULL; p=p-next) q-next = new Node; q = q-next; q-x = p-x; q-next = NULL; return result;template ostream & operator(ostream &

    8、out, const LinkList &link) out head; for(Node *p=link.head; p!=NULL; p=p-next) out x; out NULL; return out ;template void LinkList:Insert(const T &t) Node *p = new Node; p-x = t; p-next = head; head = p;template void LinkList:FreeList() Node *p; while(head) p = head; head = head-next ; delete p; tem

    9、plate int LinkList:Num() const int n=0; for(Node *p=head; p!=NULL或p ; p=p-next) n+; return n;#endif/ testLinkList.cpp (源程序文件)#include #include #include LinkList.husing namespace std;int main() int a5 = 1, 3, 5, 7, 9, b4 = 2, 4, 6, 8; LinkList linkA(5, a), linkB(4, b), linkC; cout linkA n linkB n lin

    10、kC endl; linkC = linkA + linkB; cout linkC endl; cout = endl; char str = Hello; LinkList linkX; for(int i=strlen(str)-1; i=0; i-) linkX.Insert(stri); LinkList linkY = linkX; cout linkX n linkY 1 - 3 - 5 - 7 - 9 - NULLhead - 2 - 4 - 6 - 8 - NULLhead - NULLhead - 1 - 3 - 5 - 7 - 9 - 2 - 4 - 6 - 8 - NU

    11、LL=head - H - e - l - l - o - NULLhead - H - e - l - l - o - NULL得分三、阅读程序写出运行结果或简答问题(共20分)以下各小题所涉及的类均为如下文件中所设计的class Student;。文件Student.h和Student.cpp文件的内容如下。/ Student.h (头文件)#ifndef STUDENT_H#define STUDENT_H#include #include using namespace std;class Studentpublic: Student( string Id=*, string Name

    12、=NoName, char Gender=m, double Score=100); / 构造函数 Student(const Student &s); / 复制构造函数 Student(); / 析构函数 Student & operator=(const Student &s); / 重载赋值运算符函数 void ChangeId(const string Id); / 修改学号 void ChangeName(const string Name); / 修改姓名 void ChangeScore(double Score); / 修改成绩 void ChangeGender(char G

    13、ender); / 修改性别 friend ostream & operator(ostream &out, const Student &s); / 重载插入运算符函数 static void Show(ostream &out); / 输出平均分、性别比率private: / 数据成员 string id, name; / 学号、姓名 char gender; / 性别 double score; / 成绩 static int male, female; / 男生及女生人数(静态数据成员) static double sum; / 所有学生成绩之和(静态数据成员);#endif/ Stu

    14、dent.cpp (源程序文件)#include Student.h#include int Student:male = 0;int Student:female = 0;double Student:sum = 0;Student:Student(string Id, string Name, char Gender, double Score) : id(Id), name(Name), gender(Gender), score(Score) if(gender=m | gender=M) gender = m; male+; else gender = f; female+; sum

    15、 += score; cout 构造对象 *this endl;Student:Student(const Student &s) : id(s.id), name(s.name), gender(s.gender), score(s.score) if(gender=m) male+; else female+; sum += score; cout 复制构造对象 *this endl;Student:Student() sum -= score; if(gender=m) male-; else female-; cout 析构对象 *this endl;Student & Student

    16、:operator=(const Student &s) sum -= score; if(gender=m) male-; else female-; id = s.id; name = s.name; gender = s.gender; score = s.score; if(gender=m) male+; else female+; sum += score; return *this;ostream & operator(ostream &out, const Student &s) out setw(4) s.id left setw(10) s.name right s.gen

    17、der s.score; return out;void Student:Show(ostream &out) int n = male + female; if(n=0) out * 无信息 * endl; else out average: sum/n tmale: male ( 100*male/n %) tfemale: female ( 100*female/n %) endl;void Student:ChangeId(const string Id) id = Id; void Student:ChangeName(const string Name) name = Name;

    18、void Student:ChangeScore(double Score) sum += Score-score; score = Score;void Student:ChangeGender(char Gender) if(gender=m) male-; else female-; gender = (Gender=m | Gender=M)? m : f; if(gender=m) male+; else female+;运行结果(1)波浪号下划线处不需要填写(下同)构造对象 0001 Zhang San m 86 构造对象 0002 Li Si f 88 return. 析构对象

    19、0002 Li Si f 88 析构对象 0001 Zhang San m 86 (1) (4分)指出如下程序的运行结果#include Student.hint main() Student s1(0001, Zhang San, M, 86); Student s2(0002, Li Si, f, 88); cout return. endl; return 0;(2) (4分)指出如下程序的运行结果#include Student.hint main() Student:Show(cout); Student *p1, *p2; p1 = new Student(0001, Zhang

    20、San, M, 86); p2 = new Student(0002, Li Si, f, 88); Student:Show(cout); delete p2; Student:Show(cout); delete p1; return 0;运行结果(2)* 无信息 * 构造对象 0001 Zhang San m 86 构造对象 0002 Li Si f 88 average: 87 male: 1 (50%) female: 1 (50%) 析构对象 0002 Li Si f 88 average: 86 male: 1 (100%) female: 0 (0%) 析构对象 0001 Zh

    21、ang San m 86 (3) (4分)指出如下程序的运行结果#include Student.hint main() Student s1(0002, Li Si, F, 88), s2; cout s1 n s2 endl; Student:Show(cout); s2 = s1; cout s1 n s2 endl; Student:Show(cout); return 0;运行结果(3)构造对象 0002 Li Si f 88 构造对象 * NoName m 100 0002 Li Si f 88 * NoName m 100 average: 94 male: 1 (50%) fe

    22、male: 1 (50%) 0002 Li Si f 88 0002 Li Si f 88 average: 88 male: 0 (0%) female: 2 (100%) 析构对象 0002 Li Si f 88 析构对象 0002 Li Si f 88 (4) (4分)指出如下程序的运行结果#include Student.hint main() Student s4 = Student(0001, Zhang San, M, 86), Student(0002, Li Si, f, 88), s0 ; cout Changing. endl; s2.ChangeId(0003); s2

    23、.ChangeName(Wang Wu); s2.ChangeScore(90); s2.ChangeGender(f); s3.ChangeId(0004); s3.ChangeName(Zhao Liu); s3.ChangeScore(96); s3.ChangeGender(f); Student:Show(cout); cout Return to Operating System. endl; return 0;运行结果(4)构造对象 0001 Zhang San m 86 构造对象 0002 Li Si f 88 复制构造对象 0001 Zhang San m 86 构造对象 *

    24、 NoName m 100 Changing. average: 90 male: 1 (25%) female: 3 (75%) Return to Operating System. 析构对象 0004 Zhao Liu f 96 析构对象 0003 Wang Wu f 90 析构对象 0002 Li Si f 88 析构对象 0001 Zhang San m 86 (5) (4分)结合第(1)-(4)小题,简述Student类的复制构造函数、赋值运算符函数、析构函数的必要性,即:分别简述仅利用系统所提供的默认复制构造函数、默认赋值运算符函数、默认的析构函数将存在什么问题。 答: 因为有些

    25、对象可能采用复制构造函数创建。而默认的复制构造函数不修改类的静态数据成员的值,将会导致第(4)小题计算出错; 仅利用系统提供的默认赋值运算符函数,则第(3)小题计算出错,因为默认的赋值运算符函数不修改类的静态数据成员的值; 仅利用系统提供的默认析构函数,则第(2)小题计算出错,因为默认的析构函数不修改类的静态数据成员的值。得分 四、设计向量类模板(template class Vector;)能使如下测试程序输出指定的结果(30分)。/ 测试程序 testVector.cpp#include Vector.hint main() int a = 1, 3, 5; Vector v1(3, a), v2; cout 请输入一个整数向量,如:(1, 2, 3, 4, 5, 6) v2; cout v1 = v1 nv2 = v2 endl; v1.ReSize(5); v2.ReSize(5); cout v1 = v1 nv2


    注意事项

    本文(10级CPP2试题.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开