3.使用递归算法编写求斐波那契数列的第n项的函数,并编出主函数进行验证。
4.编写一个求立方的函数cube,并重载它,使之可以对输入的整型量和实型量数值求立方。 5.重载判断两个数值大小的函数max,这些数值可能是整型数、实型数和字符型,函数的返回值为两个数值中的最大值。
6.编写一个函数,用于去掉字符串尾部的空格符,其原型为:
char *mytrim(char *string);
其中参数string为字符串,返回值为指向string的指针。 7.编写一个函数,用于去掉字符串前面的空格,其原型为:
char *myltrim(char *string);
其中参数string为字符串,返回值为指向string的指针。
8.编写一个程序,当输入一个整数以后,可以转换成相应的英文单词输出。如:123转换成one hundred twenty three.
9. 用牛顿法或者二分法编写一个求方程f(x)=0在区间[a,b]中的实根的函数, 其原型为:
double equation(double (*func)(double), double a, double b, double eps); 其中参数func, a和b分别为求根函数和区间两端点, eps为精度。
第8章 结构化设计方法
1.输入某小组5个人的姓名、性别、出生年份等信息,统计男女人数以及1988年以后(含1988年)出生的人数。
2.定义一个名为Circle(圆)的结构体,其数据成员是圆的外接矩形的左上角和右下角两点的坐标,计算该圆的面积。
3.读入5个用户的姓名和电话号码,按姓名的字典顺序排列后,输出每个用户的姓名和电话号码。
4.口袋中有红、黄、蓝、白、黑五种颜色的小球若干个。如果每次都从口袋中取出3个不同颜色的小球,共有多少种组合,请打印出每种组合的3种颜色。要求使用枚举类型来表示小球的颜色。
5.用自顶向下、逐步求精的程序设计方法找出2~10000之内的所有完全数(所谓完全数,即其各因子之和正好等于本身的数。如6=1+2+3,28=1+2+4+7+14,所以6,28都是完全数)
第9章 类和对象(1)
1.定义一个Dog类,包含name、age、sex、weight等属性以及对这些属性操作的方法。实现并测试这个类。
2.设计并测试一个名为Ellipse的椭圆类,其属性为外接矩形的左上角与右下角两个点的坐标,并能计算出椭圆的面积。
3.仿照Date类设计一个Time类,按各种可能的格式输出时间。
第10章 类和对象(2)
1.定义一个Dog类,包含name、age、sex、weight等属性,设计一个构造函数,可以对这些属性进行初始化。实现并测试这个类。 2.设计并测试一个名为Ellipse的椭圆类,其属性为其圆心坐标以及半长轴和半短轴的长度。设计一个构造函数对这些属性进行初始化,并通过成员函数计算出椭圆的面积。
3.仿照Date类设计一个Time类,设计多个重载的构造函数,可以设置时间、进行时间的加减运算、按各种可能的格式输出时间。
4.合并Date类和Time类为一个DateAndTime类,修改相应的成员函数,当时间递增到新的一天时,应能够修改日期值。
第11章 继承
1.从类Person中派生出一个教师类,新增的属性有:专业、职称和主讲课程(一门),并为这些属性定义相应的方法。
2.许多研究生既有学生的属性,又有教师的属性。试通过多重继承说明一个研究生类。 3.修改例11-5,从Point类中派生出一个Line类。Line类增加一个数据成员EndPoint,计算线的长度。试比较一下与直接使用Point类来构造Line类的不同之处。
4.从Date类和Time类派生一个DateAndTime类,修改相应的成员函数,当时间递增到新的一天时,应能够修改日期值。
第12章 多态性
1.定义一个类Base,该类含有虚函数display,然后定义它的两个派生类FirstB和SecondB,这两个派生类均含有公有成员函数display,在主程序中,定义指向基类Base的指针变量ptr,并分别定义Base、FirstB、SecondB的对象b1、f1、s1,让ptr分别指向b1、f1、s1的起始地址,然后执行这些对象的成员函数display。
2.扩充例12-6,从中派生出一个正方形类和圆柱体类,写一个测试程序,输出正方形的面积和圆柱体的体积。
提示:正方形数据成员:一个顶点和边长;圆柱体数据成员:圆和高。
3.扩充实例编程中的日期类,为Date类增加一个成员函数,可以判断一个日期是否是系统当前日期。从键盘输入你的生日,如果今天是你的生日则显示:“Happy Birthday!”,否则显示“还有xx天是你的生日”或“你的生日已经过去了xx天,明年的生日要再等yy天”。
第13章 模板与异常处理
1.
编写一个求绝对值的函数模板,并测试。
2. 3. 4.
请将例4-6的冒泡排序法改写成为模板函数并编写一个程序进行测试。 例13-6中所定义的通用栈类实际上是不完善的,如无法根据用户需求改变栈的大小,没有提供栈满溢出无法压入和空栈无法弹出提示等,请改进该程序。 C++中的数组类型比较简单,它的下标只能从0开始,没有负数下标,而且没有数组越界检查。请用类模板设计一个newArray类,该类的对象可以是整型、浮点型、字符型等任何元素类型的数组,而且当访问数组成员时,如果下标越界,
程序可以报错并终止。如下是一些例子: newArray
//包含5个元素的浮点型数组,其成员为A2[-2], A2[-1], A2[0], A2[1], A2[2] newArray
例5-1给出的求阶乘n!的函数,当用户的输入太大时(如50),会出现错误,请编写一个程序,使用异常处理机制来解决这一问题。
第14章 标准库和输入输出流
1.编写一个程序,分别用不同的域宽(0~10)打印出整数12345和浮点数1.2345。观察当
域宽小于数值的实际需要的域宽时会发生什么情况。
2.编写一个程序,将华氏温度0度~212度转换为浮点型摄氏温度,浮点数精度为3。转换公式如下:
Celsius = 5.0 / 9.0 * (Fahrenheit-32);
输出用两个右对齐列,摄氏温度前面加上正负号。
3.编写一个程序,打印出ASCII字符集中码值为33~126的字符的ASCII码表。要求输出十进制值、八进制值、十六进制值以及码值所表示的字符。
4.修改例14-9的程序,重载>>运算符,使其能够直接使用cin语句输入Date类对象。 5.编写一个程序,可以读入一个C++语言的源文件,每一行加上行号后保存到另一个后缀为.prn的同名文件中。
第15章 链表
1. 编写程序,将表格中的数据元素逆转,假设表格采用顺序表类来存储。 2. 编写程序,将表格中的数据元素逆转,假设表格采用带头结点链表类来存储。 3. 设计一个算法,将一个带头结点的链表A分解为两个带头结点的链表B和C,使得B
表中含有A表中序号为奇数的元素,而C表中含有A表中序号为偶数的元素,且保持其相对顺序。
4. 设有两个有序带头结点的链表,编写程序,将这两个有序链表归并为一个有序带头结点
的链表。
5. 设有一个带头结点的链表,其结点值均为浮点数,编写程序,将此链表中的结点按值从
小到大链接。
6. 设有一个带头结点的链表,其结点值均为整数,编写程序,反复找出链表中最小的结点,
并输出其值,然后将其从链表中删除,直到链表为空为止。
第16章 程序设计与软件开发技术
1. 修改16.2节中的电话簿管理程序,增加通过姓名查找电话的功能。 2. 修改16.2节中的电话簿管理程序,增加通过电话号码查找姓名的功能。 3. 思考和分析:仔细研究你的手机的功能,编写一个程序,模拟手机的菜单功能。 4. 思考和分析:编写一个程序,模拟电视遥控器的功能。