C++程序设计实验指导书.docx

上传人:b****3 文档编号:3484125 上传时间:2022-11-23 格式:DOCX 页数:13 大小:40.99KB
下载 相关 举报
C++程序设计实验指导书.docx_第1页
第1页 / 共13页
C++程序设计实验指导书.docx_第2页
第2页 / 共13页
C++程序设计实验指导书.docx_第3页
第3页 / 共13页
C++程序设计实验指导书.docx_第4页
第4页 / 共13页
C++程序设计实验指导书.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C++程序设计实验指导书.docx

《C++程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《C++程序设计实验指导书.docx(13页珍藏版)》请在冰豆网上搜索。

C++程序设计实验指导书.docx

C++程序设计实验指导书

 

C++程序设计

实验指导书

 

通信工程学院

 

前言

C++语言是目前程序设计的主流语言,熟练掌握C++软件是工程技术人员开发软件的必备素质。

本课程主要阐述C++程序设计的基本原则及面向对象技术程序设计的基本原理和方法,使学生深刻理解面向对象技术所带来的观念改革,掌握一种面向对象程序设计语言和面向对象设计的思维方式、规则与基本方法,了解面向对象程序设计技术的发展趋势。

通过本课程学习,使学生掌握面向对象程序设计的基本方法、规则,并能用面向对象的方法,对客观事物进行分析、建立模型,初步掌握C++面向对象编程语言。

程序设计是一门实践性很强的课程,必须以实践为重,许多实践知识不是靠听课和看书学到的,而是通过长时间的实践积累起来的,切忌只看书,不上机实践。

C++实验的目的,绝不仅是为了验证教材和讲课的内容,或者验证自己所编写的程序正确与否。

其目的更在于:

1、加深对讲授内容的理解,尤其是一些语法规定,只靠课堂讲授,不足于掌握理解。

通过多次上机,就能自然地、熟悉地掌握,所谓熟能生巧。

2、熟练掌握并使用C++程序开发的环境。

3、学会独立调试和运行程序。

任何程序都不是一蹴而就的,需要多次的更改调试,对初学者来说更是如此。

因此,要在调试过程中积累经验,再利用经验高效、快速地调试程序。

调试程序的能力是每个程序设计人员应当掌握的一项基本功。

4、养成良好的编程习惯,编写良好风格的代码。

编写程序应遵循良好的编程规范,使程序具有良好的可读性、可维护性。

正如写文章一样,不仅要写得一手好字,更要格式规范,段落分明,思路清晰。

5、培养独立编写程序的能力。

程序设计最终的目的是使用计算机解决实际问题,问题是什么,如何解决,解决方法是什么,如何编写程序解决问题才是核心。

因此,在做实验的时候应多问为什么,多观察,多分析,多动手。

确立以上原则为指导思想,认真的实践才能真正掌握C++。

实验一数据类型和表达式

【实验目的】

1、熟悉并学习使用C++程序编译平台VC6.0;

2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的C++程序;

3、掌握C++语言基础数据类型,熟悉变量及常量的定义和赋值方法;

4、学会使用C++算术运算符和算术表达式;

5、掌握C++程序的赋值和输入输出语句的使用方法;

6、掌握简单C++程序的编写和调试

【实验内容】

1、从键盘上输入两个int型数,比较其大小,并输出显示其中较小的数;

2、从键盘上输入一个int型数,一个浮点数,比较其大小,将输出其中较大的数;

3、输入一摄氏温度,编程输出华氏温度。

已知;华氏温度转换为摄氏温度的计算公式如下:

其中,

表示华氏温度,

表示摄氏温度。

4、编程实现输入千米数,输出显示其英里数。

已知:

1英里=1.60934千米(用符号常量)

5、输入一个int型数,将它的低4位(右四位)都置为1;

6、求出1到1000之间的完全平方数。

所谓完全平方数是指能够表示成另外一个整数的平方的整数。

要求每行输出8个数。

【实验要求】

1、编写实验内容要求的程序、编译并调试通过;

2、实验报告中记录编程过程中出现的错误与改正方法;

3、实验报告中总结cin和cout的使用方法;

4、把第4小题的符号常量改成宏定义的方式;

实验二预处理和语句

【实验目的】

1、熟悉并掌握使用文件包含命令;

2、熟悉并学习使用条件编译命令;

3、掌握选择语句;

