吕金石C++实验报告.docx

上传人:b****7 文档编号:9741643 上传时间:2023-02-06 格式:DOCX 页数:36 大小:380.30KB
下载 相关 举报
吕金石C++实验报告.docx_第1页
第1页 / 共36页
吕金石C++实验报告.docx_第2页
第2页 / 共36页
吕金石C++实验报告.docx_第3页
第3页 / 共36页
吕金石C++实验报告.docx_第4页
第4页 / 共36页
吕金石C++实验报告.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

吕金石C++实验报告.docx

《吕金石C++实验报告.docx》由会员分享,可在线阅读,更多相关《吕金石C++实验报告.docx(36页珍藏版)》请在冰豆网上搜索。

吕金石C++实验报告.docx

吕金石C++实验报告

C++实验报告

 

姓名:

吕金石

学号:

6100408024

学院专业:

数字媒体081班

 

二零一零年十二月

 

 

南昌大学实验报告

学生姓名:

吕金石学号:

6100408024专业班级:

数字媒体081班

实验类型:

□验证□综合□设计□创新实验日期:

实验成绩:

实验1熟悉C++开发环境及简单程序设计和应用

一.实验目的

1.初步了解C++程序的编译、连接和运行的过程。

2.掌握和理解C++程序的结构。

 

二.实验内容

1.使用VC

2.运行一个简单的C++程序

3.编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数

三.实验环境

PC微机;

Windows操作系统;

VC程序集成环境。

四.实验步骤

1.启动VC

如果用户计算机系统已经安装了VC编译系统,按下图所示进入VC集成环境。

在该窗口,有9个菜单条目。

熟悉每个菜单的意义和操作。

2.输入程序,输入以下程序

#include

usingnamespacestd;

voidmain()

{

inti

(1),sum(0);

do{

sum+=i;

i++;

}while(i<=10);

cout<<"sum="<

}

3.保存文件、运行程序、退出VC程序、打开已经存在的文件

4.编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数

运行结果:

 

南昌大学实验报告

学生姓名:

吕金石学号:

6100408024专业班级:

数媒081班

实验类型:

□验证□综合□设计□创新实验日期:

2010.9.24实验成绩:

实验2基本控制结构程序设计

一.实验目的

1.学会有关C++语言的有关运算符,以及包含这些运算符的表达式的使用,熟练掌握多重选择结构。

2.掌握C++函数的定义方法、函数的调用方法、参数说明以及返回值。

掌握函数的嵌套调用及递归调用的设计方法;

3.在编程过程中加深理解函数调用的程序设计思想。

二.实验内容

1.编程输出表达式的运行结果;

2.用if-elseif语句或switch语句实现多分支选择结构

3.用递归方法进行程序设计。

三.实验环境

PC微机

Windows操作系统

VC程序集成环境

四.实验步骤

1.当a=1,b=2,c=3时,编程求出

a^b&-c

a&b|c

!

a|a

~a|a

a^a

a>>2

以上表达式的值。

源程序如下:

执行结果为:

2.编程实现这样一个完整的程序,运行时向用户提问“你考试考了多少分?

(0~100),接受输入后判断其等级并显示出来。

规则如下:

等级

范围

90〈=分数〈=100

80〈=分数〈90

60〈=分数〈80

0〈=分数〈60

3.源程序为:

#include

voidmain()

{

intn;

loop:

cout<<"你考试考了多少分?

请输入:

"<

cin>>n;

if((n<0||n>100))

{

cout<<"你的输入有误!

请重新输入!

!

"<

gotoloop;

}

intm=n/10;

switch(m)

{

case10:

cout<<"优"<

break;

case9:

cout<<"优"<

break;

case8:

cout<<"优"<

break;

case7:

cout<<"中"<

break;

case6:

cout<<"中"<

break;

default:

cout<<"差"<

}

}

程序运行的结果如下:

4.用递归方法编写程序求Fibonacci级数,公式为:

fib(n)=fib(n-1)+fib(n-2),n>2;fib

