




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1-1 1-1 写出下列程序运行后的输出结果。(1)局部变量与全局变量同名。#include int x=1, y=2;max (int x , int y) return xy ? x : y;void main() int x=3; coutmax=max(x, y)n;(2)外部变量的使用。#include extern int a;void decrement(void) a+=10;int a=100;int main() for ( ; a=150 ; ) decrement(); coutaendl; return 0;(3)在局部变量作用域内访问同名的全局变量。#include int a=100;void main() int a=200; couta,:an;1-2 1-2 如下的宏用于求圆的面积,请举例说明在什么情况下将得不到正确结果:#define PI 3.1415926#define AREA(R) PI*R*R1-3 1-3 下面定义了一个宏,并在程序中使用它。请写出编译预处理后所得到的源代码,并分析程序有什么副作用?#define CUBE(X) (X)*(X)*(X). . . . . . int height=100;int volume=CUBE(height+);1-4 1-4 下面的程序使用了条件编译指令,请写出编译预处理后所得到的源代码,并给出程序的运行结果。#include #define MAX 100main()#if MAX99cout This part is compiled . ;#endif1-5 1-5 采用指针方法将一个数组中的所有元素颠倒顺序,结果仍然存放在原来的数组中,要求使用最少的辅助存储单元。1-6 1-6 使用结构变量表示每个学生的信息:姓名、学号和三门课的成绩。从键盘上输入10个学生的数据,然后输出每个学生的姓名和三门课的平均成绩。1-7 1-7 用枚举值MON、TUE、WED、THU、FRI、SAT和SUN表示一个星期中的7天。键盘输入一个06之间的整数,根据输入的整数输出对应的英文缩写。1-8 1-8 编写一个程序,在主函数main()的外部和内部分别声明两个同名的整型变量并赋值,然后在主函数main()中分别访问两个变量。1-9 1-9 采用动态内存分配方法设计一个学生成绩处理程序,要求输入任意数量学生的学号、姓名和四门课的成绩,并按平均成绩高低输出每个学生的姓名和成绩。1-10 1-10 一个程序由两个C+源文件组成,在一个源文件中定义主函数main()并声明一个外部整型变量n,在另一个源文件中定义一个不带参数的函数factorial(void),该函数用于计算变量n的阶乘。编程在主函数main()中输入一个整数并求它的阶乘。1-11 1-11 编写一个函数maxmin(),该函数有两个实型参数,执行函数后,第一个参数为两个参数中值较大者,第二个参数为较小者。要求使用引用作为函数参数,并编写主函数验证你的函数功能。1-12 1-12 编写一个函数swapstruct(),实现交换两个结构变量的功能。编写主函数验证函数swapstruct()的功能,要求使用引用传递参数。1-13 1-13 定义一个带参数的宏,求出三个数中最大的一个数,并进行验证。1-14 1-14 输入一个字符串,根据需要设置条件编译,使之能将输入的字符串以大写字母的形式或小写字母的形式输出。1-15 1-15 假设有三个文件:test1.h、test2.h和test.cpp,在test1.h中定义了一个宏PI,test2.h文件包含了test1.h文件,而test.cpp又文件包含了test1.h文件和test2.h文件。请问编译时会出现什么错误?如何解决?提示:宏的重复定义。 2-1 2-1 以下程序有什么错误?如有请改正它。#include class Point int x, y;public: void Display() coutx=x, y=yendl; ;main() Point point1; point1.x=100; point1.y=200; point1.Display(); 2-2 2-2 写出下列程序运行后的输出结果。#include class Timeprivate: int hour, minute, second;public: void setTime(int h, int m, int s) hour=(h=0 & h=0 & m=0 & s60) ? s:0; ; void showTime() couthour:minute:secondendl; ;void main() Time t1; t1.setTime(14, 52, 66); coutThe time is:; t1.showTime();2-3 2-3 以下程序段有什么错误?并请予以修改。(1)使用静态成员函数。#include #include class Personpublic: char m_strName20; long m_ID;public: Person(char* strName, long ID) strcpy(m_strName, strName); m_ID=ID; static long GetID() return m_ID; ;void main() Person person1(LiuJun,1101640524); coutID=Person:GetID(person1)n;(2)派生类构造函数自动调用基类的构造函数。#include class Pointprotected: int x, y;public: Point(int a , int b) x=a; y=b; ; int getX() return x; ; int getY() return y; ;class Circle : public Pointprotected: int radius;public: Circle(int a=0, int b=0, int r=0) radius=r; ; int getRadius() return radius; ;main() Circle c(100, 150, 200); coutx=c.getX(), y=c.getY(), radius=c.getRadius()endl;(3)使用多继承。#include class Aprotected: int a;public: void SetData(int x) a=x; ; int GetData() return a; ;class Bprotected: int b;public: void SetData(int y) b=y; ; int GetData() return b; ;class C : public A, public Bpublic: void SetData(int x, int y) a=x; b=y; ;main() C c; c.SetData(30, 70); couta=c.GetData(), b=c.GetData()endl;2-4 2-4 写出下列程序运行后的输出结果。(1)不使用虚函数。#include class Apublic: void Show() coutA:shown; ;class B : public Apublic: void Show() coutShow(); pa=&b; pa-Show();(2)不使用虚析构函数。#include class Apublic: A() coutA:destructorn; ;class B : public Apublic: B() coutB:destructorn; ;void main() A *pA=new B; delete pA;(3)通过函数参数类型不同实现函数重载。#include int square(int x) ; float square(float y) ; double square(double z) ; int square(int x) return x*x ; float square(float y) return y*y ; double square(double z) return z*z ; void main() coutsquare(12)n ; coutsquare(2.5)n ; coutsquare(3.5F)n ; (4)通过函数参数个数不同实现函数重载。#include int add(int x , int y) return x+y; int add(int x , int y , int z) return x+y+z; void main() couta=add(10, 50), b=add(10, 50, 30)n;2-5 2-5 一个名为CPerson的类有以下属性:姓名、身份证号、性别和年龄,请用C+语言定义这个类,并为上述属性定义相应的方法。2-6 2-6 设计一个日期类Date,该类用于表示日期值(年、月、日)。要求除了能够通过相应的成员函数设置和获取日期值外,还能够实现将日期加一天的操作。2-7 2-7 建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别和年龄。还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数,声明一个学生对象,然后调用成员函数在屏幕输出学生信息。2-8 2-8 修改习题2-7中的类Student,添加一个静态成员变量,用于表示已创建对象的数量;添加两个静态成员函数,一个用于输出已创建对象的数量,一个用于输出一个学生的姓名和学号。2-9 2-9 将习题2-6中类Date的“日期加一天”成员函数改为友元函数。2-10 2-10 将习题2-7中类Student的学生信息输出函数改为友元函数。2-11 2-11 利用习题2-5中类CPerson派生出类CEmployee(雇员),派生类CEmployee增加了两个新的数据成员,分别用于表示部门和薪水。要求派生类CEmployee的构造函数显式调用基类CPerson的构造函数,可根据需要为派生类增加新的成员函数。2-12 2-12 利用时间类Time和日期类Date(习题2-6)多重派生出日期时间类DateTime,并实现类的基本功能。2-13 2-13 假设将例3-11中类BaseA和BaseB的成员函数setA()和setB()的函数名统一改为set(),请重写main()函数。2-14 2-14 设类X分别派生出类Y和类Z,类Y和类Z又共同派生出类W,请用虚基类方式定义这些类。要求为类简单添加一些成员,并编写main()函数进行验证。2-15 2-15 为了解决例3-12中由于多重继承而产生的二义性问题,可以利用一个指向基类B(或C)的指针指向派生类D的对象。请按此方法编程。2-16 2-16 编写一个工资管理程序,将雇员类作为所有类的基类,其派生类包括经理类、销售员类、计件工类和小时工类。经理享有固定的周薪;销售员的收入是一小部分的基本工资加上销售额的提成;计件工的收入完全取决于其生产的工件数量;小时工的收入以小时计算,再加上加班费。2-17 2-17 修改例3-10中的程序,为类Point、Circle和Cylinder添加计算面积的成员函数Area(),要求函数Area()采用虚函数的形式,并通过基类指针调用虚函数Area()。2-18 2-18 修改例3-10中的程序,将类Point、Circle和Cylinder(圆柱体)的析构函数改为虚析构函数,并编写代码验证你所完成的功能。2-19 2-19 修改习题2-16中的程序,将基类的计算工资函数改为纯虚函数。2-20 2-20 修改习题2-17中的程序,将类Point的计算面积函数Area()改为纯虚函数。2-21 2-21 用函数重载形式编写函数square():求一个int型或double型参数的平方。2-22 2-22 用函数重载方法求两个整数、两个浮点数、两个字符中的最小者。2-23 2-23 修改习题2-7中的类Student,增加以下私有成员变量:高等数学、英语、操作系统、数据结构等四门课的分数和总成绩。修改或增加以下成员函数:初始化学生姓名、学号、性别、年龄和四门课分数的构造函数,输入四门课分数的函数,计算学生总成绩的函数,输出学生信息的函数。编写一个主函数,调用原来的构造函数声明一个学生对象并输入其四门课的分数,再调用新增加的构造函数声明另一个学生对象。最后分别计算两个学生的总分,并在屏幕输出两个学生的所有信息。2-24 2-24 采用类继承的方法(不直接修改类Student)完成习题2-23所要求的功能。2-25 2-25 建立一个名为Teacher的类,该类有以下成员变量:教师姓名、ID号、基本工资、奖金、所得税和实际发放数。还有以下成员函数:两个构造函数,一个用于只初始化教师姓名和ID号,一个用于初始化教师姓名、ID号、基本工资、奖金和所得税;一个输入基本工资、奖金和所得税的函数;一个计算实际发放数的函数;一个输出教师信息的函数。编写主函数,调用第一个构造函数声明一个教师对象并输入其工资,再调用第二个构造函数声明一个教师对象。最后分别计算两个教师的实际发放数,并在屏幕输出。2-26 2-26 为习题2-25中的类Teacher添加两个同名的成员函数Add(),一个函数用于将其他教师的工资加到该教师中(如该教师替其他教师代课),一个函数用于将一个数值加到该教师中(如提高该教师的工资)。在主函数中编写代码验证你完成的功能。2-27 2-27 定义矢量类型,给出平面上两个矢量的加法和减法运算。要求利用非成员函数重载运算符“+”,利用成员函数重载运算符“-”。2-28 2-28 采用重载运算符“+”的方法实现习题2-6要求的“日期加一天”操作。2-29 2-29 采用重载运算符“+”的方法完成习题2-26中的两种工资增加功能。2-30 2-30 编写一个函数模板:求三个数中的最大数。2-31 2-31 编写一个冒泡排序的函数模板,并利用它分别对int型数和字符进行排序。2-32 2-32 定义一个Interger类模板,用它来实现C+的各种整数类型。2-33 2-33 定义一个堆栈的类模板,并实现堆栈初始化、进栈和出栈等操作。2-34 2-34 采用另一种方法完成习题2-16:将计算工资函数定义为非成员函数(不作为每一个类的成员函数)。提示:使用RTTI技术,将基类指针作为非成员函数的参数。2-35 2-35 定义一个类和派生类,并分别声明它们的对象,然后输出对象的类型。 2-1 2-1 以下程序有什么错误?如有请改正它。#include class Point int x, y;public: void Display() coutx=x, y=yendl; ;main() Point point1; point1.x=100; point1.y=200; point1.Display(); 2-2 2-2 写出下列程序运行后的输出结果。#include class Timeprivate: int hour, minute, second;public: void setTime(int h, int m, int s) hour=(h=0 & h=0 & m=0 & s60) ? s:0; ; void showTime() couthour:minute:secondendl; ;void main() Time t1; t1.setTime(14, 52, 66); coutThe time is:; t1.showTime();2-3 2-3 以下程序段有什么错误?并请予以修改。(1)使用静态成员函数。#include #include class Personpublic: char m_strName20; long m_ID;public: Person(char* strName, long ID) strcpy(m_strName, strName); m_ID=ID; static long GetID() return m_ID; ;void main() Person person1(LiuJun,1101640524); coutID=Person:GetID(person1)n;(2)派生类构造函数自动调用基类的构造函数。#include class Pointprotected: int x, y;public: Point(int a , int b) x=a; y=b; ; int getX() return x; ; int getY() return y; ;class Circle : public Pointprotected: int radius;public: Circle(int a=0, int b=0, int r=0) radius=r; ; int getRadius() return radius; ;main() Circle c(100, 150, 200); coutx=c.getX(), y=c.getY(), radius=c.getRadius()endl;(3)使用多继承。#include class Aprotected: int a;public: void SetData(int x) a=x; ; int GetData() return a; ;class Bprotected: int b;public: void SetData(int y) b=y; ; int GetData() return b; ;class C : public A, public Bpublic: void SetData(int x, int y) a=x; b=y; ;main() C c; c.SetData(30, 70); couta=c.GetData(), b=c.GetData()endl;2-4 2-4 写出下列程序运行后的输出结果。(1)不使用虚函数。#include class Apublic: void Show() coutA:shown; ;class B : public Apublic: void Show() coutShow(); pa=&b; pa-Show();(2)不使用虚析构函数。#include class Apublic: A() coutA:destructorn; ;class B : public Apublic: B() coutB:destructorn; ;void main() A *pA=new B; delete pA;(3)通过函数参数类型不同实现函数重载。#include int square(int x) ; float square(float y) ; double square(double z) ; int square(int x) return x*x ; float square(float y) return y*y ; double square(double z) return z*z ; void main() coutsquare(12)n ; coutsquare(2.5)n ; coutsquare(3.5F)n ; (4)通过函数参数个数不同实现函数重载。#include int add(int x , int y) return x+y; int add(int x , int y , int z) return x+y+z; void main() couta=add(10, 50), b=add(10, 50, 30)n;2-5 2-5 一个名为CPerson的类有以下属性:姓名、身份证号、性别和年龄,请用C+语言定义这个类,并为上述属性定义相应的方法。2-6 2-6 设计一个日期类Date,该类用于表示日期值(年、月、日)。要求除了能够通过相应的成员函数设置和获取日期值外,还能够实现将日期加一天的操作。2-7 2-7 建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别和年龄。还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数,声明一个学生对象,然后调用成员函数在屏幕输出学生信息。2-8 2-8 修改习题2-7中的类Student,添加一个静态成员变量,用于表示已创建对象的数量;添加两个静态成员函数,一个用于输出已创建对象的数量,一个用于输出一个学生的姓名和学号。2-9 2-9 将习题2-6中类Date的“日期加一天”成员函数改为友元函数。2-10 2-10 将习题2-7中类Student的学生信息输出函数改为友元函数。2-11 2-11 利用习题2-5中类CPerson派生出类CEmployee(雇员),派生类CEmployee增加了两个新的数据成员,分别用于表示部门和薪水。要求派生类CEmployee的构造函数显式调用基类CPerson的构造函数,可根据需要为派生类增加新的成员函数。2-12 2-12 利用时间类Time和日期类Date(习题2-6)多重派生出日期时间类DateTime,并实现类的基本功能。2-13 2-13 假设将例3-11中类BaseA和BaseB的成员函数setA()和setB()的函数名统一改为set(),请重写main()函数。2-14 2-14 设类X分别派生出类Y和类Z,类Y和类Z又共同派生出类W,请用虚基类方式定义这些类。要求为类简单添加一些成员,并编写main()函数进行验证。2-15 2-15 为了解决例3-12中由于多重继承而产生的二义性问题,可以利用一个指向基类B(或C)的指针指向派生类D的对象。请按此方法编程。2-16 2-16 编写一个工资管理程序,将雇员类作为所有类的基类,其派生类包括经理类、销售员类、计件工类和小时工类。经理享有固定的周薪;销售员的收入是一小部分的基本工资加上销售额的提成;计件工的收入完全取决于其生产的工件数量;小时工的收入以小时计算,再加上加班费。2-17 2-17 修改例3-10中的程序,为类Point、Circle和Cylinder添加计算面积的成员函数Area(),要求函数Area()采用虚函数的形式,并通过基类指针调用虚函数Area()。2-18 2-18 修改例3-10中的程序,将类Point、Circle和Cylinder(圆柱体)的析构函数改为虚析构函数,并编写代码验证你所完成的功能。2-19 2-19 修改习题2-16中的程序,将基类的计算工资函数改为纯虚函数。2-20 2-20 修改习题2-17中的程序,将类Point的计算面积函数Area()改为纯虚函数。2-21 2-21 用函数重载形式编写函数square():求一个int型或double型参数的平方。2-22 2-22 用函数重载方法求两个整数、两个浮点数、两个字符中的最小者。2-23 2-23 修改习题2-7中的类Student,增加以下私有成员变量:高等数学、英语、操作系统、数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养猪专业试题及答案
- 养殖专业试题及答案
- 财务相关专业试题及答案
- 绿化专业面试题及答案
- 甘肃省金太阳2026届高三9月开学联考(26-1002C)物理(含答案)
- 飞机多学科优化设计MDO提纲
- 火电燃料专业试题及答案
- 湖南省百师联盟2024-2025学年高二上学期1月期末检测生物学试卷(含答案)
- 河北省石家庄高新区外国语学校2025-2026学年八年级上学期开学测试英语试卷(含答案)
- 福建省泉州市安溪县2024-2025学年高二上学期11月期中考试语文试卷(含答案)
- 电气工程设计课件
- 泌尿男生殖系统肿瘤诊疗规范
- 肝癌介入治疗护理查房
- 2025至2030中国铅酸电池(铅酸电池)行业项目调研及市场前景预测评估报告
- 双膝关节骨性关节炎护理
- 乡镇财务培训教程课件
- 重晶石矿购销合同
- 服务认证培训课件
- 小红书介绍教学课件
- 货物应急响应管理制度
- 验收程序及管理制度
评论
0/150
提交评论