周凌云级C++实验报告模板.docx
- 文档编号:3812249
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:15
- 大小:55.32KB
周凌云级C++实验报告模板.docx
《周凌云级C++实验报告模板.docx》由会员分享,可在线阅读,更多相关《周凌云级C++实验报告模板.docx(15页珍藏版)》请在冰豆网上搜索。
周凌云级C++实验报告模板
院系:
计算机科学学院
专业:
软件工程
年级:
2012级
课程名称:
面向对象程序设计
学号:
2012213715
姓名:
丁梦婷
指导教师:
周凌云陈洋荣
2013年5月1日
年级
2012级
班号
1203
学号
2012213715
专业
软件工程
姓名
丁梦婷
实验名称
I/OStream应用、文件操作
实验
类型
设计型
综合型
创新型
√
实
验
目
的
或
要
求
1.练习使用集成开发环境,分析和改正源程序中的错误,并调试程序
2.熟练掌握I/OStream应用
3.掌握文件操作
实
验
原
理
(
算
法
流
程
图
或
者
含
注
释
的
源
代
码
)
题目:
写一个程序,用它计算一个文件的以下各项统计信息:
文件中的字符总数,非空白字符的总数和文件中的字母总数。
并将统计结果输出到屏幕和另一个文件。
源程序代码:
#include
#include
usingnamespacestd;
voidmain()
{
ifstreaminfile;
ofstreamoutfile;
infile.open("e:
\\in.txt");
outfile.open("e:
\\out.txt");
if(!
infile)
{
cout<<"openerror!
"< exit (1); } charch=''; intcntAll=0,cntChar=0,cntAlb=0; while(infile.get(ch)) { cntAll++;//字符总数 if(ch! ='') cntChar++;//非空白字符总数 if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')) cntAlb++;//字母总数 } //输出到文件 outfile<<"字符总数: "< outfile<<"非空白字符总数: "< outfile<<"字母总数: "< //输出到屏幕 cout<<"字符总数: "< cout<<"非空白字符总数: "< cout<<"字母总数: "< infile.close(); outfile.close(); } (写不完时,可另加附页。 ) 实 验 结 果 分 析 及 心 得 体 会 实验结果: 心得体会: 学会了如何组建工程,慢慢的了解C++与C的不同,也学会了使用文件里面的cin,cout与put,get的不同,掌握文件操作。 成 绩 评 定 教师签名: 年月日 年级 2012级 班号 1203 学号 2012213715 专业 软件工程 姓名 丁梦婷 实验名称 类与对象设计、友元函数与运算符重载 实验 类型 设计型 综合型 创新型 √ 实 验 目 的 或 要 求 1.学习类的定义,对象的声明 2.掌握友元函数的应用 3.学会运算符重载 实 验 原 理 ( 算 法 流 程 图 或 者 含 注 释 的 源 代 码 ) 题目: 编写复数类Complex,能实现两个复数的加(add)、减(minus)、乘(multiple)、除(divide)四则运算功能 源程序代码: #include usingnamespacestd; classComplex { private: doublereal; doubleimag; public: Complex(){real=0;imag=0;} Complex(doubler,doublei); voiddisplay(); Complexoperator+(Complex&c1); Complexoperator-(Complex&c1); Complexoperator*(Complex&c1); Complexoperator/(Complex&c1); }; Complex: : Complex(doubler,doublei) {real=r;imag=i;} ComplexComplex: : operator+(Complex&c1) { Complexc; c.real=real+c1.real; c.imag=imag+c1.imag; returnc; } ComplexComplex: : operator-(Complex&c1) { Complexc; c.real=real-c1.real; c.imag=imag-c1.imag; returnc; } 实 验 原 理 ( 算 法 流 程 图 或 者 含 注 释 的 源 代 码 ) ComplexComplex: : operator*(Complex&c1) { Complexc; c.real=real*c1.real-imag*c1.imag; c.imag=real*c1.imag+imag*c1.real; } ComplexComplex: : operator/(Complex&c1) { Complexc; c.real=(real*c1.real+imag*c1.imag)/(c1.real*c1.real+c1.imag*c1.imag); c.imag=(imag*c1.real-real*c1.imag)/(c1.real*c1.real+c1.imag*c1.imag); returnc; } voidComplex: : display() { cout<<"("< if(imag>0)cout<<"+"< elseif(imag<0)cout< elsecout<<")"< } intmain() { Complexc1(3,4),c2(5,8),c3,c4,c5,c6; c3=c1+c2; c4=c1-c2; c5=c1*c2; c6=c1/c2; c1.display(); c2.display(); c3.display(); c4.display(); c5.display(); c6.display(); return0; } (写不完时,可另加附页。 ) 实 验 结 果 分 析 及 心 得 体 会 实验结果: 心得体会: 通过此次实验,了解到了C++的封装性,定义类,有私有成员,和共有成员,以及友元函数的作用,应用运算符重载,解决了许多难题,使主函数部分非常简洁,了解到面向对象与面向过程的不同, 成 绩 评 定 教师签名: 年月日 年级 2012级 班号 1203 学号 2012213715 专业 软件工程 姓名 丁梦婷 实验名称 独立编译、标准string应用、vector应用 实验 类型 设计型 综合型 创新型 √ 实 验 目 的 或 要 求 1、理解独立编译。 2、掌握string应用、vector应用 实 验 原 理 ( 算 法 流 程 图 或 者 含 注 释 的 源 代 码 ) 题目: 为有理数定义一个类。 有理数表示成两个相除的整数,比如1/2,3/4,64/2等等(对于1/2这样的表达式,我们指的是普通的分数,不要把它们想像成在C++程序中造成整数除法的表达式)。 将有理数表示成int类型的两个值: 一个表示分子,一个表示分母。 将类命名为Rational。 先包括一个接受2个参数的构造函数,该构造函数可将一个对象的成员变量设为任何合法的值。 然后再包括一个接受单个int参数的构造函数,将这个单独的参数命名为whole_number,并定义构造函数,使对象初始化成有理数whole_number/1。 再包括一个默认构造函数,用它将对象初始化成0(也就是0/1)。 重载输入和输出操作符>>和<<。 数字以1/2,15/32,300/401这样的形式来输入和输出。 注意分子、分母可能包含减号,所以必须支持像-1/2,15/-32以及-300/-400这样的输入。 重载以下所有操作符,使它们能正确支持Rational类型: ==,<,<=,>,>=,+,-,*和/。 写一个测试程序来测试这个类。 源代码: #include"RationalTest.h" #include usingnamespacestd; classRational { private: intnumerator;//分子 intdenominator;//分母 public: Rational() { numerator=0; denominator=0; } ~Rational() { } Rational(constRational&rat) { numerator=rat.numerator; denominator=rat.denominator; } Rational(int_numerator,int_denominator) { numerator=_numerator; denominator=_denominator; } public: intGetNumerator() { returnthis->numerator; } voidSetNumerator(int_numerator) { this->numerator=_numerator; } intGetDenominator() { returnthis->denominator; } voidSetDenominator(int_denominator) { this->denominator=_denominator; } public: RationalAdd(constRational&rat) { Rationalresult; result.numerator=this->numerator*rat.denominator+this->denominator*rat.numerator; result.denominator=this->denominator*rat.denominator; if(result.denominator<0) { result.numerator=-result.numerator; result.denominator=-result.denominator; } returnresult; } RationalSub(constRational&rat) { Rationalresult; result.numerator=this->numerator*rat.denominator-this->denominator*rat.numerator; result.denominator=this->denominator*rat.denominator; if(result.denominator<0) { result.numerator=-result.numerator; result.denominator=-result.denominator; } returnresult; } RationalMul(constRational&rat) { Rationalresult; result.numerator=this->numerator*rat.numerator; result.denominator=this->denominator*rat.denominator; if(result.denominator<0) { result.numerator=-result.numerator; result.denominator=-result.denominator; } returnresult; } RationalDiv(constRational&rat) { Rationalresult; result.numerator=this->numerator*rat.denominator; result.denominator=rat.numerator*this->denominator; if(result.denominator<0) { result.numerator=-result.numerator; result.denominator=-result.denominator; } returnresult; } RationalNeg() { Rationalresult; if(this->denominator<0) { result.numerator=-this->numerator; result.denominator=-this->denominator; } else { return*this; } returnresult; } boolLess(constRational&rat) { return(this->numerator*rat.denominator)<(rat.numerator*this->denominator); } boolGreater(constRational&rat) { return! Less(rat); } boolEqual(constRational&rat) { return(this->numerator*rat.denominator)==(rat.numerator*this->denominator); } voidOutput() { cout<<"有理数: "< } voidInput() { cout<<"输入分子: "; cin>>this->numerator; cout<<"输入分母: "; cin>>this->denominator; } }; intmain() { Rationalr1,r2,r3,r4; r1.Input(); r1.Output(); r2.SetNumerator(6); r2.SetDenominator(-13); r2.Output(); r3.SetNumerator(-2); r3.SetDenominator(3); r3.Output(); r4=r1.Neg(); r4.Output(); boolb1; r4=r1.Add(r2); r4.Output(); r4=r1.Sub(r2); r4.Output(); r4=r1.Div(r2); r4.Output(); r4=r1.Mul(r2); r4.Output(); b1=r1.Less(r3); cout< b1=r1.Greater(r3); cout< b1=r1.Equal(r3); cout< getchar(); return0; } 实 验 结 果 分 析 及 心 得 体 会 结果: 心得体会: C++,又学了一种数据类型string类型,解决了字符数组问题,可以进行各种字符串处理,有自动扩容能力;向量的用法类似于数组,但是向量的长度是不固定的,它会自动扩容,可将向量视为数组。 成 绩 评 定 教师签名: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 凌云 C+ 实验 报告 模板