北邮c++小学期实验报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北邮c++小学期实验报告.docx

面向对象程序设计与实践c++实验总结报告 实验一 简单C++程序设计猜价格游戏编写C++程序完成以下功能:假定有一件商品,程序用随机数指定该商品的价格(1-1000的整数);提示用户猜价格,并输入:若用户猜的价格比商品价格高或低,对用户作出相应的提示;直到猜对为止,并给出提示。题目1-1总结:本题需要随机生成整数,我开始只使用rand(),即price=rand();来生成随机整数但这样只是一个伪随机函数,每一次重新打开程序生成的数都是一致的。因此加入时间随机种子:srand((unsigned)time(NULL))个人改进1:定义最大值最小值,在每次猜测数字时显示应猜的数字范围,作为提示。想到这个是因为有一次猜了很多遍都没猜到,一时突然忘记猜到什么范围,然后往前翻猜过的数字和大小感觉相当麻烦,所以就添上了应猜范围,方便再一次猜数。个人改进2:本来有一个判断条件判断生成的随机数是不是1~1000范围内,而后更进为随机生成整数对1000取余得到0~999整数,再+1得到1~1000的整数。实验二 类与对象矩形编写C++程序完成以下功能:定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;定义一个矩形类,其属性包括左上角和右下角两个点,提供计算面积的方法;创建一个矩形对象,提示用户输入矩形左上角和右下角的坐标;观察矩形对象以及Point类成员的构造函数与析构函数的调用;计算其面积,并输出。题目2-1总结:这一题是第一次用到class类的题目,开始并不明白为何要定义class,然后还需要区分public和private。而后来去图书馆借了书看到c++最大特色就是可以封装,定义私有属性和公有函数,以确保有些函数和参数不会被轻易访问到,降低错误率。class类在最起初定义时总是在class Rectangle那一行报错,经查书发现class定义最后一个大括号后有分号,开始并没有加上。起初在调用class中函数时用c调用的方式,没有跟面向的对象结合,导致编译出错,而后从distance()改为p.distance()就正确了。计算两点距离和面积运用开方和绝对值函数,前面若没有加头文件math.h则会报错。输入左上角右下角坐标时,若输入不当,可能会出现面积为负值的情况,所以加上绝对值函数保证面积非负。起初不知道构造函数和析构函数的定义和用法,经翻阅书籍和运行程序得知构造函数在创建对象时调用,可以有多个。而析构函数则在释放对象时调用,一般每一个class中都只有一个默认析构函数。且构造函数与类名称一致,析构函数则在类名称前加~。友元编写C++程序完成以下功能:定义一个Boat和Car两个类,他们都具有私用属性——重量;编写一个函数,计算两者的重量和。double TotalWeight(Boat b, Car c);题目2-3总结:友元函数:在两个对象中都使用到时,可以使用友元函数,并在类外单独定义。友元函数是允许在类外访问类中的任何成员的。开始在类外单独定义时跟类的成员函数单独定义混淆,写成了double Boat::TotalWeight(),导致编译错误,而后发现友元函数直接用函数名和函数返回值类型定义即可,不需要加上class类的名称。起初定义完class Boat和class Car后发现编译错误,在友元函数的声明那一行出错,而后发现在这行之前没有定义Car类,于是将其在最开头声明出来,通过。起初并没有加上boat和car类的构造函数和析构函数,可是经上网查阅,默认构造函数和析构函数可以系统自动生成,但析构函数只能删除成员指针,并不能释放指针指向的空间,所以若没有申请动态内存,析构函数可不写出,若申请,则需自行在析构函数中delete。实验三 数组与指针矩阵(一)编写C++程序完成以下功能:假定矩阵大小为4×5(整型数组表示);定义矩阵初始化函数,可以从cin中输入矩阵元素;定义矩阵输出函数,将矩阵格式化输出到cout;定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中;定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中;定义三个矩阵:A1、A2、A3;初始化A1、A2;计算并输出:A3 = A1加A2,A3 = A1减A2。题目3-1总结:起初在矩阵相加相减的赋值中所用语句为:m.matrix[i][j]=a.matrix[i][j]+b.matrix[i][j]但是运行程序发现m矩阵所有元素都是0。经单步调试,发现并没有赋值成功。经查阅书籍,了解到this指针是指向类的对象的地址,便改用this-matrix[i][j]作为赋值对象,最后程序正确。个人改进:将行数列数在文件开头用define定义,可以随时更改。经多次调试后,程序运行结果正确,但矩阵看起来非常混乱,因为并没有行列

文档评论(0)

xinshengwencai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档