(1)=fib

(2)=1;观察递归调用的过程。

源程序为:

#include

intfib();

intfib(intn)

{

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

return1;

if(n>2)

return(fib(n-1)+fib(n-2));

}

voidmain()

{

intn;

cout<<"请输入n的值:

"<

cin>>n;

fib(n);

cout<<"Fibonacci级数结果为:

"<

for(;n>2;n--)

{cout<<"倒数第"<

"<

cout<<"fib("<

}

}

执行结果为:

n=1:

n=2:

n=6:

五.思考题

1.小结多重选择结构。

答:

多重选择结构是根据所指定的条件判断满足何种操作,从而选择其一。

处理这类问题的方法常用的是if,if……elseif……else嵌套和switch选择语句进行操作。

2.递归调用如何才是有意义的?

答:

必须满足函数是自身调用自身才是有意义的。

 

南昌大学实验报告

学生姓名:

吕金石学号:

61004082024专业班级:

数字媒体081班

实验类型:

□验证□综合□设计□创新实验日期:

2010.10.7实验成绩:

实验3类与对象

一.实验目的

1.学会有关C++语言够造函数和析构函数、拷贝构造函数、内联成员函数、带默认形参值的成员函数。

2.学会对象的使用。

二.实验内容

设计一个用于人事管理的“人员”类。

由于考虑到通用性,这里只抽象出所有类型人员都具有的属性:

编号、性别、出生日期、身份证号等。

其中“出生日期”声明为一个“日期”类内嵌子对象。

用成员函数实现对人员信息的录入和显示。

要求包括:

够造函数和析构函数、拷贝构造函数、内联成员函数、带默认形参值的成员函数、类的组合。

三.实验环境

PC微机

Windows操作系统

VC程序集成环境

四.实验步骤

源程序为:

#include

classBirthday//定义出生日期类

{

public:

Birthday(inty,intm,intd)

{

year=y;

month=m;

day=d;

}

intyear;

intmonth;

intday;

};

classPerson

{

public:

Person(Birthdayb1,intN,charS,intI);//带默认形参的成员函数

~Person()//析构函数

{}

voidSetNumber(charN)

{

Number=N;

}

voidSetSex(charS)

{

Sex=S;

}

voidSetID(charI)

{

ID=I;

}

inlineintGetNumber()//内联函数

{

returnNumber;

}

inlinecharGetSex()//内联函数

{

returnSex;

}

inlineintGetID()//内联函数

{

returnID;

}

voidGetbirthday()

{

cout<

cout<<"-";

cout<

cout<<"-";

cout<

}

private:

intNumber;//定义编号

charSex;//定义性别

intID;//定义身份证号

Birthdaybirth;//实现"日期"类内嵌对象

};

Person:

:

Person(Birthdayb1,intn,chars,inti):

birth(b1)//拷贝构造函数,类的组合

{

Number=n;

Sex=s;

ID=i;

}

voidmain()

{

Birthdayb0(1980,2,22);

PersonP(b0,12345,'M',100);

cout<<"信息为:

"<

cout<<"编号:

"<

cout<<"性别"<<":

"<

cout<<"身份证号"<<":

"<

cout<<"出生年月"<<":

";

P.Getbirthday();

}

运行结果:

 

南昌大学实验报告

学生姓名:

吕金石学号:

6100408024专业班级:

数字媒体081班

实验类型:

□验证□综合□设计□创新实验日期:

2010.10.18实验成绩:

实验4友元函数

二、实验目的

理解类的友元函数、友元类

三、实验基本原理

定义类X、Y、Z,函数h(X*),满足:

类X的私有成员i,Y的成员函数g(X*)是X的友元函数,实现对X的成员i加1,类Z是类X的友元类,其成员函数f(X*)实现对X的成员i加5,函数h(X*)是类X的友元函数,实现对X的成员i加10。

在一个文件中定义和实现类,在另一个函数中实现main函数。

四、主要仪器设备及耗材

PC微机

Windows操作系统

VC程序集成环境

