1、南昌大学C+高级语言程序设计实验报告实 验 报 告实验课程: 学生姓名: 学 号: 专业班级: 2016年 9 月 1 日实验一. C+的开发环境和简单程序的调试 2实验二. 函数的应用和类的基本构造 5实验三. 数组、指针、字符串 8实验四. 继承与派生 10实验五. 多态与模板 15实验六. 异常处理 21实验七. 输入输出 25实验八. 文件 28 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2016-9-9 实验成绩: 一、实验项目名称 实验一. C+的开发环境和简单程序的调试二、实验目的 1 熟悉C+程序的风格,熟悉实验环境。2
2、练习C+程序的输入、修改、编译、连接与运行的全过程三、实验基本原理 C+程序设计语言四、主要仪器设备及耗材PC微机DOS操作系统或 Windows 操作系统C+程序设计语言开发环境五、实验步骤(要求给出运行结果的屏幕截图,源程序电子打包提交)1. 分析下面程序的输出结果:2. 建立一个被称为sroot( )的函数,返回其参数的二次根。重载sroot( )三次,让它分别返回整数、长整数与双精度数的二次根(为了实际计算二次根,可以使用标准库函数sqrt( ))。3. 编写C+风格的程序,解决百钱问题,将1元人民币兑换成1,2,5分的硬币,有多少种换法 六、实验数据及处理结果1. 分析下面程序的输出
3、结果:#include int &f(int &i) i+=10; return i;void main() int k=0; int &m=f(k); coutkendl; m=20; coutkendl;2. 建立一个被称为sroot( )的函数,返回其参数的二次根。重载sroot( )三次,让它分别返回整数、长整数与双精度数的二次根(为了实际计算二次根,可以使用标准库函数sqrt( ))。#include #include using namespace std;int sroot(int i) return (int)sqrt(i); float sroot(float f) retu
4、rn (float)sqrt(f); double sroot(double d) return (double)sqrt(d); int main( ) int i; float f; double d; couti; coutf; coutd; cout整型参数i的二次根=sroot(i)endl; cout长整参数f的二次根=sroot(f)endl; cout双精度参数d的二次根=sroot(d)endl;3. 编写C+风格的程序,解决百钱问题,将1元人民币兑换成1,2,5分的硬币,有多少种换法#include using namespace std;int main()int i,j
5、,k;int sum=0;for(i=0;i=100;i+)for(j=0;j=50;j+)for(k=0;k=20;k+)if(i*1+2*j+5*k=100) cout一分:i 两分:j 五分:kendl; sum+;cout总数为:sumendl;七、思考讨论题或体会或对改进实验的建议八、参考资料C+语言程序设计学生用书 清华大学出版社 郑莉等 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2016-9-9 实验成绩: 一、实验项目名称 实验二. 函数的应用和类的基本构造二、实验目的1 熟悉C+程序类定义的一般形式。2 熟悉C+程序对象
6、的定义,对象的使用。3 构造函数与析构函数的定义 三、实验基本原理 C+程序设计语言四、主要仪器设备及耗材PC微机DOS操作系统或 Windows 操作系统C+程序设计语言开发环境五、实验步骤(要求运行结果的屏幕截图,源程序电子打包提交)1.运行下面的程序,并说明运行结果为什么。#include class example public: example(int n) i=n; cout构造函数n; example() cout析构函数n; int get_i() return i; private: int i;int sqr_it(example o) cout调用sqr_it开始n; r
7、eturn ()*(); void main() example x(10); cout()endl; coutsqr_it(x)endl; cout调用sqr_it结束n;2. 建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。用类cylinder计算圆柱体的体积,并存储在一个double变量中。在类cylinder中包含一个成员函数vol(),用来显示每个cylinder对象的体积。六、实验数据及处理结果1.运行下面的程序,并说明运行结果为什么。#include class example public: example(int n)
8、 i=n; cout构造函数n; example() cout析构函数n; int get_i() return i; private: int i;int sqr_it(example o) cout调用sqr_it开始n; return ()*(); void main() example x(10); cout()endl; coutsqr_it(x)endl; cout调用sqr_it结束n;2. 建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。用类cylinder计算圆柱体的体积,并存储在一个double变量中。在类cylin
9、der中包含一个成员函数vol(),用来显示每个cylinder对象的体积。#include using namespace std;class cylinder double v; public: cylinder(double r, double h) v=*r*r)*h; cout圆柱体的半径r为:rn圆柱体的高度h为:hendl; void vol() cout圆柱体的体积v是:vendl; ;main ( ) double r,h; coutr; couth; cylinder obj(r,h); (); 七、思考讨论题或体会或对改进实验的建议八、参考资料C+语言程序设计学生用书 清
10、华大学出版社 郑莉等高级语言C+程序设计试验指导高等教育出版社 周玉龙 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2016-9-9 实验成绩: 一、实验项目名称 实验三. 数组、指针、字符串二、实验目的1熟悉C+中数组、指针和字符串的特点和应用。 三、实验基本原理 C+程序设计语言四、主要仪器设备及耗材PC微机DOS操作系统或 Windows 操作系统C+程序设计语言开发环境五、实验步骤(要求给出简单类图、运行结果的屏幕截图,源程序电子打包提交) 1构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元素的数组对象
11、,将qu初始化为15,将price初始化为qu的10倍。显示每个对象的qu*price值。2通过对象指针访问对象数组,使程序以相反的顺序显示对象数组的qu*price值.六、实验数据及处理结果1构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元素的数组对象,将qu初始化为15,将price初始化为qu的10倍。显示每个对象的qu*price值。#include using namespace std;class book int qu, price; public: book(int q) qu=q; price=10*q; int get_qu() return
12、qu; int get_price() return price; ;int main( ) book obj5=1,2,3,4,5; for(int i=0;i5;i+) cout数组对象i+1的qu*price值为:obji.get_qu()*obji.get_price()endl; 2通过对象指针访问对象数组,使程序以相反的顺序显示对象数组的qu*price值.#include using namespace std;class book int qu, price; public: book(int q) qu=q; price=10*q; int get_qu() return q
13、u; int get_price() return price; ;int main( ) book obj5=1,2,3,4,5; book *p; p=&obj4; for(int i=5;i0;i-) cout数组对象i的qu*price值为:get_qu()*p-get_price()endl; p-;七、思考讨论题或体会或对改进实验的建议八、参考资料C+语言程序设计学生用书 清华大学出版社 郑莉等 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2016-9-9 实验成绩: 一、实验项目名称 实验四. 继承与派生二、实验目的1 熟悉派
14、生类的声明。2. 派生类的构造函数与析构函数的定义。3. 继承的方式。 三、实验基本原理 C+程序设计语言四、主要仪器设备及耗材PC微机DOS操作系统或 Windows 操作系统C+程序设计语言开发环境五、实验步骤(要求给出简单类图、运行结果的屏幕截图,源程序电子打包提交)1.下面的程序包含了Time类和Date类的声明,要求设计一个Brithtime类,它继承了Time类和Date类,并且还有一项出生孩子的名字Childname,同时设计主程序显示一个小孩的出生时间和名字。#include #include class Time protected: int hours,minutes,se
15、conds; public: Time(int h, int m, int s) hours=h; minutes=m; seconds=s; virtual void display() couthours:minutes:secondsendl; ;class Date protected: int month,day,year; public: Date(int m, int d, int y) month=m; day=d; year=y; virtual void display() coutmonth/day/yearendl; ;2. 建立普通的基类buliding,用来存储一座
16、楼房的层数、房间数以及它的总平方米数。建立派生类house,继承building,并存储下面的内容:卧室与浴室的数量。另外,建立派生类office,继承building,并存储灭火器与电话的数目。六、实验数据及处理结果1.下面的程序包含了Time类和Date类的声明,要求设计一个Brithtime类,它继承了Time类和Date类,并且还有一项出生孩子的名字Childname,同时设计主程序显示一个小孩的出生时间和名字。#include #include using namespace std;class Time protected: int hours,minutes,seconds; p
17、ublic: Time(int h, int m, int s) hours=h; minutes=m; seconds=s; virtual void display() couthours:minutes:secondsendl; ;class Date protected: int month,day,year; public: Date(int m, int d, int y) month=m; day=d; year=y; virtual void display() coutmonth/day/yearendl; ;class Brithtime:public Time, publ
18、ic Date protected: char *Childname; public: Brithtime(int m, int d, int y, int h, int min, int s, char *p):Date(m,d,y),Time(h,min,s) Childname=new charstrlen(p)+1; strcpy(Childname,p); void display() cout姓名:Childnamen; Date:display(); Time:display(); ;main( ) int m, d, y, h, min, s; char p20; cout姓名
19、:; scanf(%s,&p); coutymd; couthmins; Brithtime ob(m,d,y,h,min,s,p); ();2. 建立普通的基类buliding,用来存储一座楼房的层数、房间数以及它的总平方米数。建立派生类house,继承building,并存储下面的内容:卧室与浴室的数量。另外,建立派生类office,继承building,并存储灭火器与电话的数目。#include using namespace std;class building protected: int fr; int r; double m; public: building(int a, in
20、t b, double x) fr=a; r=b; m=x; ;class house : public building private: int br; int dr; public: house(int a, int b, double x, int c, int d):building(a,b,x) br=c; dr=d; void show() cout 楼房层数 :frendl; cout 房间数 :rendl; cout 楼房总面积:mendl; cout 卧室数量 :brendl; cout 浴室数量 :drendl; ;class offic : public buildin
21、g private: int mr; int tr; public: offic(int a, int b, double x, int c, int d):building(a,b,x) mr=c; tr=d; void show() cout 楼房层数 :frendl; cout 房间数 :rendl; cout 楼房总面积:mendl; cout 灭火器数量:mrendl; cout 电话数量 :trendl; ;main() int fr;int r; double m; int br;int dr; int mr;int tr; cout fr; cout r; cout m; co
22、ut br; cout dr; cout mr; cout tr; cout endl; building ob1(fr,r,m); house ob2(fr,r,m,br,dr); offic ob3(fr,r,m,mr,tr); cout 住宅楼endl; (); cout n办公大楼endl; ();七、思考讨论题或体会或对改进实验的建议八、参考资料C+语言程序设计学生用书 清华大学出版社 郑莉等 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2016-9-9 实验成绩: 一、实验项目名称 实验五. 多态与模板二、实验目的1 熟悉函数(
23、成员函数)的重载。2. 熟悉运算符重载。3. 了解虚函数、纯虚函数和抽象类。4 函数模板与模板函数。55. 类模板和模板类。 三、实验基本原理 C+程序设计语言四、主要仪器设备及耗材PC微机DOS操作系统或 Windows 操作系统C+程序设计语言开发环境五、实验步骤(要求给出简单类图、运行结果的屏幕截图,源程序电子打包提交)1. 用成员函数重载运算符“+”和“-”,将两个二维数组相加和相减,要求第一个二维数组的值由构造函数设置,另一个二维数组的值由由键盘数入。2. 编写程序,计算汽车运行的时间,首先建立基类car,其中含有数据成员distance存储两点间的距离,假定距离以英里计算,速度为每
24、小时80英里,使用虚函数travel_time()计算并显示通过这段距离的时间。派生类kilometre中,假定距离以千米计算,速度为每小时120千米,使用函数travel_time()计算并显示通过这段距离的时间。3 写一个函数模板,求数组中的最大元素,并使得在函数调用时,数组的类型和返回类型可以是整数也可以是双精度类型。4. 建立类模板input,在调用构造函数时,完成以下工作:(1)提示用户输入;(2)让用户输入数据;(3)如果数据不在预定范围内,重新提示输入。六、实验数据及处理结果1. 用成员函数重载运算符“+”和“-”,将两个二维数组相加和相减,要求第一个二维数组的值由构造函数设置,
25、另一个二维数组的值由由键盘数入。#include using namespace std;class Tow_arr 建立类模板input,在调用构造函数时,完成以下工作:(1)提示用户输入;(2)让用户输入数据;(3)如果数据不在预定范围内,重新提示输入。#include#include using namespace std; template 异常处理二、实验目的理解异常处理的原理和过程掌握异常处理的基本方法 三、实验基本原理 C+程序设计语言四、主要仪器设备及耗材PC微机DOS操作系统或 Windows 操作系统C+程序设计语言开发环境五、实验步骤(要求给出简单类图、运行结果的屏幕截图
26、,源程序电子打包提交)设计一个包含异常处理的100以内的四则运算程序,异常情况包括除数为0、数据溢出、减法结果小于0等。六、实验数据及处理结果#include#includeint main() char a; float num1; float num2; float num3; printf(请输入运算公式(num1 运算符号 num2):); scanf(%f%c%f,&num1,&a,&num2); switch(a) case +: if(0=num1&num1=100) if(0=num2&num2=100) printf(%+%=%n, num1,num2,num1 + num2);