4、掌握循环语句;

【实验内容】

1、编写一个程序,输入某雇员的每周工作时间(以小时计)和每小时的工资数,计算并输出他的工资。

若雇员周工作小时超过40小时,则超过部分按原工资的1.5倍的加班工资来计算。

若雇员每周工作小时超过60小时,则超过60的部分按原工资的3倍的加班工资来计算,而40到50小时的工资仍按照原工资的1.5倍的加班工资来计算。

•要求有输入提示和输出提示,如要输入雇员的工作时间和每小时的工资值时,可以提示:

“Pleaseinputemployee’sworktimeandwage_per_hour:

输出时,提示:

“Theemployee’swage:

”;

2、编写一个程序,提示用户输入一个年份及这一年的第一天是星期几,输出每个月的第一天是星期几。

例如,如果用户输入2005和6,表示2005年1月1日是星期六,程序应输出如下内容:

January1,2005isSaturday

December1,2005isThursday

•用函数intComputeDay(intyear,intday)计算星期;

•在main函数完成用户输入和输出工作;

3、编写贷款分期偿还程序。

一笔贷款的月还款包含偿还本金和偿还利息。

月利息可以通过月利率乘以余额(剩余本金)来计算,于是月偿还金额就等于月还款额减去月利息。

•要求用户输入贷款额、贷款年限和利率,程序输出分期还款的计划。

•如果输入贷款额度10000美元、期限1年和利率7%,程序应该输出:

LoadAmount:

10000

NumberofYears:

1

AnnualInterestRate:

7%

MonthlyPayment:

865.26

TotalPayment:

10381.21

Payment#InterestPrincipalBalance

158.33806.939193.07

253.62811.648381.43

1110.0855.26860.27

125.01860.250.01

【实验要求】

1、编写实验内容要求的程序、编译并调试通过;

2、实验报告中记录编程过程中出现的错误与改正方法;

3、把第2小题的ComputeDay(intyear,intday)函数的声明和实现分别放在同一工程项目下的不同文件中;

4、总结文件包含编译命令的特点;

实验三指针和数组

【实验目的】

1、掌握指针的概念、学会定义和使用指针变量;

2、学习使用指针数组和指向数组的指针;

【实验内容】

1、一个班有5名学生,每个学生修了五门课,求每个学生的平均成绩,并输出每个学生的学号,每门课程的成绩及平均值。

求某门课程的平均分;

实现要求:

•分别编写2个函数实现以上2个要求,第1个函数用数组名作参数,第2个函数用指针用参数,并在函数体内用指针对数组操作。

2、编写一个程序,实现矩阵运算,具体要求如下:

•用函数addMatrix(inta[][COLUMN_SIZE],intb[][COLUMN_SIZE],intc[][COLUMN_SIZE],introwSize)实现矩阵相加运算;

•用函数multiplyMatrix(inta[][COLUMN_SIZE],intb[][COLUMN_SIZE],intc[][COLUMN_SIZE],introwSize)实现矩阵相乘运算;

•矩阵a和矩阵b的数据从键盘输入;

•输出矩阵相乘或相加结果即c矩阵的数据;

【实验要求】

1、编写实验内容要求的程序、编译并调试通过;

2、实验报告中记录编程过程中出现的错误与改正方法;

实验四函数和作用域

【实验目的】

1、掌握函数的定义和说明方法;

2、掌握函数调用时的传值调用、传址调用和引用调用方法;

3、掌握函数重载的方法;

4、学习使用指向字符串的指针变量;

5、掌握作用域的种类和范围;

【实验内容】

1、编写一个极坐标转换为直角坐标的程序,具体要求如下:

•在main函数中读入极坐标半径和相角;

•使用函数conver实现极坐标和直角坐标之间的转换;

•分别用传址调用和引用调用的方式调用conver函数;

2、编写一个程序,实现浮点类型数据和复数类型数据的相乘;具体要求如下:

•用结构体定义复数类型数据;

•编写浮点类型数据乘法运算函数product;

•重载函数product实现复数类型数据相乘;

•在mian函数中通过键盘输入一对浮点数和一对复数,分别对这两对数据进行相乘计算,并输出结果;

3、编写程序计算一个人的生物节律指数,它是生理、智力和情绪指数之和。

情绪周期

是一个正弦曲线,其振幅为1,周期为28天,在给定的一天内,一个人的情绪指数是