五、实验步骤

#include

classX;

classY

{

public:

intg(X*);

};

classX

{

public:

friendintY:

:

g(X*x);

friendinth(X*);

friendclassZ;

intseti(inti);

private:

inti;

};

intX:

:

seti(inti)

{

cout<<"初始状态i的值为0;"<

returni=0;

}

intY:

:

g(X*x)

{

(*x).i+=1;

cout<<"调用g(X*)函数后,i的值变为i=1"<

return0;

}

classZ

{

public:

intf(X*);

private:

Xx;

};

intZ:

:

f(X*x)

{

(*x).i+=5;

cout<<"调用f(X*)函数后,i的值变为i=5"<

return0;

}

inth(X*x)

{

(*x).i+=10;

cout<<"调用h(X*)函数后,i的值为i=10"<

return0;

}

voidmain()

{

Xx;

x.seti(0);

Yy1;

y1.g(0);

Zz1;

z1.f(0);

h(0);

}

六、实验数据及处理结果

七、参考资料

《c++语言程序设计》

 

 

南昌大学实验报告

学生姓名:

吕金石学号:

6100408024专业班级:

数字媒体081班

实验类型:

□验证□综合■设计□创新实验日期:

2010.11.2实验成绩:

实验5数组和指针

一.实验目的

1.掌握数组的基本概念,包括:

数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出等;重点掌握对象数组的使用。

2.掌握指针的基本概念和基本用法。

包括:

变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;重点掌握对象指针的使用。

二.实验内容

有关数组和指针的程序设计

三.实验环境

PC微机

DOS操作系统或Windows操作系统

TurboC程序集成环境

四.实验步骤

1.编程实现:

设计一个Point类,利用对象数组,进行点的线性拟合。

要求能通过键盘输入对对象数组进行赋值。

 

#include

#include

usingnamespacestd;

classpoint

{

public:

point(floatxx=0,floatyy=0)

{

X=xx;Y=yy;

}

floatgetX(){returnX;}

floatgetY(){returnY;}

friendfloatlinefit(pointl_point[],intn_point);

private:

floatX,Y;

};

floatlinefit(pointl_point[],intn_point)

