C++第二次实验Word文件下载.docx
- 文档编号:993353
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:20
- 大小:126.58KB
C++第二次实验Word文件下载.docx
《C++第二次实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++第二次实验Word文件下载.docx(20页珍藏版)》请在冰点文库上搜索。
//Timel类定义结束
(1)按照注释的要求完成所有成员函数的定义;
(2)在主程序中定义Time类对象,通过对象指针或引用调用上述成员函数以测试其正确性。
2.设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离,要求按如下格式输出结果:
A(x1,y1),B(x2,y2)
Distance1=d1
Distance2=d2
其中:
x1,x2,y1,y2为指定的坐标值,d1和d2为两个坐标点之间的距离。
Location类框架可参考如下:
classLocation//声明类Location
Location(double,double);
//构造函数
doubleGetx();
//成员函数,取x坐标的值
doubleGety();
//成员函数,取y坐标的值
doubledistance1(Location&
);
//成员函数,求两坐标点之间的距离
frienddoubledistance2(Location&
Location&
//友元函数,求两坐标点之间的距离
private:
doublex,y;
3.使用C++的string类,将5个字符串按逆转后的顺序显示出来。
例如,逆转前的5个字符串是:
GermanyJapanAmericaBritainFrance
逆转后的顺序输出字符串是:
FranceBritainAmericaJapanGermany
4.设计一个模仿类magic来实现4*4的魔方阵。
类的框架如下:
classmagic//声明魔方阵类magic
voidgetdata();
//输入初值成员函数
voidsetfirstmagic();
//设置初始魔方成员函数
intgenerate();
//生成最终魔方成员函数
intprintmagic();
//显示魔方成员函数
intm[4][4];
intstep;
intfirst;
intsumj;
所谓4*4的魔方阵,是指该矩阵的各行值的和等于各列值的和,并等于两对角线值的和,如:
,其各行、各列以及对角线值的和都是64。
求4*4的魔方阵的一般步骤提示如下:
(1)设置初始魔方的起始值和相邻元素之间的差值。
例如上述魔方阵的初始魔方的起始值和相邻元素之间的差值分别为:
first=1,step=2
(2)设置初始魔方元素的值。
例如上述魔方的初始魔方阵为:
(3)生成最终魔方阵。
方法如下:
求最大元素和最小元素的和sum,本例为1+31=32。
用32减去初始魔方阵所有对角线上元素的值,然后将结果放在原来的位置,即可求得最终的魔方阵。
本例最终魔方阵为:
(4)编写主程序,通过对象指针或引用调用上述成员函数以测试所设计的魔方类的正确性.
5.声明一个Employee类,数据成员包括:
一个long型的id,两个字符指针成员,代表职员的姓名和家庭住址,一个double数据,代表月薪。
成员函数有:
构造函数、析构函数、set_salary()和get_salary()代表修改和获取薪资、set_name()和get_name()代表修改和获取姓名、set_address()和get_address()代表修改和获取家庭住址,set_id()和get_id()用来修改获取当前职员的id号。
在主程序中,创建对象数组调用上述函数以测试Employee类设计的正确性。
Employee类的框架可参考:
classEmployee//声明Employee类
Employee(long,char*,char*,double);
//构造函数
~Employee();
//析构函数
//setfunctions
voidset_id(long);
//设置id
voidset_salary(double);
//设置salary
voidset_name(char*);
//设置name
voidset_address(char*);
//设置adress
longget_id();
//返回id
doubleget_salary();
//返回salary
char*get_name();
//返回name
char*get_addressSecond();
//返回address
voidprint();
//打印输出Employee的相关信息
longid;
//工号
char*name;
//姓名
char*address;
//家庭住址
doublesalary;
//月薪
//Employee类声明结束
6.声明一个Student类,在该类中包括一个数据成员:
score(代表课程成绩)、两个静态数据成员:
total_score(代表总分),count(代表学生总人数)。
构造函数、析构函数、account(int)用于设置分数、静态成员函数sum()返回所有学生的总成绩、静态成员函数average()返回所有学生的平均成绩、print()用于打印当前学生对象的成绩等。
在主程序中,输入某班同学的成绩,并调用上述函数打印全班同学的成绩、求出全班学生的成绩之和与平均分等。
Student类的框架可参考:
classStudent//声明Student类
Student(int);
~Student();
voidaccount(int);
//设置分数
staticintsum();
//返回总成绩
staticdoubleaverage();
//返回平均成绩
voidprint();
//打印输出Student的相关信息
intscore;
//分数
staticinttotal_score;
//总分
staticintcount;
//总人数
//Student类声明结束
注意:
静态成员和非静态成员的初始化方式的区别。
实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)
1.源代码:
#include<
iostream>
usingnamespacestd;
classTime
Time(int=0,int=0,int=0);
voidsetTime(int,int,int);
voidsetHour(int);
voidsetMinute(int);
voidsetSecond(int);
intgetHour(){returnhour;
}
intgetMinute(){returnminute;
intgetSecond(){returnsecond;
voidprintStandard();
intminute;
intsecond;
Time:
:
Time(inth,intm,ints)
setTime(h,m,s);
voidTime:
setTime(inth,intm,ints)
setHour(h);
setMinute(m);
setSecond(s);
}
setHour(inth)
if((h>
=0)&
&
(h<
=23))
hour=h;
else
{
hour=0;
cout<
<
"
小时输入错误!
!
默认值为0"
endl;
}
setMinute(intm)
if((m>
(m<
=59))
minute=m;
minute=0;
分钟输入错误!
setSecond(ints)
if((s>
(s<
second=s;
second=0;
秒钟输入错误!
printUniversal()
cout<
二十四小时制:
getHour()<
getMinute()<
getSecond()<
printStandard()
十二小时制:
if(getHour()<
=12)
(AM)"
getHour()-12<
(PM)"
intmain()
inth,m,s;
请输入小时:
cin>
>
h;
请输入分钟:
m;
请输入秒钟:
s;
TimeA(h,m,s);
A.printUniversal();
A.printStandard();
return0;
输出结果:
2.源代码:
cmath>
classLocation
doublegetx();
doublegety();
Location&
doubleLocation:
distance1(Location&
B)
returnsqrt((this->
getx()-B.getx())*(this->
getx()-B.getx())+(this->
gety()-B.gety())*(this->
gety()-B.gety()));
Location:
Location(doublea,doubleb)
x=a;
y=b;
doubledistance2(Location&
A,Location&
returnsqrt((A.getx()-B.getx())*(A.getx()-B.getx())+(A.gety()-B.gety())*(A.gety()-B.gety()));
getx()
returnx;
gety()
returny;
doublea,b;
请输入A点坐标:
a;
b;
LocationA(a,b);
请输入B点坐标:
LocationB(a,b);
Distance1="
A.distance1(B)<
Distance2="
distance2(A,B)<
3.源代码:
string>
strings[100];
stringa;
inti=0;
Ç
ë
Ê
ä
È
×
Ö
·
û
´
®
while(cin>
a)
s[i]=a;
i++;
for(inti=i-1;
i>
=0;
i--)
s[i]<
"
;
4.源代码:
classmagic
voidgetdata(int,int);
voidgenerate();
voidprintmagic();
intsum;
voidmagic:
getdata(inta,intb)
step=b;
first=a;
setfirstmagic()
inta=first;
for(inti=0;
i<
4;
i++)
for(intn=0;
n<
n++)
{
m[i][n]=a;
a=a+step;
}
generate()
sum=m[0][0]+m[3][3];
m[0][0]=sum-m[0][0];
m[0][3]=sum-m[0][3];
m[3][0]=sum-m[3][0];
m[3][3]=sum-m[3][3];
printmagic()
{
cout<
m[i][n]<
'
\t'
inta,b;
请输入魔方起始值:
请输入相邻元素差值:
magicA;
A.getdata(a,b);
A.setfirstmagic();
A.generate();
A.printmagic();
5.源代码:
include<
classEmployee
Employee(long,string,string,double);
voidsetId(longi){id=i;
voidsetSalary(doubles){salary=s;
voidsetName(stringn){name=n;
voidsetAddress(stringa){address=a;
longgetId(){returnid;
doublegetSalary(){returnsalary;
stringgetName(){returnname;
stringgetAddress(){returnaddress;
stringname;
stringaddress;
Employee:
Employee(longi,stringn,stringa,doubles)
setSalary(s);
setName(n);
setAddress(a);
setId(i);
voidEmployee:
print()
工号:
getId()<
姓名:
getName()<
地址:
getAddress()<
工资:
getSalary()<
Employeeemp[4]={Employee(1,"
张静"
"
15#117"
8000),Employee(2,"
张义新"
27#318"
7500),Employee(3,"
杜赟"
15#116"
1500),Employee(4,"
皮卡丘"
1200)};
emp[0].print();
emp[1].print();
emp[2].print();
emp[3].print();
6.源代码:
classStudent
Student(int);
staticinttotal;
Student:
Student(inta)
score=a;
count++;
total=total+score;
intStudent:
sum()
returntotal;
doubleStudent:
average()
returntotal/count;
total=0;
count=0;
请输入成绩:
inta;
StudentA(a);
StudentB(a);
StudentC(a);
总成绩为:
sum()<
平均分为:
average()<
附录(可包括源程序清单或其它说明)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 第二次 实验