北邮小学期c++实验报告and程序文件.docx

上传人:b****6 文档编号:5995216 上传时间:2023-01-02 格式:DOCX 页数:33 大小:31.38KB
下载 相关 举报
北邮小学期c++实验报告and程序文件.docx_第1页
第1页 / 共33页
北邮小学期c++实验报告and程序文件.docx_第2页
第2页 / 共33页
北邮小学期c++实验报告and程序文件.docx_第3页
第3页 / 共33页
北邮小学期c++实验报告and程序文件.docx_第4页
第4页 / 共33页
北邮小学期c++实验报告and程序文件.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

北邮小学期c++实验报告and程序文件.docx

《北邮小学期c++实验报告and程序文件.docx》由会员分享,可在线阅读,更多相关《北邮小学期c++实验报告and程序文件.docx(33页珍藏版)》请在冰豆网上搜索。

北邮小学期c++实验报告and程序文件.docx

北邮小学期c++实验报告and程序文件

C++实验课总结

张涛

实验一:

简单c++程序设计

一、

1、猜价格游戏

编写C++程序完成以下功能:

(1)假定有一件商品,程序用随机数指定该商品的价格(1-1000的整数);

(2)提示用户猜价格,并输入:

若用户猜的价格比商品价格高或低,对用户作出相应的提示;

(3)直到猜对为止,并给出提示。

#include

#include

usingnamespacestd;//使用命名空间std.

intmain()

{

srand(time(NULL));//将时钟数作为随机数种子

intprice,guess;

price=rand()%1000+1;//取余,获得1~1000的随机数

cout<<"pleaseinputtheprice:

"<

do{

cin>>guess;//记录玩家所输入数值

if(guess>price)

cout<<"Thepriceislowerthanyourguess,pleaseinputthepriceagain:

"<

if(guess

cout<<"Thepriceishigherthanyourguess,pleaseinputthepriceagain:

"<

}

while(guess!

=price);//循环结构

cout<<"Thepriceyougiveisright.Itcost"<

system("pause");

return0;

}

2、计算N以内的所有素数

编写C++程序完成以下功能:

(1)提示用户输入N;

(2)计算出从2到N之间的所有素数;

(3)将结果保存在一个文本文件中。

#include

#include

#include//两种输入流

usingnamespacestd;

intisprime(inta)

{intb=2;

while(a%b!

=0&&b

{b++;

}

if(a%b==0)

return0;

if(a%b!

=0)

return1;

}//判断是否为素数的函数定义

intmain()

{

intnum,a;

ofstreammyFile("d:

\\result.txt");

cout<<"Pleaseinputthenumber:

"<

cin>>num;

myFile<<"2";

for(a=2;a<=num;a++)//例举所有数,并对其进行判断,是否为素数

{if(isprime(a)==1)

myFile<

}//向文件内输出数据

system("pause");

return0;

}

3、袋中取球

编写C++程序完成以下功能(使用enum):

(1)袋子中有red,yellow,blue,white,black五种颜色的球多个;

(2)一次从袋子里取出3个颜色不同的球,有几种取法;

(3)将每种方法的所有取法输出到屏幕上。

#include

#include

usingnamespacestd;

enumcolors{red=1,yellow,blue,white,black};

voidprint(inta)//设置一个打印函数,根据数字得到颜色

{switch(a){

case1:

cout<

case2:

cout<

case3:

cout<

case4:

cout<

case5:

cout<

}

}

intmain()

{intcolor1,color2,color3;//设置三个记录颜色的变量

cout<<"Theresultis:

"<

for(color1=red;color1<=blue;color1++)

for(color2=color1+1;color2<=white;color2++)

for(color3=color2+1;color3<=black;color3++)//三次循环迭代出所有情况

{

print(color1);

print(color2);

print(color3);

cout<

}

system("pause");

return0;

}

4、乘法口诀表

编写C++程序完成以下功能:

(1)输出乘法口诀表;

(2)显示格式如下所示。

1*1=11*2=21*3=3....................1*9=9

2*2=42*3=6....................2*9=18

3*3=9....................3*9=27

..............................

....................

9*9=81

#include

#include

usingnamespacestd;

intmain()

{

inta,b,c;

for(a=1;a<=9;a++)

{for(c=0;c

cout<<"";//打印每行前的空格

for(b=a;b<=9;b++)

cout<

:

left)<

cout<

}

system("pause");

return0;

}

5、最大公约数和最小公倍数

编写C++程序完成以下功能:

(1)提示用户输入两个无符号整数;

(2)计算两者的最大公约数和最小公倍数,并输出。

#include

usingnamespacestd;

intGCD(inta,intb)

{

if(a%b==0)

returnb;

else

returnGCD(b,a%b);//利用辗转相除法进行递归.

}

intmain()

{inta,b;

cout<<"Pleaseinputtwonumbers:

";

cin>>a>>b;

intc;

if(a

{c=a;a=b;b=c;}//调整ab的大小顺序

cout<

cout<

return0;

}

6、计算Fibonacci级数

fib

(1)=fib

(2)=1

fib(n)=fib(n-1)+fib(n-2)

分别编写递归和非递归的C++程序完成以下功能:

(1)提示用户输入整数n;

(2)fib(n),并输出结果。

//递归法求斐波那契数列

#include

usingnamespacestd;

intfib(intn)

{if(n==1||n==2)

return1;

elsereturnfib(n-1)+fib(n-2);//递归

}

intmain()

{intnum;

cout<<"Pleaseinputtheinteger:

";

cin>>num;

cout<

return0;

}

//直接法求斐波那契数列

#include

usingnamespacestd;

intfib(intn)

{if(n==1||n==2)

return1;

inta,result=1,previous=1,present=1;//初始化

if(n>2)

{for(a=3;a<=n;a++){

result=result+previous;

previous=present;

present=result;

}

returnresult;}

}

intmain()

{intnum;

cout<<"Pleaseinputtheinteger:

";

cin>>num;

cout<

system("pause");

return0;

}

7、计算n阶勒让德多项式

编写C++程序完成以下功能:

(1)提示用户输入整数n和实数x;

(2)Pn(x),并输出结果。

#include

usingnamespacestd;

intp(intx,intn)

{if(n==0)

return1;

if(n==1)

returnx;

if(n>1)

return((2*n-1)*x*p(x,n-1)-(n-1)*p(x,n-2))/n;

}

intmain()

{intx,n;

cout<<"Pleaseinputtwointegersxandn:

";

cin>>x>>n;

cout<

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1