
C++
文章平均质量分 83
迂者-贺利坚
烟台大学计算机学院教师,坚持教育情怀,持续进行教学改革。和学生并肩,与不良学风作斗争,为IT菜鸟建跑道,追求快乐与激情的大学。著书《逆袭大学:传给IT学子的正能量》,帮助迷茫中的大学生。
展开
-
将时尚的互联网引入教学中来
在目前高校的教学工作中,有些同学迷恋网络,以致于影响了学习成绩。很多人将此归罪于网络,甚至有些学校做出大一新生不准购买计算机等的规定。实际上,所谓这种负面的迷恋网络,是指学生将很大一部分的时间用在了打网络游戏、看视频、聊天、经营空间等各种以娱乐为主的应用上。适度参加一些这样的活动,对学生来说是有益的。但是,过度使用只能造成各种各样的杯具。而如果将网络用在好的地方,不可否认其威力无比。 再细究原创 2011-12-19 18:04:07 · 4664 阅读 · 7 评论 -
汉字代表哪些数字?
看到陈同学做的一道题,手痒痒,也做了一份,凑个热闹。/*(编程题)下列乘法算式中:每个汉字代表1个数字(1~9)。相同的汉字代表相同的数字,不同的汉字代表不同的数字。 赛软件 × 比赛 ---------- = 软件比拼试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。【参考结果】465 * 14 = 6510*/#incl原创 2012-01-15 21:53:53 · 9751 阅读 · 0 评论 -
各种程序设计的范型
过程式程序设计确定你需要哪些过程;采用你能找到的最好的算法。模块程序设计确定你需要哪些模块;将程序分为一些模块,使数据隐藏于模块之中。面向对象程序设计确定你需要哪些类;为每一个类提供完整的一组操作;利用继承去明确地表示共性。通用型程序设计(范型编程)确定你需要哪些算法;将它们参数化,使它们能够对各种各样适当的类型和数据结构原创 2012-02-05 15:59:50 · 3086 阅读 · 0 评论 -
深入“自顶向下,逐步求精”——面向过程程序设计方法
程序设计初学者常常受困于不会想问题:“不知道让计算机解决这个问题该如何做”。其实,程序员的一个基本功是,能够将复杂的问题分解开来。学会分解任务,因超级大分为大的、中的、小的、超小的,直到能用很直接的方法解决。记住一个很管用的策略:自项向下,逐步求精。不管做何事,都拿这个策略套一套,程序能编好,其他事也都能做。 本讲的主要目标在于: (1)让你建立“自顶向下,逐步求精”的思维方式,你的大原创 2012-02-28 21:47:38 · 17226 阅读 · 1 评论 -
浅谈C++初学者学习者的自学
在大学中,自学能力是异常重要的。当然,这个自学,是在教师指导下的自学,是向完全真正自学的过渡。在终身学习的年代,自主学习是核心,具备自学的能力是基础。自学有充分的自由,简单地可以理解为爱学什么学什么,想怎么学就学什么。这里面也有技术问题,比如学习内容的选择,针对内容对学习方法的选择等。从这个角度讲,也不是完全的自由。在大学,可以有课外知识的自学,课程的学习也要重视在教师的指导下能够自己进行预习、拓原创 2012-02-29 14:50:17 · 4318 阅读 · 1 评论 -
一个求累加和程序的求解过程
【题目】求f=1-1/2!+1/3!-...+1/9!【本文结构】 看题目,有点难度(相对而言,熟悉编程后,这只是一个非常典型的问题)。将我带着大家把这个问题分解一下,由易到难解出来。 我们要经历的过程是: (一)求f=1+2+...+9【很简单的问题】 (二)求f=1-2+3-4+...+9【在(一)的基础上,学习如何一正一负地累加】 (三)求f=1-1原创 2012-02-29 09:32:02 · 12970 阅读 · 1 评论 -
C++网络习题课
看视频、例程的目的不是看过,目的是学会自己写程序,谨记! 为便于同学们学习,网络习题课按照谭浩强编著的《C++程序设计》(后面简称此书为“教材”)中知识点的编排,逐渐提出可以自行练习的题目。在相同类型的题目中,一般选择一个进行讲解,为读者解决其他题目提供参考。 通过模仿学习编程是个不错的办法。不过,模仿的不是写出几个语句来,而是要模仿解决问题用的思路。为了理清思路,用伪代码、流程图原创 2012-01-08 20:04:10 · 4681 阅读 · 2 评论 -
题解:求满足条件n=a!+b!+c!的所有三位数n并输出
【题目】求满足条件n=a!+b!+c!的所有三位数n并输出,要求用自定义函数实现求阶乘。【本讲结构】(一)题目讲解视频(二)相关习题(三)此类题目的共有特征及典型算法(四)视频中的代码(五)部分相关习题的参考例程【正文部分】(一)题目讲解视频(二)相关习题(带*的在后面有参考例程)若一个正整数n的所有小于n的因子之和等于n, 则称n为完全原创 2012-03-01 08:04:56 · 5792 阅读 · 0 评论 -
使用常对象——为共用数据加装一个名为const的玻璃罩
原创案例讲解——”玻璃罩const”系列的三篇文章:1. 使用常对象——为共用数据加装一个名为const的玻璃罩2. 常(const)+ 对象 + 指针:玻璃罩到底保护哪一个3. 对象更有用的玻璃罩——常引用 话题的引入:C++采取了不少有效的措施(如设private保护)以增加数据的安全性,但也可以在不同的场合通过不同的途径访问同一个数据对象。有时在无意之中的误操作原创 2012-03-23 08:55:54 · 5175 阅读 · 3 评论 -
第5周-任务3-长方柱类数组
【题目】编写基于对象的程序,求5个长方柱的体积和表面积。长方柱类的数据成员包括长(length)、宽(width)、高(heigth)等。另外:(1)需要定义长方柱类,5个长方柱采用一个对象数组表示;(2)前4个长方柱(即数组的前4个元素)要在定义数组时初始化,其中前3个直接给出参数初始化,第4、5个用默认构造函数初始化;然后第5个长方柱由键盘输入长、宽、高;(3)输出这5个长方柱的体原创 2012-03-19 22:44:05 · 3225 阅读 · 2 评论 -
第5周-任务2-分数类(拓展1)
【题目】C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。任务要求:完成下面类的设计,并在main()函数中自行定义对象,调用各成员函数,完成基本的测试。classCFraction{pr原创 2012-03-18 15:06:50 · 3513 阅读 · 2 评论 -
第5周-任务4-学生类数组
【题目】设计一个学生类,包括学号(num)和成绩(score)。建立一个对象数组,内放5个学生的数据,要求:(1)用指针指向数组首元素,输出第1、3、5个学生的信息;(2)设计一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。【参考解答】#include using namespace std; class Stud原创 2012-03-19 22:55:43 · 4233 阅读 · 11 评论 -
C++防灾——为指针成员分配专门的存储空间
在C++中,当类中有指针类型的数据成员时,必须注意在构造函数中,分配专门的存储单元,并将地址赋值给指针型数据成员。 这样做的目的在于,要保证指针指向的存储单元能够由类本身控制。 如果这种情形处理不好,将可能会造成灾难性的后果,尽管多数情况程序看上去执行还算正常(这种错误是真正可怕的错误)。 为了帮助读者理解,本文将从实例出发,展示不用这种处理的灾难性后果,同时给出正确处理的方法演原创 2012-04-24 12:40:33 · 5143 阅读 · 3 评论 -
何时需要自定义复制构造函数?
本文涉及对象的赋值和复制(也称为克隆)。必要时,先看谭浩强教材P291-295的相关内容或PPT,重温一下有关概念。 一、一般情况 先看一个例子://例程1#include using namespace std;class Complex{public: Complex(){real=0;imag=0;} Complex(double r,double i){r原创 2012-04-16 17:12:28 · 8444 阅读 · 7 评论 -
如何申请优快云博客?
这是一个最菜的问题,但是必要的。因为我是为IT菜鸟服务的,有的菜鸟在申请博客时真的会遇到困难,需要一个指导性的文本。 菜鸟们别感叹,谁不是从菜中过来的。菜过,然后不菜了。有人死不认菜,结果老是真的很菜。要菜的潇洒。 少闲话。申请优快云博客先到优快云的首页http://www.youkuaiyun.com。 点击右上角的“注册”链接,见如下页面,首先填写会员信息: 输入完整后,点击“注册”按钮,提示原创 2012-07-16 21:28:25 · 16712 阅读 · 8 评论 -
C++程序设计同步实践宝典——前言
【2012年8月7日补充:《C++程序设计入门同步实践宝典 》可以下载了】【再次早醒。脑子里盘算的是让写了一年的C++实验指导让更多人能够用上。标题党一次,就叫《C++程序设计同步实践宝典》。这几年写过的博文也有不少积累了,已经在编《贺利坚文集》,上册教育教学篇,下册学习指导篇。暑假完成这三册文集的编辑。哦,三本书,以前没有想过,先做个广告,开学前,免费“出版”,敬请关注。】《C++程序设计同步实原创 2012-07-16 19:57:40 · 8569 阅读 · 13 评论 -
《C++程序设计入门同步实践宝典 》可以下载了
《C++程序设计入门同步实践宝典》可以告一段落了。这是假期计划之外的事情,不小心又花了近二十天的时间,其他计划中的事情得一一落实了。将此版定为0.5版,以后还会有不小的改动。 下载地址:http://download.youkuaiyun.com/detail/sxhelijian/4482514 下载需要资源分5分,以对自己辛苦一番有所表示。常在优快云泡的同学,也应该分享些你的原创挣点积分了。缺少积分原创 2012-08-07 15:29:32 · 5095 阅读 · 31 评论 -
第5周-任务1-三角形类中的构造函数
【题目】设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化特别要求:为全面体会构造函数的各种写法,本任务要求提交多个版本的程序,体现出你已经掌握下列知识点:(1)使用带参数构造函数,即Triangle(float x, float y, float z),三边长在调用时由实参直接给出;(2)设计默认构造函数,即不指定参数时,默认各边长为1;(3)使用默认参数的构造函数,不给定实参时,默认原创 2012-03-18 11:55:30 · 4782 阅读 · 2 评论 -
第一个C++上机报告(示例)
上机内容:C++程序的编写和运行上机目的:掌握简单C++程序的编辑、编译、连接和运行的一般过程我的程序:/* * 程序的版权和版本声明部分: * Copyright (c) 2011, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:贺利坚 * 完成日期:2012 年 7 月 17 日 * 版 本 号:v1.0 *原创 2012-07-17 10:09:55 · 5260 阅读 · 13 评论 -
C++第10周项目2参考——分数的累加
课程首页地址:http://blog.youkuaiyun.com/sxhelijian/article/details/7910565【项目2-分数的累加】编程序,输出1/3-3/5+5/7-7/9…+19/21的结果提示:如果直接解决上面的问题有困难,可以设计一条“由易到难”的路线,逐渐解决其中要解决的问题,让自己的思路明朗起来。(1)1+2+...+20 ——这个应该会//用for循环完成,其他循环自原创 2012-10-31 18:16:32 · 5006 阅读 · 4 评论 -
C++第10周项目5扩展参考——在北京买房
课程首页地址:http://blog.youkuaiyun.com/sxhelijian/article/details/7910565【项目5扩展:在北京买房】现在北京有一套房子,价格200万,假设房价每年上涨10%,一个软件工程师每年固定能赚40万。如果他想买这套房子,不贷款,不涨工资,没有其他收入,每年不吃不喝不消费,那么他需要几年才能攒够钱买这套房子? 参考解答:#include using na原创 2012-10-31 20:15:04 · 4668 阅读 · 1 评论 -
C++第10周项目6参考——-打豆豆
课程首页地址:http://blog.youkuaiyun.com/sxhelijian/article/details/7910565【项目6-打豆豆】阅读并运行下面的程序“吃饭、睡觉、打豆豆”,体会形式上死循环,实际不“死”的技巧。在此基础上,改写程序并提交报告。程序中用了自定义函数(第4章内容)——老贺又疯了,拿这个来为难菜鸟(所幸的是,这样的程序看起来还不赖)。改写任务1:去除有关使用自定义函数的一切原创 2012-10-31 20:17:43 · 3941 阅读 · 0 评论 -
C++第10周项目3参考——乘法口诀表
课程首页地址:http://blog.youkuaiyun.com/sxhelijian/article/details/7910565【项目3:乘法口诀表】编程序,输出一个乘法口诀表,形如1x1=11x2=2 2x2=4 1x3=3 2x3=6 3x3=9……#include using namespace std;int main( ){ int i,j; cout<<" 我原创 2012-10-31 18:24:47 · 5041 阅读 · 1 评论 -
C++第10周项目3扩展参考——英尺到米的转换表
课程首页地址:http://blog.youkuaiyun.com/sxhelijian/article/details/7910565【项目3扩展(选做)】编程序生成一张从英尺到米的转换表(1米大约等于3.28英尺),以方便工厂里工人师傅使用。输出形式如下图所示,罗列了从0英尺到99英尺对应的米数,即第i行第j列的值vij代表i*10+j英尺对应的米数。例如,通过下图所示,我们可以方便地查到17英尺相当于5原创 2012-10-31 18:39:56 · 4674 阅读 · 1 评论 -
C++第10周项目4参考——完数
课程首页地址:http://blog.youkuaiyun.com/sxhelijian/article/details/7910565【项目4:输出完数】(课本p86第20题)一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数。编程找出1000以内的所有完数。提示:首先从2到1000构造循环控制变量为i的外层循环。每次循环中,利用内嵌的循原创 2012-10-31 18:46:36 · 4562 阅读 · 0 评论 -
C++第10周项目5参考——贪财的富翁
课程首页地址:http://blog.youkuaiyun.com/sxhelijian/article/details/7910565【项目5:贪财的富翁】一个百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,该计划如下:我每天给你十万元,而你第一天只需给我一分钱,第二天我仍给你十万元,你给我两分钱,第三天我仍给你十万元,你给我四分钱,....,你每天给我的钱是前一天的两倍,直到满一个月(30天),百万富原创 2012-10-31 20:09:54 · 4435 阅读 · 1 评论 -
C02-程序设计基础提高班(C++)第11周上机任务-运算符重载
第11周:阅读教材第10章(p314-346),掌握用运算符重载解决问题,完成第11周上机任务;(回到C02-程序设计基础提高班(C++)学习安排)【任务1】实现复数类中的运算符重载定义一个复数类重载运算符+、-、*、/,使之能用于复数的加减乘除。(1)方案一:请用类的成员函数完成运算符的重载;class Complex{public: Complex(){real=0;imag=0;}原创 2012-11-06 23:14:36 · 3254 阅读 · 0 评论 -
C02-程序设计基础提高班(C++)第12周上机任务-类的继承
第12周:阅读教材第11章(p347-394),主要内容是类的继承,完成第12周上机任务;(回到C02-程序设计基础提高班(C++)学习安排)【任务1】定义一个名为CPerson的类,有以下私有成员:姓名、身份证号、性别和年龄,成员函数:构造函数、析构函数、输出信息的函数。并在此基础上派生出CEmployee类,派生类CEmployee增加了两个新的数据成员,分别用于表示部门和薪水。要求派生类CE原创 2012-11-11 15:08:20 · 3490 阅读 · 0 评论 -
初学者遭遇离奇错误——求两点间的距离(C++)
有学生向我求助,他编了一个程序,设计一个“点”类,求出两点距离的程序。程序看着没有问题,却出了一大堆的错误。程序如下:#include #include using namespace std;class point{public: double x; double y;};double distance(point p1,point p2);int main(){ po原创 2013-04-27 17:03:14 · 12969 阅读 · 3 评论 -
C++字符数组越界问题的一个案例分析
我的学生yang1067155909给我来信,说的是C++第11周项目3 - CEmployee类继承自CPerson类中的一个细节:贺老师: 老师,m_szDepartment=new char[strlen(department)+1];为何需要+1呢?在测试里去掉+1后和这个效果一样啊,不太明白……求指教…… 学生,杨腾飞 我回答: 要给'\0'占个座。是用别人的地盘(越界的部分)保原创 2013-05-15 05:43:25 · 12624 阅读 · 6 评论 -
C++程序显示二进制文件“内容”
带领学生学二进制文件操作,要观察文件中的内容,用记事本不爽,二进制文件根本就不是记事的“业务范围” 用EditPlus的HexView可以看,如图: 在我当学生的时候,这个活计是用DOS下的外部命令Debug干的,如下图,进入DOS方式,转到你要显示文件的目录下,debug 文件名,接下来按图实施: 其实在学习了二进制文件操作后,将每一个文件都当作二制文件,以每16字节为一个读取单位原创 2013-06-23 06:11:07 · 8646 阅读 · 0 评论 -
C++第10周项目2扩展之2参考——迭代求和
课程首页地址:http://blog.youkuaiyun.com/sxhelijian/article/details/7910565【项目2扩展之2(选做)】计算下面的式子,不能使用求幂函数pow()式一:#include using namespace std;int main( ){ int i,m=1; //m表示2的幂,1为2的0次幂,与循环相符 double sum=0, s=1.原创 2012-10-31 18:22:43 · 3914 阅读 · 3 评论 -
对程序设计初学者谈程序的效率
【摘要】设计高效率的程序是个重要话题。限于基础,初学者往往不得要领。本文试图较通俗地传达算法设计和分析中的一些观点、方法。帮助学生树立算法的概念,注重将来算法理论的学习。在学习了循环以后,我们可以做程序,解决些大问题了。我想谈谈关于程序执行效率的问题。评价一个程序的标准中,第一是正确;第二是可读性好,以此使程序易于修改和维护;第三就是效率的问题了,要求程序运行要尽可能快,占用内存空原创 2011-11-01 15:08:11 · 5215 阅读 · 13 评论 -
ACM题目中输入数据的处理(C++版)
ACM题目中输入数据的处理(C语言版)见:http://blog.youkuaiyun.com/sxhelijian/article/details/8978794 ACM竞赛题目的输入数据常要求有多组,并且格式多种多样,这是初次登OJ平台的同学的一个障碍。实际上,这些格式可以归为固定的几种类型,本文介绍各种类型的处理方法,以帮助同学们克服这些障碍。 实际上,这些模式不仅是OJ平台上做题的需要。在平时的自原创 2013-05-27 10:42:58 · 32343 阅读 · 21 评论 -
C++文件操作初体验
【摘要】学习是可以基于需求的,其必要性超了另外一种观点:按课本的顺序学。本文介绍了在C++中使用文件的最基本的方法,并试图通过给出的练习,使C++初学者能够对实际项目中输入输出中使用更广泛的“文件”有所认识,并学会初步的操作。本文适合于仅掌握了一般数据类型与控制结构的读者。 你一定不满足程序处理完的数据,然后只在屏幕上显示一下的方式。如果处理的结果能够永久地保存下来多好! 你一定厌倦了要让计算原创 2012-10-30 09:34:02 · 5306 阅读 · 2 评论 -
VC++6.0调试工具使用初步
【摘要】程序设计初者学会IDE(集成开发环境)中提供的调试工具,是一件非常重要的事。本文在初学者有初步的程序设计体验(只需要掌握到控制结构)为前提,介绍了单步执行、断点设置及观察程序运行情况的方法,并配有练习的建议,方便读者的学习。 在编写程序中,尤其是完成一个工程的过程中,通过编译的程序往往也会存在错误(bug)。这种错误是运行错误和逻辑错误,比语法错误更隐蔽,更危险。 如何找出这些错误?在原创 2012-10-30 16:41:55 · 44372 阅读 · 7 评论 -
初探C++数组的size可以是变量
在教材中,关于数组的声明,格式要求是“类型标识符 数组名[常量表达式]”,是的数组的大小,数组的size,强调一定是变量。看过不少的书,都在强调一定要用常量,或者用成const定义的常变量,总之,在声明数组,分配存储空间的时候,size一定是确定的,并且保证以后再不改动。 在辅导学生时,他编的程序中,声明数组居然用变量作size,且错误不在此处。怎么可能?可这是事实。 用下面的简单示例说明,这原创 2013-11-26 21:38:00 · 11691 阅读 · 1 评论 -
CodeBlocks调试功能快捷教程
在程序设计中,单步调试能够跟踪程序的执行流程。跟踪过程中,还可以观察变量的变化,从而发现其中存在的问题。单步执行除了可以帮助我们发现设计的程序中存在的问题,对于初学者,还可以帮助我们理解语言的机制。 所以,对于初学者,掌握所用的集成开发环境的一般用法,是一件非常重要的事情。 由于其重要性,再引用中国的一句古话“工欲善其事,必先利其器”,单步调试就是程序设计者最重要的工具之一,这种工具的形态是软原创 2013-11-10 15:14:33 · 91856 阅读 · 68 评论 -
CodeBlocks中程序的多文件组织
一个程序只有一个main函数的时候过去了,我们有了自定义函数。一个程序只用一个文件的时候也要过去了。当一个程序中的函数多起来时(main函数只能有一个,自然是具有一定规模的项目中要有不少自定义函数),需要将这些函数分门别类地存储到不同的文件中去。这样组织的程序是易于管理和维护的。本文讲在CodeBlocks中如何进行程序的多文件组织。原创 2013-11-10 21:55:08 · 17673 阅读 · 1 评论 -
一个数组越界的C++程序
学生给我发了私信,一个程序运行了好久,在OJ就是提交不了。 题目是:Description输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。Input10个整数Output整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)Sample Input2 1 3 4 5 6 7 8 10 9Sample Ou原创 2013-11-27 09:59:41 · 5834 阅读 · 8 评论