C++语言程序设计报告.docx
- 文档编号:6678045
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:85
- 大小:332.61KB
C++语言程序设计报告.docx
《C++语言程序设计报告.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计报告.docx(85页珍藏版)》请在冰豆网上搜索。
C++语言程序设计报告
四川师范大学计算机学院
实验报告册
院系名称:
计算机科学学院
课程名称:
C++语言程序设计
实验学期2013年至2014年第一学期
专业班级:
软件工程2012级4班
姓名:
邓小松学号:
2012110403
指导教师:
苏涵
实验最终成绩:
《面向对象程序设计》实验教学大纲
实验学时:
32实验个数:
13实验学分:
1
课程性质:
专业必修课适用专业:
软件工程计算机等
教材及参考书:
1.《C++语言程序设计习题与实验指导》,郑莉、傅仕星编著,北京:
华大学出版社,2004
2.《C++语言程序设计(第三版)》,郑莉、董渊编著,北京:
清华大学出版社,2005
大纲执笔人:
杨军大纲审定人:
刘芳
实验课的性质与任务
本课程实验大纲是面向计算机专业学生开设的《C++程序设计》实验课计划指导大纲,是依据《面向对象程序设计》课程教学计划指导大纲编制。
本课程主要讲述了利用C++进行程序设计的思想和方法,既有面向过程和面向对象的程序设计的理论知识,又包括极强的实践应用能力的培养。
本实验大纲力求结合该课程教学计划大纲的相应内容,由浅入深的指导学生了解和掌握如何利用C++程序设计语言进行程序设计,提高学生的动手能力,做到理论和实践相结合,培养学生理解,分析程序,编写,调试程序的能力,使之能把程序设计应用到今后的专业学习中。
实验课程目的与要求
实验目的:
通过本课程的学习,使学生掌握面向过程的程序设计思想和编程思路,初步掌握面向对象的程序设计思想,学会调试程序,能独立编写实用的小型程序。
实验要求:
学生应该自始至终贯彻课程中所介绍的程序设计风格,养成良好的编程习惯;
应独立完成所布置习题。
为保证尽量在统一安排的上机时间内编译运行通过程序,学生应事先设计好程序。
实验项目及内容提要
面向对象程序设计实验课程
序号
实验项目编号
实验名称
学时
必做
选做
学分数
实验类型
内容提要
基本操作
验证
综合
设计
1
一
VisualC++开发环境入门
2
√
√
熟悉VC++开发环境
2
二
C++简单程序设计
4
√
√
基本算法结构
3
三
函数的应用
2
√
√
函数设计、模板函数
4
四
类与对象
6
√
√
类的设计与使用
5
五
C++程序的结构
2
√
√
作用域与生存期,静态成员
6
六
数组、指针与字符串
4
√
√
三种常见编程元素的使用
7
七
继承与派生
6
√
√
派生类的设计与使用
8
八
多态性
2
√
√
运算符重载、动态多态
9
九
群体类和群体数据的组织
4
√
√
群体类的设计
10
十
泛型程序设计与C++标准模板库
2
√
√
STL库的使用
11
十一
流内库与输入、输出
2
√
√
常用输入输出方法
12
十二
异常处理
2
√
√
异常处理机制的设计
13
十三
Windows应用程序框架
2
√
√
VC开发Windows程序方法
实验内容安排:
实验报告
(1)
实验名称
VisualC++6.0开发环境应用入门
同组人姓名
实验性质
□基本操作●验证性
□综合性□设计性
实验日期
实验成绩
教师评价:
实验预习□实验操作□实验结果□实验报告□其它□
教师签名:
一、实验目的及要求
了解VisualC++6.0的特点,熟悉了解VisualC++6.0的开发环境,学习使用VisualC++6.0编写标准的C++控制台应用程序。
二、实验内容
使用VisualC++来建立一个非图形化的标准C++程序,编译、运行教材中的例3-3,用公式法求解PI的数值,并尝试利用其他方法求解并获得相同的结果。
π=16arctan(1/5)-4arctan(1/239)
arctan(x)=x-x³/3+x5/5-x7/7+…求π=?
三、主要设备及软件
PC机1台,VC6.0平台
四、实验流程、操作步骤或核心代码、算法片段
#include
usingnamespacestd;
intmain()
{
doublea,b;
doublearctan(doublex);
a=16.0*arctan(1/5.0);
b=4.0*arctan(1/239.0);
cout<<"PI="< } doublearctan(doublex) { inti; doubler,e,f,sqr; sqr=x*x; r=0; e=x; i=1; while(e/i>1e-15) { f=e/i; r=(i%4==1)? r+f: r-f; e=e*sqr; i+=2; } returnr; } 五、实验结果的分析与评价 该程序的公式中用到三角函数arctan,所以程序设计过程中在主函数外定义一个函数arctan(),其参数类型为double,返回值的类型也为double. 而在主函数内部调用arctan(). 其运行结果正确。 实验报告 (2) 实验名称 C++简单程序设计实验 同组人姓名 实验性质 □基本操作●验证性 □综合性□设计性 实验日期 实验成绩 教师评价: 实验预习□实验操作□实验结果□实验报告□其它□ 教师签名: 一、实验目的及要求 会编写简单的C++程序;复习基本数据类型变量和常量的应用;复习运算符与表达式的应用;复习结构化程序设计基本控制结构的应用;复习自定义数据类型的应用;练习使用简单的输入输出;观察头文件的作用;学会使用VC6.0开发环境中的debug调试功能;熟练程序设计中的技巧; 二、实验内容 1)给定一个字符变量输出其二进制形式。 例如chara=’a’;其二进制为01100001。 2)给定一个字符变量输出其二进制反转形式。 例如chara=’a’;其二进制为01100001,反转形式为10000110。 (提示: 使用位运算) 3)袋子里有红,黄,蓝,绿,黑五种不同颜色的球若干个,从中取出三个不同颜色的球,编程输出每种取法及统计不同取法的总数(提示: 使用枚举) 4)(选做)给定一个整型变量输出其二进制形式。 三、主要设备及软件 PC机1台,VC6.0平台 四、实验流程、操作步骤或核心代码、算法片段 //实验2.1 #include usingnamespacestd; voidmain() { cout<<"请输入一个字符: "< charch; inti; intnumber[8]; cin>>ch; for(i=0;i<=7;i++) { number[7-i]=ch%2; ch/=2; } cout<<"该字符的二进制是: "< for(i=0;i<=7;i++) cout< cout< } //实验2.2 #include usingnamespacestd; voidmain() { cout<<"请输入一个字符,我们将提供它的反转二进制形式: "< charch; intj; intnumber[8]; cin>>ch; for(j=0;j<=7;j++) { number[7-j]=ch%2; ch/=2; } cout<<"反转二进制形式为: "< for(j=7;j>=0;j--) cout< cout< } //实验2.3 #include usingnamespacestd; //建立枚举 enumcolor{red=0,yellow,blue,green,black}; //使取出来的数据是3个 boolisnum(inti) { intj=0; for(intk=0;k<6;k++) if(i>>k&1==1) j++; returnj==3? true: false; } //依次一个一个取数据,但不能重复 voidprintresult(inti) { for(intk=0;k<5;k++) { if(i>>k&1==1) switch(k) { casered: cout<<"red"; break; caseyellow: cout<<"yellow"; break; caseblue: cout<<"blue"; break; casegreen: cout<<"green"; break; caseblack: cout<<"black"; break; default: cout<<"error"; } } cout<<""< } //主函数 intmain() { intj=0; cout<<"可能的方案有: "< for(inti=0;i<=32;i++) { if(isnum(i)) { printresult(i); j++; } } cout<<"共有"< } //实验2.4 #include #include #defineCOUNT16 usingnamespacestd; voidmain() { intArray[COUNT]={0}; inticount=0; inti; cin>>i; intlogoNum=i; while(logoNum>1) { i=logoNum; logoNum=logoNum%2; Array[icount]=logoNum; logoNum=i/2; icount++; } if(logoNum==1) { Array[icount]=1; icount++; } else { Array[icount]=0; icount++; } for(intc=COUNT-1;c>=0;c--) { cout< } cout< } 五、实验结果的分析与评价 知识点在于对ASC码,将10进制转换成2进制,因此算法是除2取余。 反转就是在于倒序输出。 实验报告(3) 实验名称 函数的应用实验 同组人姓名 实验性质 □基本操作□验证性 □综合性●设计性 实验日期 实验成绩 教师评价: 实验预习□实验操作□实验结果□实验报告□其它□ 教师签名: 一、实验目的及要求 掌握函数的定义和调用方法;练习重载函数的使用;练习使用系统函数;学习使用VC++的debug调试功能,使用stepinto追踪到函数内部。 二、实验内容 1)用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。 编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。 写一个函数,能够接收身高、体重等数据,能够根据身高、体重检测身体状况,胖,瘦等。 三、主要设备及软件 PC机1台,VC6.0平台 四、实验流程、操作步骤或核心代码、算法片段 //实验3_1 #include usingnamespacestd; longfibonacci(longn); intmain() { longresult; longnumber; cout<<"Enteraninteger: "< cin>>number; result=fibonacci(number); cout<<"fibonacci(number)"<<"="< return0; } longfibonacci(longn) { if(n==0||n==1) { returnn; } else { returnfibonacci(n-1)+fibonacci(n-2); } } //实验3_2 #include usingnamespacestd; intMAX1(inta,intb) { if(a>=b) returna; else returnb; } intMAX1(inta,intb,intc) { if(a>=b) { if(a<=c) returnc; else returna; } else { if(b<=c) returnc; else returnb; } } doubleMAX1(doublea,doubleb) { if(a>=b) returna; else returnb; } doubleMAX1(doublea,doubleb,doublec) { if(a>=b) { if(a<=c) returnc; else returna; } else { if(b<=c) returnc; else returnb; } } intmain() { inta,b,c; doublei,j,k; cout<<"请输入两个整数: "< cin>>a>>b; cout<<"最大的数: "< cout<<"请输入三个整数: "< cin>>a>>b>>c; cout<<"最大的数是: "< cout<<"请输入两个小数: "< cin>>i>>j; cout<<"最大的数是: "< cout<<"请输入三个小数: "< cin>>i>>j>>k; cout<<"最大的数是: "< } //实验3_3 #include #include #include usingnamespacestd; #defineTRUE1 #defineFALSE0 typedefdoubleElem; typedefintStatus; //设置身高与体重的标准比例 StatusSetSize(Elem&size) { cin>>size; returnTRUE; } //判断胖瘦 StatusJudge(Elemsize,Elemhigh,Elemweight) { if(high/weight>size) { returnTRUE; } else { returnFALSE; } } voidmain() { ElemSize=0.0; Elemhigh,weight; cout<<"设置身高与体重的标准比例: "; SetSize(Size); do { cout<<"身高(厘米): "; cin>>high; cout<<"体重(千克): "; cin>>weight; if(high<=0||weight<=0) { cout<<"身高和体重输入不能为负数或0"< continue; } if(Judge(Size,high,weight)==FALSE) { cout<<"您的身材比较胖"< } else { cout<<"您的身材比较瘦"< } cout< }while(high! =-1); } 五、实验结果的分析与评价 重载函数可以重复定义,只要是类型,个数不一样 实验报告(4) 实验名称 类与对象实验 同组人姓名 实验性质 □基本操作□验证性 □综合性●设计性 实验日期 实验成绩 教师评价: 实验预习□实验操作□实验结果□实验报告□其它□ 教师签名: 一、实验目的及要求 掌握类的定义和使用;掌握类对象的声明;复习具有不同访问属性的成员的访问方式;观察构造函数和析构函数的执行过程;学习类组合使用方法;使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。 二、实验内容 1)定义一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。 其中,rank为枚举类型CPU__Rank定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。 观察构造函数和析构函数的调用顺序。 2)定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。 cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类,观察这些类的构造函数和析构函数的调用顺序。 3)定义一个Body类,拥有身高、体重等数据,能够根据身高、体重检测身体状况,要求设计相应的函数成员和构造函数。 4)(选做)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性: number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。 其中“出生日期”定义一个“日期”类内嵌子对象。 用成员函数实现对人员信息录入和显示。 要求包括: 构造函数和析构函数、拷贝构造函数、内联成员函数、类组合。 三、主要设备及软件 PC机1台,VC6.0平台 四、实验流程、操作步骤或核心代码、算法片段 //实验4_1 #include usingnamespacestd; enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7}; classCPU { public: CPU(); ~CPU(); voidrun(enumCPU_Rankr,intf,doublev); voidstop(); private: enumCPU_RankRank; intfrequency; doublevoltage; }; CPU: : CPU() { cout<<"调用构造函数"< } CPU: : ~CPU() { cout<<"调用析构函数"< } voidCPU: : run(enumCPU_Rankr,intf,doublev) { Rank=r; frequency=f; voltage=v; } voidCPU: : stop() { cout< cout< cout< } intmain() { enumCPU_Rankt=P1; CPUc; c.run(t,2,4.865); c.stop(); } //实验4_2 #include usingnamespacestd; classCPU { public: CPU() { cout<<"CPU构造函数被调用"< } ~CPU() { cout<<"CPU析构函数被调用"< } }; classRAM { public: RAM() { cout<<"RAM构造函数被调用"< } ~RAM() { cout<<"RAM析构函数被调用"< } }; classCDROM { public: CDROM() { cout<<"CDROM构造函数被调用"< } ~CDROM() { cout<<"CDROM析构函数被调用"< } }; classComputer { private: CPUcpu; RAMram; CDROMcdrom; public: Computer() { cout<<"Computer构造函数被调用"< } ~Computer() { cout<<"Computer析构函数被调用"< } voidrun(); voidstop(); }; intmain() { ComputerC; } //实验4_3 #include usingnamespacestd; classbody { public: body() { cout<<"构造函数被调用"< } ~body() { cout<<"析构函数被调用"< } voidset(doubleh,doublew) { HIGH=h; WEIGHT=w; } voidshow() {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 语言程序设计 报告