是他的年龄(以天计算)类似地,生理和智力周期也是正弦曲线,振幅为1,周期分别是23天和33天。

•编写输入年月日计算天输的函数computeday;

•编写计算生理指数的函数compute_physiological_index;

•编写计算情绪指数的函数compute_emotional_index;

•编写计算智力指数的函数compute_mentality_index;

•在主程序中输入年月日,计算生物节指数并输出;

【实验要求】

1、编写实验内容要求的程序、编译并调试通过;

2、实验报告中记录编程过程中出现的错误与改正方法;

3、在实验报告中回答如下问题:

•传址调用和引用调用有何不同?

•函数重载时可以除了参数的类型不同,其他都相同吗?

4、总结作用域的种类和使用范围;

实验五类与对象

(一)

【实验目的】

1、掌握类的概念以及定义类的方法;

2、学习简单面向对象程序的编写;

【实验内容】

1、设计一个名为Fan的类,表示一个风扇,该类满足下述要求:

•具有描述风扇转速的成员speed;

•具有描述风扇是否开启的成员on;

•具有描述风扇半径的成员radius;

•具有描述风扇颜色的成员color

•以上所有成员的访问和更改函数;

•输出风扇所有信息的函数display;

•在main函数中创建2个Fan的对象,将第一个风扇的转速、半径和颜色分别设置为3、10和yellow,并将它打开。

第二个风扇的转速、半径和颜色分别设置为2、5和blue,并将它关闭。

输出以上2个风扇的所有信息。

2、设计一个名为Account的类,该类满足下述要求:

•一个名为id的int型成员,表示账户的身份号;

•一个名为balance的double型成员,表示账户余额;

•一个名为annualInterestRate的double型数据域,保存当年利率;

•以上所有成员的访问和更改函数;

•一个名为getMonthlyInterestRate()的函数,返回月利率;月利率为年利率/12;

•一个名为withDraw的函数,从账户中支取指定金额;

•一个名为deposit的函数,向账户中存入指定金额;

•在mian函数中,创建一个Account对象,其ID为1122,账户余额为20000,年利率为4.5%,使用withDraw函数取出2500美元,使用deposit函数存入3000美元,然后输出账户的余额、月利率。

【实验要求】

1、编写实验内容要求的程序、编译并调试通过;

2、实验报告中记录编程过程中出现的错误与改正方法;

3、在报告中回答以下问题:

•定义类时,那些成员数据和成员函数是必须的,那些不是?

public、protected、private分别表示什么意思?

能否对类的成员数据在定义时初始化?

•在实验内容的第2小题中,账户余额变量balance是否必须定义为静态变量?

为什么?

实验六类与对象

(二)

【实验目的】

1、掌握类的构造函数和析构函数的概念和使用方法;

2、掌握对象数组、对象指针的定义和使用方法;

3、掌握new和delete的使用方法;

【实验内容】

1、设计描述平面坐标上的点CPoint类,该类满足下述要求:

•具有x,y坐标信息;

•具有带默认形参值的构造函数,参数分别用于初始化x和y坐标信息;

•具有获取x、y信息的GetX和GetY函数,具有设置x、y信息的SetX和SetY函数;

2、设计一个矩形类CRectangle,该类满足下述要求:

•具有矩形的左下角和右上角两个点的坐标信息,这两个点的数据类型是CPoint;

•具有带参数的构造函数CRectangle(constCPoint&,constCPoint&),参数分别用于设置左下角和右上角两个点的坐标信息;

•具有设置左下角和设置右上角的两个点坐标的功能SetLPoint(constCPoint&)和SetRPoint(constCPoint&);

•具有获得周长(GetPerimeter)和获得面积(GetArea)的功能。

3、在main函数中,完成以下工作:

•动态创建一个CRectangle类的对象a_rectagnle,其初始的左下角和右上角坐标分别为(2,5)、(6,8);调用GetPerimeter和GetArea获得矩形周长和面积,并将周长和面积显示在屏幕上;

•调用SetLPoint设置a_rectagnle的左下角为(4,6),调用SetRPoint设置a_rectagnle的右上角为(7,9);调用GetPerimeter和GetArea获得矩形周长和面积,并将周长和面积显示在屏幕上;

•销毁该动态创建的对象。

【实验要求】

