cout<<&p<<":
"<
}
private:
intlen;
char*p;
};
voidmain()
{Exx("first");
Exy=x,z;
x.outdata();
y.outdata();
}
1题编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。
提示:
设计一个学生类Stud,除了包括no(学号)、name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有两个普通成员函数setdata()和disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分。
在main()函数中定义了一个对象数组用于存储输入的学生数据。
2设计一个Bank类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。
解:
Bank类包括私有数据成员top(当前账指针),date(日期),money(金额),rest(余额)和sum(累计余额)。
另有一个构造函数和三个成员函数bankin()(处理存入账),bankout()处理取出账)和disp()(输出明细账)。
自己设计main函数使用该类。
classBank
{
inttop;
chardate[Max][10];//日期
intmoney[Max];//金额
intrest[Max];//余额
staticintsum;//累计余额
public:
Bank(){}
voidbankin(chard[],intm);
voidbankout(chard[],intm);
voiddisp();
};
3创建一个地图地址信息类Address,该类包含成员属性“邮政编码、地址”,邮编为6位数字,地址为长度不确定的字符数组。
该类具有成员方法“显示信息函数”。
要求:
(1)类有两个构造函数,一个为传递邮政编码和地址两个参数的构造函数,另一个为复制构造函数。
(2)成员属性“地址”必须使用动态分配内存方式,并在析构函数中释放
Week.7.作业五(ch05):
1、(p177,5.4)三维数组a[2][3][3]一共有多少个元素?
该数组的数组元素在内存中以什么顺序存储?
2、(p177,5.6)编程分别定义一个4*3和3*2的矩阵A和B,实现矩阵A与B乘积。
3、(p178,5.21)一个学习小组有6个人,共5门课,编程实现以下要求:
(1)求第一门课程的平均成绩
(2)找出有一门课程以上不及格的成员,输出该学员的全部成绩和平均成绩
(3)找出5门课程都在90分以上的学员以及平均分在95分以上的学员。
4、(p178,5.22)定义Circle类,其数据成员double*pRadius为一个指向其半径值的指针,存放其半径值,设计对Circle类数据成员的各种操作。
1试采用选择排序法和冒泡排序法,对输入的10个整数,实现从小到大的顺序输出。
2试动态创建一个二维数组,并以指针和数组的方式输出二维数组元素的值
3试编写实现将一个m*n的矩阵转置
4通过指针实现:
统计从键盘所输入的字符串的数量。
5如下系数是二项式
的系数表,又称为杨辉三角形,试采用动态内存分配法实现系数的计算与存储
6创建一个水果类Fruit,该类具有成员属性“名称、种类”,具有成员方法“打印水果信息”。
在main函数中,动态创建一个n个元素的对象数组,数组元素为Fruit对象,并打印出数组中所有对象信息。
Week.8.作业六(ch06):
1、(p214,6.6)什么是虚基类,引入虚基类有何作用?
2、(p216,6.11)编程定义几何图形类Shape作为基类,并在Shape的基础上派生出圆形Circle类和矩形Rectangle类,两个派生类都有函数CaculateArea计算几何图形面积。
3、(p216,6.12)编程定义Point作为基类,并在此基础上派生出圆形Circle类,该类含有计算面积的成员函数,并由Circle类派生出圆柱Cylinder类,该类含有计算柱体的表面积和体积的成员函数。
1设计一个类point,表示二维坐标体系中的任意一点,在此基础上设计一个矩形类Rectangle。
Rectangle类使用point类的两个坐标点作为矩形对角坐标,并可以输出矩形4个点的坐标值和矩形面积。
2创建一个学校学生类,该类包含成员属性“学号、姓名、性别、学院”,成员函数“打印学生信息函数”;创建软件学院学生类,该类继承学生类,并拥有自己的属性“专业方向”,覆盖父类行为方法“打印学生信息函数”;创建软件学院2008级学生类,该类继承软件学院学生类,覆盖其父类所有方法。
要求:
(1)学生类和软件学院学生类属性为protected
(2)继承方式均采用protected保护继承
(3)使用main函数进行测试
3创建一个软件公司的员工类,该类包含成员属性“工号、姓名、户口地、工作种类、工资”,成员函数“打印员工信息函数”;创建公司的研发部员工类,该类继承员工类,并拥有自己的属性“项目名称”和行为方法“打印员工信息函数”、“计算奖金函数”;创建公司研发部测试员工类,该类继承研发部员工类,覆盖其父类所有方法。
要求:
(1)员工类和研发部员工类属性为protected
(2)继承方式均采用protected继承
(3)使用main函数进行测试
4大学人员管理信息系统中有如下实体:
学生,老师,研究生等。
他们的关系如图所示
1)Person属性有:
char*name;
intage;
charid_number[10]//身份证号
主要成为函数有:
voiddisplay(),其它成员函数自行定义,如构造函数,析构函数等。
2)Student新的属性有:
char*major;//专业
Longints_number//学号
主要成为函数有:
voiddisplay(),其它成员函数自行定义,如构造函数,析构函数等。
3)Teacher新的属性有:
char*title;//职称
chardept[10]//部门
doublesalary//工资
主要成为函数有:
voiddisplay(),其它成员函数自行定义,如构造函数,析构函数等。
4)Graduate新的属性有:
intlevel//表示级别,如博士研究生,硕士研究生等,可以通过用数字1,2等来代替。
主要成为函数有:
voiddisplay(),其它成员函数自行定义,如构造函数,析构函数等。
请完成以上类的设计和实现。
并在main函数中用各个类的对象调用display函数,实现信息的输出。
Week.9.作业七(ch06):
1、(p214,6.8)什么是C++的赋值兼容规则?
2、写出下面程序的运行结果:
#include
classBase{
public:
voidwho(){cout<<"Baseclass"<};
classDerive1:
publicBase{
public:
voidwho(){cout<<"Derivelclass"<};
classDerive2:
publicBase{
public:
voidwho(){cout<<"Derive2class"<};
voidmain()
{Baseobj1,*p;
Derive1obj2;
Derive2obj3;
p=&obj1;
p->who();
p=&obj2;
p->who();
p=&obj3;
p->who();
obj2.who();
obj3.who();
}
1在week8练习4的基础上,采用赋值兼容规则来调用display函数,观察输出的结果并分析原因。
Week.9.作业八(ch07):
1、(p247,7.5)定义一个哺乳动物Mammal类,再由此派生出狗Dog类,两者都定义Speak成员函数,基类中定义为虚函数,定义一个Dog类的对象,调用Speak函数,并观察运行结果。
2、写出下面程序的运行结果:
#include
classPoint
{public:
Point(intx1,inty1){x=x1;y=y1;}
intarea()const{return0;}
private:
intx,y;
};
classRect:
publicPoint
{public:
Rect(intx1,inty1,intu1,intw1):
Point(x1,y1)
{u=u1;w=w1;}
intarea()const{returnu*w;}
private:
intu,w;
};
voidfun(Point&p)
{cout<
voidmain()
{Rectrec(2,4,10,6);
fun(rec);
}
如果将Point类的area()函数定义为虚函数,其运行结果又是什么?
1创建一个超市销售的商品类,该类包含成员属性“商品条形码、商品名称、价格”,成员方法“打印商品信息函数”;创建电器商品类,继承商品类,包含自己属性“送货方式(枚举类型或整数类型)”和成员方法“打印商品信息函数”;创建熟食商品类,继承商品类,包含自己属性“储存时间”,成员方法“打印商品信息函数”;创建生活用品商品类,继承商品类,包含自己属性“折扣值”,成员方法“打印商品信息函数”。
要求:
(1)类的设计能体现出多态性特征。
(2)在main函数中,创建商品类型数组,分别指向不同种类商品,并输出不同种类商品的信息。
2在week8练习4的基础上,采用动态多态来调用display函数,观察输出的结果并分析原因。
Week.10.作业九(ch07):
1、(p247,7.6)什么是抽象类?
抽象类有何作用?
2、(p247,7.8)定义一个Shape抽象类,在此基础上派生Square类、Rectangle类、Circle类和LadderShape类,四个派生类都有成员函数CalculateArea计算几何图形的面积,CalculatePerim计算几何图形的周长。
1创建一个“绘画”抽象类,该类包含纯虚函数“图画函数Draw”;创建铅笔类继承“绘画”类,包含属性“颜色、粗细”;创建矩形绘图类,继承绘图类,包含属性“矩形左上角点和右下角点、矩形边宽度、矩形颜色”。
要求:
(1)类的设计能体现出多态性特征。
(2)在main函数中,创建绘画类型数组,分别指向不同的绘画派生类对象,并一次调用数组中对象的图画函数。
2创建一个动物抽象类,该类包含纯虚函数“繁殖函数Born”;创建鱼类继承动物类,包含属性“鱼名、生存地”,行为方法“游泳函数”;创建鸟类,继承动物类,包含属性“鸟名、生存地、品种”,行为方法“飞翔函数”;创建马类,继承动物类,包含属性“品种”,行为方法“奔跑函数”。
要求:
(1)类的设计能体现出多态性特征。
(2)鱼、鸟、马类都必须实现抽象基类动物的繁殖函数。
(3)在main函数中,测试面向对象的多态性质。
3试编写程序定义几何图形类shape作为抽象基类,并在shape的基础上派生出圆形circle类和矩形类Rectangle,两个派生类都有函数CalculateArea()计算几何图形的面积。
Week.10.作业十(ch07):
1、(p247,7.11)设计一个RMB类,并通过对“+”、“*”运算符重载实现直接利用“+”、“*”求人民币存款利息。
2、(p247,7.12)设计一个矩形类,要求在矩形类中重载“+”、“-”、“*”、“=”运算符
1编写一个时间类,实现对时间的加,减,读和输出。
要求用运算符重载。
2编写实现数组Aarray类。
要求重载[]、赋值运算符=、比较运算符==和!
=等
3编写实现String类,要求重载赋值运算符=、比较运算符==和!
=、<、>、<=、>=等
Week.11.作业十一(ch08):
1、写出下面程序的运行结果:
#include
classA
{public:
A(inti):
k(i){}
virtualvoidoperator!
()
{cout<<"A:
K="<protected:
intk;
};
classB:
publicA
{public:
B(intn=0):
A(0),j(n){k++;}
virtualvoidoperator!
()
{cout<<"B:
K="<protected:
intj;
};
classC:
publicB
{public:
C(intn=0):
B(0),m(n){k++;j++;}
virtualvoidoperator!
()
{cout<<"C:
K="<private:
intm;
};
voidmain()
{Bb(5);Cc(3);Aa
(2);
A*ab=&a;
!
*ab;!
b;!
c;
A&ba=(A)b;!
ba;
A&ca=(B)c;!
ca;
B&cb=c;!
cb;
}
Week.12.作业十二(ch08):
1、(p269,8.2)编写一个函数模板,实现求不同类型的数的相反数。
2、(p269,8.6)试用插入法建立两个升序排列的整数链表,并用这两个链表的数据组成一个降序链表。
1编写一个函数模板,实现求不同类型的数组排序。
2试用函数模板实现swap(x,y)交换数据x与y的值
3实现一个数组Array类模板,使其能存储整型,浮点型,字符型数据。
Week.13.作业十三(ch08):
1、(p269,8.10)以下是C++中双向队列类(deque)的成员函数:
assign()给一个双向队列重新赋值;
begin()返回指向双向队列中第一个元素的指针;
end()返回指向双向队列中最后一个元素的指针;
swap()交换双向队列中的两个元素;
pop()从非空队列中删除最后一个元素;
front()返回一个非空双向队列的第一个元素;
back()返回一个非空双向队列的最后一个元素;
size()返回双向队列的元素个数;
max_size()返回可支持的双向队列元素的最大数量。
(1)试构造一个整型双向队列,然后对这个队列使用上述成员函数(至少3个以上成员函数)进行操作。
(2)试构造一个字符型双向队列,然后对这个队列使用上述成员函数(至少3个以上成员函数)进行操作。
2、(p269,8.11)试利用模板分别对数组、向量、表和多重集合进行插入操作,对每个容器插入10000个随机整数。
1利用STL提供的容器和算法,对数组元素进行排序和输出
2用STL求任意指定整数以内的全部素数
3使用STL中的向量类,生成2个排序好的向量,然后合并成一个新的排序好的向量。
Week.13.作业十四(ch10):
1、(p310,10.4)试说明try、catch和throw语句的使用格式。
2、(p310,10.5)试用try、catch和throw语句实现求解一元二次方程(ax2+bx+c=0)的实数根,当方程没有实数根时产生异常,由throw抛出异常,catch语句块捕获异常。
1、编写一个程序,证明所有在一个块中创建的对象的析构函数都将在那个块中抛出异常之前被调用。
2、比较异常处理和文件中提到的各种错误处理方法之间的差异?
Week.14.作业十五(ch10):
1、(p310,10.6)试定义一个异常类Exception,其成员函数Display用于显示异常类型,定义函数ExcpFun用于触发异常,在主函数main的try语句块中调用函数ExcpFun,实现并测试该类。
Week.14.作业十六(ch09):
1、(p293,9.7)根据以下代码,试分析程序的运行结果:
#include
#include
voidmain()
{intn;
n=2005;
cout<cout<}
2、(p293,9.8)试编写程序,实现从键盘输入一个十进制数据,分别以八进制数、十进制数和十六进制数大、小写四种形式输出,输出时采用左对齐格式。
3、(p293,9.9)根据以下代码,试分析程序的运行结果:
#include
#include
voidmain()
{intn;
n=2558;
cout.setf(ios:
:
hex);
cout<cout.setf(ios:
:
uppercase);
cout<cout.setf(ios:
:
dec);
cout<}
1、编程实现以下数据输入输出:
a)以左对齐方式输出整数,域宽为12;
b)以八进制、十进制、十六进制输入输出整数;
c)实现浮点数的指数格式和定点格式的输入输出,并指定精度;
d)把字符串读入字符型数组变量中,从键盘输入,要求输入串的空格也全部读入,以回车换行符结束;
e)以上要求用流成员函数和流操作子各做一遍。
2、修改1,增加一个字符串输入后要求确认,以保证输入的字符串(如姓名、地址等)无误