{

floatav_x,av_y;

floatl_xx,l_yy,l_xy;

av_x=0;av_y=0;l_xx=0;

l_yy=0;l_xy=0;

for(inti=0;i

{

av_x+=l_point[i].X/n_point;

av_y+=l_point[i].Y/n_point;

}

for(i=0;i

{

l_xx+=(l_point[i].X-av_x)*(l_point[i].X-av_x);

l_yy+=(l_point[i].Y-av_y)*(l_point[i].Y-av_y);

l_xy+=(l_point[i].X-av_x)*(l_point[i].Y-av_y);

}

cout<<"thislinecanbefittedbyy=ax+b."<

cout<<"a="<

cout<<"b="<

returnfloat(l_xy/sqrt(l_xx*l_yy));

}

intmain()

{intj,n,f;

pointl_p[10];

for(j=0;j<10;j++)

{cout<<"Pleaseenterthenumber"<

cout<<"x=";cin>>n;

cout<<"y=";cin>>f;

l_p[j]=point(n,f);

}

floatr=linefit(l_p,10);

cout<<"linecoefficientr="<

}

2.编程实现:

利用指针,设计一个程序,对任意的一个浮点数,可以将其整数部分和小数部分分别输出。

#include

usingnamespacestd;

voidcount(floata,int*b,float*c)

{

*b=(int)a;

*c=a-*b;

}

voidmain()

{

floatx,y;

intz;

cout<<"请输入一个浮点数:

x=";

cin>>x;

count(x,&z,&y);

cout<<"整数部分:

"<

cout<<"小数部分:

"<

}

3.编程实现:

设计一个Point类,编程实现通过对象指针的方法访问Point类对象的成员;通过成员函数指针的方法访问成员函数;动态创建和删除对象数组

#include

usingnamespacestd;

classpoint

{

public:

point(intxx=0,intyy=0)

{

X=xx;

Y=yy;

countp++;

cout<<"构造函数调用"<

}

point(point&p);

~point()

{countp--;

cout<<"析构函数调用"<

intgetX()

{returnX;}

intgetY()

{returnY;}

voidgetxy(intx,inty)

{

X=x;

Y=y;

}

staticvoidgetp()

{cout<<"countnumberis:

"<

private:

intX,Y;

staticintcountp;

};

point:

:

point(point&p)

{

X=p.X;

Y=p.Y;

countp++;

cout<<"拷贝构造函数被调用"<

}

intpoint:

:

countp=0;

voidmain()

{

pointa(10,20);

point*n;

point*p=newpoint[2];

n=&a;

p[0].getxy(30,40);

p[1].getxy(50,60);

cout<<"利用指针访问对象成员:

"<getX()<<","<getY()<

cout<<"利用对象访问对象成员:

"<

a.getp();

pointb(a);

cout<

b.getp();

delete[]p;

}

 

南昌大学实验报告

学生姓名:

吕金石学号:

6100408024专业班级:

数字媒体081班

实验类型:

□验证□综合■设计□创新实验日期:

2010.11.13实验成绩:

实验六静态成员

一.实验目的

学习静态成员数据和静态成员函数的用法。

二.实验内容

声明一个Cat类,拥有静态数据成员HowmanyCats,记录Cat的个体数目;声明静态成员函数GetHowMany(),存取HowManyCats。

设计程序测试这个类,体会静态数据成员和静态成员方法函数的用法。

三.实验环境

PC微机

Windows操作系统

MicrosoftVisualStudio6.0集成开发环境;

4.实验步骤

实验程序代码:

#include

usingnamespacestd;

classcat

{

public:

cat()

{

weight=0;

age=0;

}

~cat(){howmanycats--;}

voidgetweight(intw)

{

weight=w;

howmanycats++;

}

voidgetage(inta)

{

age=a;

}

intshowweight()

{returnweight;}

intshowage()

{returnage;}

staticvoidgethowmany()

{

cout<<"cat'scount:

"<

cout<<"静态函数成员调用静态数据成员。

"<

}

private:

intweight,age;

staticinthowmanycats;

};

intcat:

:

howmanycats=0;

voidmain()

{

catc1;

catc2;

c1.getweight(10);

c1.getage(5);

cout<<"cat"<

cout<<"第一只猫的weight:

"<

cout<<"第一只猫的age:

"<

c1.gethowmany();

c2.getweight(18);

c2.getage(8);

cout<<"第二只猫的weight:

"<

cout<<"第二只猫的age:

"<

c2.gethowmany();

}

5、实验结果

南昌大学实验报告

学生姓名:

吕金石学号:

6100408021专业班级:

数字媒体081班

实验类型:

□验证□综合■设计□创新实验日期:

2010.11.30实验成绩:

实验7多态

一.实验目的

1.理解继承的概念,了解面向对象设计中继承的合理性;

2.掌握派生类的构造与析构;

3.掌握在对象中使用类层次和继承思想进行设计、实现和测试;

二.实验内容

用模板类实现双向链表。

三.实验环境

PC微机

Windows操作系统

MicrosoftVisualStudio6.0集成开发环境;

4.实验步骤

#ifndefNODE_CLASS

#defineNODE_CLASS

template

classNode

{

private:

Node*next;

public:

Tdata;

Node(constT&item,Node*ptrnext=NULL);

voidInsertAfter(Node*p);

Node*DeleteAfter(void);

Node*NextNode(void)const;

};

template

Node:

:

Node(constT&item,Node*ptrnext):

data(item),next(ptrnext)

{}

template

Node*Node:

:

NextNode(void)const

{returnnext;}

template

voidNode:

:

InsertAfter(Node*p)

{

p->next=next;

next=p;

}

template

Node*Node:

:

DeleteAfter(void)

{

Node*tempPt

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

当前位置:首页 > 初中教育 > 其它课程

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

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