return0;
}
总结:
由于第一天学习c++课,所以决定多做些题目来熟悉c++的规范格式,于是将七道题目都编写了,题目都很基础,用到的算法和技巧都在学c的时候学过了。
具体的有随机数种子的设定,双重for循环,递归函数求解,基本完成了实验目的所写的那样:
熟悉C++编程环境,掌握在Dev-C++开发环境下编写、编译、调试和执行C++程序的方法。
掌握C++基本语法、数据类型和程序控制结构,能够编写简单C++程序。
实验二:
类与对象
1、矩形
编写C++程序完成以下功能:
(1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;
(2)定义一个矩形类,其属性包括左上角和右下角两个点,提供计算面积的方法;
(3)创建一个矩形对象,提示用户输入矩形左上角和右下角的坐标;
(4)观察矩形对象以及Point类成员的构造函数与析构函数的调用;
(5)计算其面积,并输出。
#include
#include
usingnamespacestd;
classpoint
{private:
intx,y;
public:
point(intX=0,intY=0){
x=X;y=Y;};//构造函数
intgetX(){returnx;};
intgetY(){returny;};
frienddoublegetline(point&a,point&b){
returnsqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));//返回两点间直线长度
}
};//两点间距离的计算
classrectangle
{
private:
pointa,b;
public:
rectangle(pointA,pointB){
a=A;b=B;}//构造函数
intgetarea(){
return((b.getX()-a.getX())*(a.getY()-b.getY()));}//返回面积值
};
//矩形面积计算
intmain()
{
intx1,y1,x2,y2;
cout<<"请输入左上角的坐标"<cin>>x1>>y1;
cout<<"\n请输入右下角的坐标"<cin>>x2>>y2;
pointA(x1,y1),B(x2,y2);
rectanglertangle(A,B);//类的初始化
cout<<"\n面积大小是:
"<system("pause");
return0;
}
2、圆形
编写C++程序完成以下功能:
(1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;
(2)定义一个圆形类,其属性包括圆心和半径;
(3)创建两个圆形对象,提示用户输入圆心坐标和半径,判断两个圆是否相交,并输出结果。
#include
#include
usingnamespacestd;
classcircle
{
private:
intx,y;
intr;
public:
circle(intX,intY,intR){x=X;y=Y;r=R;};//构造函数
friendvoidstart(circle&a,circle&b){
doublem,n;
m=sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));//圆心间距离
n=a.r+b.r;//半径和
if(m>n)
cout<<"两个圆不相交"<if(m<=n)
cout<<"两个圆相交"<};
intmain()
{intx1,y1,r1,x2,y2,r2;
cout<<"请输入第一个圆的圆心坐标和半径"<cin>>x1>>y1>>r1;
cout<<"请输入第二个圆的圆心坐标和半径"<cin>>x2>>y2>>r2;
circlea(x1,y1,r1);
circleb(x2,y2,r2);
start(a,b);
system("pause");
return0;
}
3、友元
编写C++程序完成以下功能:
(1)定义一个Boat和Car两个类,他们都具有私用属性——重量;
(2)编写一个函数,计算两者的重量和。
doubleTotalWeight(Boat&b,Car&c);
#include
usingnamespacestd;
classcar;
classboat
{
private:
doubleweight;
public:
boat(doublew){weight=w;}//构造函数
frienddoubleTotalWeight(boat&a,car&b);//友元函数
};
classcar
{private:
doubleweight;
public:
car(doublew){weight=w;}//构造函数
frienddoubleTotalWeight(boat&a,car&b);//友元函数
};
doubleTotalWeight(boat&a,car&b)
{returna.weight+b.weight;}
intmain()
{doublea,b;
cout<<"请输入boat和car的重量:
"<cin>>a>>b;
boatx(a);cary(b);//初始化类值
cout<<"重量和是"<system("pause");
return0;
}
4、分数
编写C++程序完成以下功能:
(1)定义一个分数类,他们都具有私用属性——分子和分母;
(2)定义分数类的构造函数和析构函数;
(3)定义方法Set,设置分子和分母;
(4)定义方法print,打印分数,格式如:
2/7;
(5)定义方法value,返回double型的分数值;
(6)定义方法invert,分子和分母交换。
#include
#include
usingnamespacestd;
classfenshu
{
private:
intdown,up;
public:
voidset(inta,intb)
{up=a;down=b;}
voidprint()
{cout<<"分数值是:
"<doublevalue()
{returndouble(up)/double(down);}
voidinvert()
{intc;c=up;up=down;down=c;}
};
intmain()
{
inta,b;
cout<<"请输入分子和分母:
"<cin>>a>>b;
fenshux;
x.set(a,b);
x.print();
cout<<"分数值的小数形式是"<x.invert();
x.print();
system("pause");
return0;
}
总结:
在编写程序前对类与对象还是挺生疏的,只有脑海里闪现的书本里的一些概念,编这道题目的时候也已经是学c++的第三天了,在看完书本的例子后,考虑到老师上课说的不要照书编程,于是就在编程前看个够。
基本上这些题目也就是一些类与对象的格式的考察。
于是将四道题目全部完成了。
记得唯一让我放下手指敲键盘的地方是第二题,正方形的的属性里,起初我是自己设定两点的坐标为其私有变量,后来发现这样做不符合题意,应该将点的对象作为其私有变量。
基本上其他的也就没有问题了,注意的也就是不能直接在外部引用私有成员,需要对象内部的公有函数做接口
实验三:
数组与指针
矩阵
(一)与矩阵(三)略
1、矩阵(三)
编写C++程序完成以下功能:
(1)用类来实现矩阵,定义一个矩阵的类,属性包括:
●矩阵大小,用lines,rows(行、列来表示);
●存贮矩阵的数组指针,根据矩阵大小动态申请(new)。
(2)矩阵类的方法包括:
●构造函数,参数是矩阵大小,需要动态申请存贮矩阵的数组;
●析构函数,需要释放矩阵的数组指针;
●拷贝构造函数,需要申请和复制数组;
●输入,可以从cin中输入矩阵元素;
●输出,将矩阵格式化输出到cout;
●矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵类,但必须矩阵大小相同;
●矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵类,但必须矩阵大小相同。
(3)定义三个矩阵:
A1、A2、A3;
(4)初始化A1、A2;
(5)计算并输出A3=A1加A2,A3=A1减A2;
(6)用new动态创建三个矩阵类的对象:
pA1、pA1、pA3;
(7)初始化pA1、pA2;
(8)计算并输出pA3=pA1加pA2,pA3=pA1减pA2;
(9)释放pA1、pA1、pA3。
#include
#include
usingnamespacestd;
classarray
{
private:
intlines,rows;
public:
int**A;
array(inta=3,intb=4);
array(inta,intb,intc);
array(array&a);
intgetLines(){returnlines;}
intgetRows(){returnrows;}
voidprintArray(intl,intr);
friendvoidplusArray(array*a,array*b,array*c,intl,intr);
friendvoidreductArray(array*a,array*b,array*c,intl,intr);
~array(){for(inti=0;i{deleteA[i];}
deleteA;}
};
array:
:
array(array&a)
{lines=a.lines;
rows=a.rows;
/*A=newint*[lines];
for(inti=0;i<=lines-1;i++)
{A[i]=newint[rows];}*/
A=a.A;
}
array:
:
array(inta,intb,intc){
lines=a;rows=b;
A=newint*[a];
for(inti=0;i<=a-1;i++)
{A[i]=newint[b];}
}
array:
:
array(inta,intb){
lines=a;rows=b;
A=newint*[a];
cout<<"请输入矩阵的元素:
"<for(inti=0;i<=a-1;i++)
{A[i]=newint[b];
for(intj=0;j<=b-1;j++)
cin>>A[i][j];}
}
voidarray:
:
printArray(intl,intr){
for(inti=0;i<=l-1;i++){
for(intj=0;j<=r-1;j++)
cout<cout<}
voidplusArray(array*a,array*b,array*c,intl,intr)
{for(inti=0;i<=l-1;i++)
for(intj=0;j<=r-1;j++)
(*c).A[i][j]=(*a).A