C++程序设计实验指导.docx
- 文档编号:23393427
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:18
- 大小:67.24KB
C++程序设计实验指导.docx
《C++程序设计实验指导.docx》由会员分享,可在线阅读,更多相关《C++程序设计实验指导.docx(18页珍藏版)》请在冰豆网上搜索。
C++程序设计实验指导
《C++程序设计》
实验指导
目录
实验0认识开发环境1
实验1数据类型与输入输出2
实验2分支语句3
实验3循环语句1
实验4函数和程序结构1
实验5数组1
实验6指针和引用1
实验7类和对象1
实验8继承和派生1
实验9多态1
实验10输入/输出流1
实验0认识开发环境
实验目的
●了解和使用集成开发环境。
●熟悉集成开发环境的基本编辑命令及功能键,学会常规窗口操作,熟悉常用的菜单命令。
●学习完整的C++程序开发过程(编辑、编译、连接、调试、运行及查看结果)。
●理解简单的C++程序结构。
实验学时
本次实验作为练习之用不单独安排学时。
实验要求
●在学完教材第1章内容后进行本次实验。
●熟悉Windows操作系统的环境和基本操作。
●根据实验内容的相应描述和要求,自行设计并调试代码。
实验内容
1.基础部分
(1)熟悉开发环境。
(2)操作工具栏和项目工作区窗口。
(3)用应用程序向导创建一个控制台应用项目Ex_Hello。
(4)输入并执行一个新的C++程序Ex_Simple。
2.进阶部分
(1)编写一个C++程序:
输入圆的半径,输出其周长。
(2)实现一个多行输出的程序,输出内容为:
*
***
*****
*******
实验1数据类型与输入输出
实验目的
●了解基本数据类型的字节宽度和范围表示。
●掌握表达式中各种运算符的功能和特点。
●理解表达式和语句的概念。
●掌握基本的输入输出方法。
●学习过程化程序设计的方法。
●培养编写程序的艺术,明确程序可读性是程序质量的重要标准。
●初步学习调试方法。
实验学时
本次实验需要4个学时。
实验要求
●在学完教材第2章内容后进行本次实验。
●根据实验内容的相应描述和要求,自行设计并调试代码。
实验内容
1.基础部分
(1)测试基本数据类型char、int和short之间的相互转换。
(2)测试cin和cout的基本输入和输出用法。
(3)编写程序,求圆的周长、圆面积、圆球体积、圆柱体积。
要求用const设定PI常量,定义适当数据类型的变量,并设圆、球半径和圆柱的高的初值分别为2.5、4,依次计算上述结果并输出,输出时要求有相应的文字提示,取小数点后两位数字。
(4)设整数42468,请定义一个变量,初始化之,并以八进制和十六进制数输出。
如果将该整数定义成无符号数短整数,当以有符号数输出时,结果是什么
(5)将e(2.718281828)作为常量定义,然后输出其10位有效数位的浮点数、定点方式和8位小数位表示的数。
2.进阶部分
(1)用sizeof运算符编写一个测试程序,测试本机中各基本数据类型或字符串所占的字节数,并将其填写到下表中,然后分析其结果。
基本数据类型
所占字节数
基本数据类型或字符串
所占字节数
char
float
short
double
int
longdouble
long
“\nCh\t\v\0ina”
(2)已知a=b=100000,c=1000,编程求a*b/c,注意不要让中间结果溢出。
实验2分支语句
实验目的
●了理解程序的分支结构,能实现简单的条件判断程序。
●进一步学习编程技巧,条件表达式代替条件语句,逻辑短路表达式。
●掌握switch多分支结构。
实验学时
本次实验需要6个学时。
实验要求
●在学完教材第3章内容后进行本次实验。
●根据实验内容的相应描述和要求,自行设计并调试代码。
实验内容
1.基础部分
(1)从键盘输入一个三位数,从左到右用a、b、c表示各位数字,记为abc,现要求依次输出从右到左的各位数字,即输出另一个三位数cba。
例如,输入123,输出321。
(2)编写程序计算下列数学函数:
x-1(x≥10)
y=2x+2(1 3x2+3x-1(x≤1) 当输入x后,输出y的值。 (3)编写程序给,出一个百分制成绩,要求输出成绩等级A、B、C和D。 其中,85分以上为A,75~84分为B,65~74分为C,65分以下为D。 (4)实现一个简单的菜单程序,运行时显示“Menu: A(dd)D(delete)S(ort)Q(uit),Selectone: ”提示用户输入,A表示增加,D表示删除,S表示排序,Q表示退出,输入为A,D,S时分别提示“数据已经增加、删除、排序。 ”输入Q时程序结束。 2.进阶部分 (1)编程求解一元二次方程ax2+bx+c=0的根。 当a=0且b=0时,方程无根。 当a=0且b 0时,方程有一个根。 当a 0时,根据Δ=b2-4ac确定方程的根,若Δ>0,有两个不同的实根;当Δ=0,有两个相同的实根;当Δ<0,有两个不同的复根。 输入参数a、b、c,输出相应的结果。 (2)编程实现输入一个整数,判断其能否被3,5,7整除,并输出以下信息之一: 能同时被3,5,7整除; 能被其中两数(要指出哪两个)整除; 能被其中一个数(要指出哪一个)整除; 不能被3,5,7任一个整除。 实验3循环语句 实验目的 ●掌握表达式中逻辑运算符、关系运算符的功能和特点。 ●掌握while和do-while循环的区别。 ●掌握for循环的语法结构并用其解决问题。 实验学时 本次实验需要6个学时。 实验要求 ●在学完教材第4章内容后进行本次实验。 ●根据实验内容的相应描述和要求,自行设计并调试代码。 实验内容 1.基础部分 (1)Fibonacci数列的前两个数是1和1,从第三个数开始,每个数等于前两个数之和。 编程计算并输出此数列的前30个数,且每行输出5个数。 (2)编写程序用泰勒级数求e的近似值,直到最后一项小于10-6为止。 (3)教材4.4,求出1000之内的所有完数。 (4)程序Ex_Graph打印下列菱形图案: * *** ***** ******* ***** *** * 2.进阶部分 (1)对运行中输入的x,计算级数: 1+x–x2/2! +x3/3! -…(-1)n+1*xn/n! 。 要求输出精度为10-8。 (2)编程求所有的3位素数,且该素数是对称的,所谓“对称”是指一个数倒过来还是该数。 例如,375不是对称数,因为倒过来变成了573。 (3)编程打印九九乘法表: 分别打印上三角(如下图所示),下三角,和全体。 *123456789 1123456789 24681012141618 39121518212427 4162024283236 52530354045 636424854 7495663 86472 981 (4)求Fibonacci数列的前20个数[设置每输出5个元素就换行] 实验4函数和程序结构 实验目的 ●掌握函数声明、定义和使用的方法。 ●掌握函数递归调用的方法。 ●掌握重载函数及函数参数默认的使用方法。 ●掌握自定义头文件的方法。 ●掌握建立和调试多文件结构程序的方法。 实验学时 本次实验需要6个学时。 实验要求 ●在学完教材第5,6章内容后进行本次实验。 ●根据实验内容的相应描述和要求,自行设计并调试代码。 实验内容 1.基础部分 (1)编写程序求三角形的面积。 已知三角形的三边a、b、c,则三角形的面积为 其中,s=(a+b+c)/2。 需要说明的是,三角形的三边的边长由cin输入,需要判断这三边是否构成一个三角形。 若是,则计算其面积并输出,否则输出“错误: 不能构成三角形! ”。 编写一个完整的程序,其中需要两个函数,一个函数判断是否构成三角形,另一个函数计算三角形的面积。 (2)设计一个函数,要求能将一个正整数n按反序输出,n的位数不定。 例如,123输出321。 要求: 用非递归函数来实现,编写完整的程序并测试。 (3)用递归方法求解母牛问题。 若一头母牛,从出生起第四个年头开始每年 生一头母牛,按此规律,第n年时有多少头母牛? 要求: 用递归函数求解;先测试递归条件,后递归调用;运行时n由键盘输入。 (4)编写程序,其中包含三个重载的display函数。 第一个函数输出一个double值,前面用字符串“Adouble: ”引导(cout<<"Adouble: ";);第二个函数输出一个int值,前面用字符串“Aint: ”引导;第三个函数输出一个char字符,前面用字符串“Achar: ”引导。 在主函数中,分别用double,float,int,char和short型变量去调用display函数 (5)将打印九九乘法表程序分解为四个源文件实现。 一个文件含有主函数,调用其它三个函数。 其他三个文件分别含有一个九九乘法表输出格式的函数定义。 要求用一个头文件作为相互联络的接口。 2.进阶部分 (1)设计一个程序,通过重载求两个数中最大数的函数max(),分别实现求两个实数和两个整数及两个字符的最大者。 (2)编程程序求下式值,其中ni用函数来实现,且设参数n的默认值为2: (3)编写程序用递归法将一个整数n转换成字符串。 如输入1234,应输出字符串“1234”。 n的位数不确定,可以是任意位数的整数。 (4)将打印九九乘法表改用函数调用的形式,适当取函数名,分别调用三种函数以输出不同格式。 实验5数组 实验目的 ●掌握数组和字符串的基本操作方法。 ●掌握常用的几种遍历数组的方法。 ●掌握常用的排序方法。 实验学时 本次实验需要6个学时。 实验要求 ●在学完教材第7章内容后进行本次实验。 ●根据实验内容的相应描述和要求,自行设计并调试代码。 实验内容 1.基础实验 (1)一个包含10个元素的数组,已按升序排序,输入一个任意的整数,将该整数插入数组中,使数组元素仍保持升序排列。 要求编写一个通用的插入排序函数InsertSort,它带有三个参数,第一个参数是含有n个元素的数组,这n个元素已按升序排序;第二个参数给出当前数组中元素的个数;第三个参数是要插入的整数。 该函数的功能是将一个整数插入到数组中,然后进行排序。 另外还需要一个用于输出数组元素的函数Print,要求每一行输出5个元素。 (2)编程求下列两个矩阵的加法(结果矩阵的元素值是这两个矩阵相应元素之和)。 要求: 定义函数MatAdd用于求矩阵的加法,函数Show用于输出矩阵。 (3)要求设计一个函数voidstrcpy(chara[],charb[]),将b中的字符串复制到数组a中(要求不使用C++的库函数strcpy())。 编写完整的程序并测试。 2.进阶实验 (1)输入10个数到一维数组中,用冒泡排序法将其按从大到小的次序排序后输出。 要求: 分别用三个函数实现数据的输入、排序及输出。 (2)输入一个5*5的整数矩阵,求出两条对角线元素值之和。 (3)编写一个函数,统计一条英文句子中字母的个数,在主程序中实现输入、输出。 (4)编写程序实现下述功能: 由17人围成一个圈,编号1~17,从第1号开始报数,报到3的倍数的人离开,一直数下去,直到最后只剩下1个人,求此人的编号。 实验6指针和引用 实验目的 ●学习数组定义、初始化、赋值、使用的方法。 ●学习给函数传递数组的方法。 ●声明和操作指针和引用。 ●学习用指针和引用给函数传递参数。 ●学习调试方法。 实验学时 本次实验需要6个学时。 实验要求 ●在学完教材第8,9章内容后进行本次实验。 ●根据实验内容的相应描述和要求,自行设计并调试代码。 实验内容 1.基础部分 (1)编写程序实现两个字符串比较的自定义版(教材8.5)。 (2)编写程序实现字符串数组的排序。 用指针数组作为函数mySort形参,实现字符串数组的排序。 函数mySort还有一个形参n,用来指定字符串数组的大小。 (3)编制程序,将输入的一行字符加密和解密。 加密时,每个字符依次反复加上“4962873”中的数字,如果范围超过ASCII码的032(空格)~122(‘z’),则进行模运算。 解密与加密的顺序相反。 编制加密和解密函数,打印各个过程的结果。 (4)编写程序实现数据交换。 分别用指针和引用作为函数mySwap的形参,并通过重载分别实现int、double型变量值的交换。 (5)字符串交换 编写程序,交换两个不同长度的字符串,分别打印之。 要求: 用函数调用的方式来实现。 主函数中定义两个字符串,然后调用交换函数。 教材9.3 2.进阶部分 (1)编写程序实现下述功能: 由17人围成一个圈,编号1~17,从第1号开始报数,报到3的倍数的人离开,一直数下去,直到最后只剩下1个人,求此人的编号。 (要求用new和delete来分配、释放所需内存空间)。 (2)设计一个函数,形参是引用类型,要求输入三个整数,按从小到大排序后输出。 编程完整的程序并测试。 实验7类和对象 实验目的 ●学习定义类的方法。 ●学习构造函数、拷贝构造函数的定义使用方法。 ●学习对象的使用方法。 ●领会面向对象程序设计的基本方法。 实验学时 本次实验需要6个学时。 实验要求 ●在学完教材第11、12、13、14章内容后进行本次实验。 ●根据实验内容的相应描述和要求,自行设计并调试代码。 实验内容 1.基础部分 (1)一圆形游泳池如图所示,现在需在其周围建一圆形过道,并在其四周围上栅栏。 栅栏价格为35元/米,过道造价为20元/平方米。 过道宽度为3米,游泳池半径由键盘输入。 要求编程计算并输出过道和栅栏的造价。 分析: 可以定义一个类: 圆。 数据成员: 圆的半径; 函数成员: 计算周长与面积; (2)创建一个Employee类,该类中有字符数组,表示姓名,街道地址、市、省和邮政编码。 Employee中包含构造函数、change_name()和display()函数,构造函数初始化每个数据成员,change_name函数用于修改姓名,display函数显示完整的对象数据。 其中的数据成员是私有类型,成员函数是共有类型。 编写一个可运行的完整程序,构造Employee类对象调用其成员函数。 2.进阶部分 (1)定义日期类型Date。 要求: 包含年月日数据成员;提供默认构造函数、带年月日参数的构造函数、和拷贝构造函数;定义set成员函数可以设置日期;日期加一天操作;定义intput成员函数,输入日期信息,输入格式为“YYYY-MM-DD”;定义print成员函数输出对象的日期。 编写一个可运行的完整程序,构造3个日期类型的对象,并输出相应的日期信息。 (2)编写一个程序,统计学生成绩,其功能包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对前70%的学生定为合格(pass),后30%的学生定为不合格(fail)。 提示: 设计一个类Student,包含学生的姓名和成绩等数据,以及SetName()、SetDeg()、GetName()和GetDeg()4个成员函数。 设计一个类Compute,包含两个私有数据成员,即学生人数ns和Student类的对象数组na[],另有3个公有成员函数GetData()、Sort()和Disp(),它们分别用于获取数据、按成绩排序和输出数据。 实验8继承和派生 实验目的 ●学习根据现有类建立新类的方法。 ●理解继承的含义,掌握派生类的定义方法和实现; ●理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员; ●理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员; ●了解虚基类的用法。 实验学时 本次实验需要6个学时。 实验要求 ●在学完教材第16、17章内容后进行本次实验。 ●根据实验内容的相应描述和要求,自行设计并调试代码。 实验内容 1.基础部分 1、编写一个程序Ex_Student,以实现一个班级学生的学期成绩管理。 个人信息类Cperson的数据成员有姓名、年龄、性别;课程类CCourse的数据成员有课程名、学分、成绩;学生类CSutudent从CPerson类派生,并增加数据成员学号、CCcourse对象成员数组(大小为8)、总成绩、总学分和平均成绩;班级类CClass类的数据成员有CStudent类对象数组(大小由构造函数决定)、班号、班级人数等。 要求: (1)本班级类CClass中添加成员函数Seek,通过学号查找并输出学生的全部信息。 (2)构造三个学生的数据,每个学生都有三门课程成绩。 输入并显示这些数据。 (3)根据类的需要添加适当的其他成员,编写完整的程序并测试。 2.进阶部分 (1)对程序Ex_Student进行扩展,定义导师类CTutor,继承CPerson类,并增加数据成员职称;定义研究生类CGraduateStudent继承学生类,并且增加数据成员导师类对象,根据需要添加适当的其他成员,编写完整程序并测试。 (2)定义时间类型Time 要求: 继承Date类,并增加数据成员时分秒;增加构造函数、拷贝构造函数;增加设置时间的成员函数;编写完整的程序,创建时间对象,并输出时间。 (3)编写一个程序计算出球、圆柱和圆锥的体积。 要求: ①定义一个基类圆,至少含有一个数据成员半径; ②定义基类的派生类球、圆柱、圆锥,都含有求体积的成员函数和输出函数。 ③定义主函数,求球、圆柱、圆锥的体积。 (4)编写一个程序实现小型公司的工资管理。 该公司主要有4类人员: 经理(Manager)、技术人员(Technician)、销售员(Salesman)、销售经理(Salesmanager)。 这些人员都是公司的职员,都有编号、姓名、月工资等信息。 月工资的计算方法是: 经理固定月薪8000元,技术人员每小时100元,销售员按当月销售额的4%提出,销售经理的固定月工资5000元,并按所管辖部门当月销售额的5‰做为销售提成。 要求编程计算该公司人员的月工资并显示全部信息。 实验9多态 实验目的 ●理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。 ●理解抽象类的作用和使用方法。 ●理解重载运算符的作用,学会对典型的运算符进行重载。 实验学时 本次实验需要4个学时。 实验要求 ●基础部分实验必选,进阶部分实验任选。 ●根据实验内容的相应描述和要求,自行设计并调试代码。 实验内容 1.基础部分 (1)编写程序Ex_Shape: 定义一个类CShape,包含两个虚函数Area(用来计算面积)和SetData(用来设计形状大小)。 然后派生出矩形CRect类、圆CCircle类,分别求其面积。 最后定义一个CArea类,计算这几个形状的面积之和,各形状的数据通过CArea类的构造函数或成员函数来设置。 (2)编写程序Ex_String: 重载字符串运算符=、+、<分别用于字符串的赋值、拼接、比较运算,实现字符串直接操作。 其中=和<运算符重载函数为友元函数,而+运算符重载为成员函数。 (3)定义Point类,有坐标一x,一y两个成员变量;对Point类重载“++”(自增)、“一一”(自减)运算符,实现对坐标值的改变。 2.进阶部分 定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。 观察虚函数的作用。 实验10输入/输出流 实验目的 ●学习I/O流类的操作。 ●学习对I/O流进行格式控制。 ●学习文件流的使用方法。 实验学时 本次实验需要4个学时。 实验要求 ●在学完教材第19章内容后进行本次实验。 ●根据实验内容的相应描述和要求,自行设计并调试代码。 实验内容 1、建立两个磁盘文件f1.dat和f2.dat 要求: (1)从键盘输入20个整数,存放在磁盘文件f1.dat中; (2)从f1.dat中读入10个数,存放到f2.dat文件中; (3)将f2.dat中的数据按由小到大的顺序存放,不保留原有文件内容 2、设计一个管理图书的简单程序,提供的基本功能包括: 可连续将新书存入文件“book.dat”中,新书信息加入到文件的尾部;也可以根据输入的书名进行查找;把文件“book.dat”中同书名的所有书显示出来。 为简单起见,描述一本书的信息包括: 书号,书名,出版社和作者........忽略此处.......
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 实验 指导