吕金石C++实验报告.docx
- 文档编号:9741643
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:36
- 大小:380.30KB
吕金石C++实验报告.docx
《吕金石C++实验报告.docx》由会员分享,可在线阅读,更多相关《吕金石C++实验报告.docx(36页珍藏版)》请在冰豆网上搜索。
吕金石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<<"利用指针访问对象成员: "< 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 public: Tdata; Node(constT&item,Node voidInsertAfter(Node Node Node }; template Node : Node(constT&item,Node data(item),next(ptrnext) {} template Node : NextNode(void)const {returnnext;} template voidNode : InsertAfter(Node { p->next=next; next=p; } template Node : DeleteAfter(void) { Node
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 金石 C+ 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)