1、编写实验内容要求的程序、编译并调试通过;

2、实验报告中记录编程过程中出现的错误与改正方法;

3、总结类的构造函数和析构函数的特点;

实验七继承与派生

【实验目的】

1、理解继承在面向对象程序设计中的重要作用;

2、理解继承和派生的概念;

3、掌握通过继承派生出一个新类的方法;

4、进一步学习简单面向对象程序的编写;

【实验内容】

1.设计一个Person类,它有两个派生类Student和Employee,Employee有两个派生类Faculty和Staff。

•Person类有一个string类型的名字name,string型的身份号id,string型的电话号码phonenumber,Person类构造函数的对应name的参数不能有默认形参值。

•Student类有一个年级grade属性(Freshman、Sophomore、Junior或Senior),将属性值定义为常量;

•Employee类有一个string型的办公地点office,一个double型的月薪水salary和一个MyDate型的雇佣日期dateHired;

•Faculty类有一个级别rank属性(Professor=3、AssociateProfessor=2、AssistantProfessor=1),属性值也定义成常量。

教师的薪水的计算方式为“薪水=基本工资×级别”;

•Staff类有一个职务position属性,为string类型,教工的薪水计算方式为“薪水=基本工资+津贴×工作年数”。

工作年数算到2010年1月1日为止,基本工资BasicWages、津贴Allowance定义为常量。

•上述5个类都有一个print成员函数来输出该类对象除薪水外的基本信息。

•MyDate类有year、month、day三个数据成员,有一个计算两个MyDate对象间年差的成员函数diffYear(MyDate&),年差计算只精确到月;三个数据成员的获取器函数。

3.定义上述类,并合理地补充构造函数和其它需要的函数。

在main函数中,定义一个Person类对象,一个Student类对象和一个Employee类对象一个Faculty类对象和一个Staff类对象。

输出Person类及其派生类对象的基本信息,并输出Faculty类对象和Staff类对象的薪水。

【实验要求】

1、编写实验内容要求的程序、编译并调试通过;

2、实验报告中记录编程过程中出现的错误与改正方法;

3、总结基类中public、protected、private成员在不同的继承方式下在派生类中的访问权限;

实验八多态实现

【实验目的】

1、了解继承和多态的作用和实现方式,掌握动态联编方法;

2、掌握使用C++语言的抽象类和派生类实现继承性;

【实验内容】

1、设计一个立体图形类(CStereoShape类),并满足如下要求:

•CStereoShape类有一个纯虚函数GetArea,能够获取立方体的表面积;

•CStereoShape类有一个纯虚函数GetVolume,能够获取立方体的体积;

2、设计一个立方体类(CCube类),该类继承于CStereoShape类,并满足如下要求:

•CCube类有一个带参数的构造函数,其参数分别对应于立方体的长、宽、高。

•用一个成员函数来实现对立方体长、宽、高的设置。

•重载CStereoShape类的GetArea和GetVolume,分别完成立方体的表面积和体积的计算。

3、设计一个球体类(CSphere),该类继承于CStereoShape类,并满足如下要求:

•CSphere类有一个带参数的构造函数,其参数对应于球体的半径。

•用一个成员函数来实现对球体半径的设置。

•重载CStereoShape类的GetArea和GetVolume,分别完成球体的表面积和体积的计算。

4、实现一个main函数,在main函数中至少完成如下工作:

•实例化一个CCube类的对象a_cube和CSphere类的对象c_sphere;

•定义一个CStereoShape类的指针p;

•将a_cube的长、宽和高分别设置为4、5和6;将p指向a_cube,通过p将a_cube的表面积和体积打印到屏幕上;

•将c_sphere的半径设置为7;将p指向c_sphere,通过p将c_sphere的表面积和体积打印到屏幕上。

【实验要求】

1、编写实验内容要求的程序、编译并调试通过;

2、实验报告中记录编程过程中出现的错误与改正方法;

3、总结静态联编和动态联编的区别;

4、总结抽象类的特点及作用;

实验九友元与运算符重载

【实验目的】

1、掌握友元函数的使用方法;

2、掌握使用运算符重载方法;

【实验内容】

1、定义一个复数类,重载“-=”运算符,使这个运算符能直接完成复数的“-=”运算。

•分别用成员函数与友元函数编写运算符重载函数;

•在主函数中定义复数对象c1(10,20)、c2(15,30),进行c2-=c1的复数运算,并输出c1、c2的复数值。

2、定义一个数组类Array:

•其私有数据成员为整型一维数组a[10];

•通过构造函数给数组赋初值;

•用show函数显示数组的元素值;

•用成员函数重载运算符“+”,直接实现两个一维数组对应元素相加的运算。

•在主函数中定义数组a、b分别为:

inta[10]={1,2,3,4,5,6,7,8,9,10};intb[10]={4,5,6,7,8,9,10,11,12,13};

•用Array定义三个数组对象arr1(a)、arr2(b)、arr3,执行arr3=arr1+arr2运算,输出arr3的数组元素值。

•类似地,用友元函数重载运算符“+=”,实现复合赋值运算:

arr1+=arr2,并输出arr1的元素值。

3、定义一个人民币类Money;

•类中数据成员为元、角、分;

•用成员函数与友元函数重载“――”运算符,实现人民币对象的减1运算;

•在主函数中定义人民币对象m1=10元8角5分及对象m2、m3,对m1作前置“――”并赋给m2。

对m1作后置“――”并赋给m3。

显示m1、m2、m3的结果。

【实验要求】

1、编写实验内容要求的程序、编译并调试通过;

2、实验报告中记录编程过程中出现的错误与改正方法;

3、总结友元函数的作用;

4、总结运算符重载时的注意事项;

实验十I/O流库

【实验目的】

1、理解流、流类、流类体系的概念;

2、学会用预定义格式控制函数设置输出格式(数制、宽度、小数点等);

3、掌握文本文件的使用方法;

4、初步掌握二进制文件的使用方法。

【实验内容】

1、定义描述职工工资的类Laborage,数据成员为职工号(No)、姓名(Name[8])、应发工资(Ssalary)、社保金(Security)、实发工资(Fsalary)。

•定义公有成员函数Input(),在Input()函数内输入职工号、姓名(用getline函数)、应发工资、社保金,实发工资由公式:

Fsalary=Ssalary-Security计算;

•定义输出职工工资的成员函数Show()。

在显示函数Show()中,职工号、姓名的输出域宽为8、左对齐,其余数据的输出域宽为10、右对齐、保留小数点后两位,输出格式均用预定义格式控制函数设置;

•在主函数中用Laborage类定义职工对象数组a[3]。

用Input()输入职工工资,用Show()显示每个职工的工资。

(提示:

用getline输入姓名后,必须用回车结束姓名输入);

实验数据:

1001ZhouZhi3000200

1002ChenHua4000400

1003WangFan5000500

2、将一个源文件复制为两个不同名目的文件,源文件与目的文件均用构造函数打开,使用成员函数get与put复制第一个目的文件,使用getline与插入运算符复制第二个目的文件。

(提示:

用get函数将输入文件流对象的指针指向文件尾后,无法将该指针移到文件首位置。

所以只能定义两个输入文件流对象打开同一源文件,用于两种方式的文件复制。

实验数据:

源文件:

e:

\ex\a.txt,文件内容为soucefile

目的文件1:

e:

\ex\b.txt

目的文件2:

e:

\ex\c.txt

3、将存放在源文件(e:

\ex\array1.txt)中学生成绩读入二维整型数组a[3][5]中,数组a的第0列存放学号,第4列存放平均成绩。

计算出每个学生的平均成绩,用擂台法对数组a按平均成绩升序排序后,存放在目的文件(e:

\ex\array2.txt)中。

学生的学号与成绩如实验数据所示。

编写程序实现上述要求。

【实验要求】

1、编写实验内容要求的程序、编译并调试通过;

2、实验报告中记录编程过程中出现的错误与改正方法;

 

实验报告模版如下(无需封面):

实验XXXXXXXXXXXXXX

选课时间:

XXXX学号XXXX姓名XXX

【实验目的】

1、XXXXXXXXXXXXXXXXXXXXXXXXXXXXx;

2、XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;

【源程序】

XXXXXXXXXXXXXXXXXXXX(程序关键语句加上注释)

【错误及解决办法】

1、XXXXXXXXXXXXXXXX

2、(此部分记录在程序编写中的遇到的问题和解决方法,如果问题太多,可择要记录)

【实验总结】

XXXXXXXXXXXXXXXXXXXXXX(此部分用来回答实验要求中的问题)

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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