烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
【题目】写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形)、Rectangle(矩形)、Triangle(三角形)。用如下的mian()函数,求出定义的几个几何体的面积和。int main() { Circle c1(12.6),c2(4.9); //建立Circle类对象c1,c2,参数为圆半径 Rectangle r1(4.5,8.4),r2(5.
【题目】阅读下面的程序 (任务1.1)请写出程序的执行结果,并在上机时对照理解class Vehicle { public: void run() const { cout << "run a vehicle. "<<endl; } //(2) run()为虚函数 }; class Car: public Vehicle { public: void
【题目】下面给出了基类Animal和main()函数。 (任务2.1)根据main()函数给出的注释提示,设计出相关的各个类。 (任务2.2)显然,Animal设计为抽象类更合适,Animal不需要能够实例化,是专门作基类使用的。改造程序,使Animal设计为抽象类,这时main()函数中p =newAnimal();将出错,将此行删除。 (任务2.3)每一个Animal的派生类都有
学期过半,通过期中测验,让同学们检验一下阶段学习的效果。 共半小时的题,强度与期末考试差不多,总体感觉还不错。平时学扎实了,复习一下,将各种语法、机制搞清楚,拿个好分数不在话下。也有些同学不熟练,需要开始在意了,考试是一方面,重要的是,真正掌握知识。 期中测验可以看书及一切参考资料,实际上关键还是自己脑子里的东西。程序设计的基本功是在脑子里的。因为在机房完成,有同学用上了百
【摘要】本文以C++菜菜鸟(只需要学习了C++数据类型和控制结构即可)为目标读者,用求解一元二次方程作为实例,展示窗口式程序的开发过程,获得初步体验。写作目的包括:(1)让学生通过模仿,开发出类似风格的窗口程序;(2)以此为起点,课外通过案例教程等参考资料,学习开发更多的功能实用的程序;(3)体会到程序设计能力的核心并不在界面,从而能潜心提高程序设计的基本功和认真学习计算机科学的基础理论。 【
最大的感受是,一个五一春假,不少同学的状态似乎下滑。这也正常,我也在从综合症中恢复。下半学期开始了,我们要更加刻苦,为能力提高,顺便更有那个考试,还有,可恶的老贺,要加一次期中测验。 本周的任务中,开摩托比较好玩。理解继承中的一些问题本就不该是难题,经过任务,总体感觉同学们是掌握了。让同学纠结的求直线与圆的交点提醒我们:现在是运用以前掌握知识解决问题的时候了,温故而知新,圣人说得很对。
【课程支撑】我的 C++程序设计课程教学材料 要完成的任务详见第12周-任务2-双肩挑干部。题目要求 分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求: (1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。 (2)在Teacher类中还包含数据成员title(职称),在Cadr
【题目】点类与圆类(1)先建立一个Point(点)类,包含数据成员x,y(坐标点);(2)以Point为基类,派生出一个Circle(圆)类,增加数据成员(半径),基类的成员表示圆心;(3)编写上述两类中的构造、析构函数及必要的输入输出函数(4)定义友元函数int locate,判断点p在圆c上、圆c内或圆c外,返回值<0圆内,==0圆上,>0 圆外;(5)重载关系运算符(6种)运
【题目】(教材P394习题9)分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求: (1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。 (2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据
看到了@pennydada转的微博:(@pennydada是我博士学习期间的同班同学,超级聪明的南方女孩。):@实用小百科 : 【美国人带孩子的17个绝招】一网友在美国生了2个孩子,生育前后参加培训,她的家庭医生让其受益匪浅,两个宝宝在婴儿时乖巧得家里像没有小婴儿。回国后看到好友被小宝宝折磨得精疲力竭,便将妈妈经写下来。 没有孩子的男男女女也可以看一看,个人认为学到的不仅是育儿
在C++中,当类中有指针类型的数据成员时,必须注意在构造函数中,分配专门的存储单元,并将地址赋值给指针型数据成员。 这样做的目的在于,要保证指针指向的存储单元能够由类本身控制。 如果这种情形处理不好,将可能会造成灾难性的后果,尽管多数情况程序看上去执行还算正常(这种错误是真正可怕的错误)。 为了帮助读者理解,本文将从实例出发,展示不用这种处理的灾难性后果,同时给出正确
【题目】 (1)先建立一个Point(点)类,包含数据成员x,y(坐标点); (2)以Point为基类,派生出一个Circle(圆)类,增加数据成员(半径); (3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员(高)。 要求编写程序,设计出各类中基本的成员函数(包括构造函数、析构函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运算符
【题目】定义一个名为CPerson的类,有以下私有成员:姓名、身份证号、性别和年龄,成员函数:构造函数、析构函数、输出信息的函数。并在此基础上派生出CEmployee类,派生类CEmployee增加了两个新的数据成员,分别用于表示部门和薪水。要求派生类CEmployee的构造函数显示调用基类CPerson的构造函数,并为派生类CEmployee定义析构函数,定义输出信息的函数。 给定的程
【题目】在下面一段类的定义中,需要填充的函数由注释内容给出了功能 填空完成后的程序如下: #include<iostream> #include<Cmath> using namespace std; class Point //定义坐标点类 { public: double x,y; //点的横坐标和纵坐标 Point(){x=0;y=0;} P
【题目】阅读程序,先分析程序的执行结果,在上机时运行程序进行对照,再通过单步执行跟踪程序的运行,达到理解基类、派生类中构造函数、析构函数执行过程的目的。 程序如下: #include <iostream> using namespace std; class Part //部件类 { public: Part(); Part(int i); ~
今天看完同学博客比较早,看空间的动态,同学们还在继续上传。从中午开始,不断地有同学上线,赶在19:00之前传完。今天看得比较粗,很多没有写总结的,我数个数也就过去了;对留了言的,由感而发对上两句;有人提出疑问是必定要解答的,甚至代码中的问题可能还需要我调试一下才能发言。 在拳场上,我们有个规矩:当徒弟的,该怎么练就怎么练,时候到了,师傅自然就会指点。徒弟要主动练,要主动接近师傅。
不少同学正在为暑假投入开发实践做着准备,做移动应用,利用开放平台是个热点。凭着自已的一些感觉,也借助百度,列出了下面的清单。由于见识所限,姑且称为小全,欢迎读者留言补充。也凭着自己的感觉,大概进行了分类。在现在各大公司业务不断交叉的今天,这个分类也只是个大概。 平台 新浪云平台(SAE)http://sae.sina.com.cn/ Google App Engine h
函数式编程初探 (原文地址:http://blog.jobbole.com/17228/) 04月 11, 2012 at 9:50 am by 齐哲 Tags: Erlang, 函数式编程, 编程语言 诞生50多年之后,函数式编程(functional programming)开始获得越来越多的关注。 不仅最古老的函数式语言Li
【题目】设计一元一次方程类,求形如ax+b=0的方程的解。 例如:输入3x-8=0时,输出的方程的解为x=2.66667; 再如:输入5s+18=0时,输出的方程的解为s=-3.6; 给出部分代码如下: #include "iostream" using namespace std; class CEquation { private: double a; // 未知
【题目】建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。 给出的代码部分如下: class Douary {public: Douary(int m, int n);//构造函数:用于建立动态数组存放m行n列的二维数组(矩阵)元素,并将该数组元素初始化为0 ~Douary(); //析构函数:用于释放动态
【题目】接第8周任务3,定义分数类中<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。 【参考解答】 #include <iostream> using namespace std; class CFraction { private: int nume; // 分子 int deno; /
【题目】接第8周任务2,定义Time类中的<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。 【参考解答】 #include <iostream> using namespace std; class CTime { private: unsigned short int hour; // 时
【题目】接第8周任务1,定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。 【参考解答】 #include <iostream> using namespace std; class Complex { public: Complex(){real=0;imag=0;} Co
在《对象更有用的玻璃罩——常引用》一文中,介绍了对象作为函数的参数时,推荐使用引用的形式。并且,如果实际参数的值不允许改变时,声明为常引用更佳。 在《第8周-任务1-方案3-复数类中运算符重载(与实数运算)》中,又讨论了一个问题,结论是:在类似复数加法运算符重载这样的函数,形式参数用作为常引用最佳,如: friend Complex operator + (const
本文涉及对象的赋值和复制(也称为克隆)。必要时,先看谭浩强教材P291-295的相关内容或PPT,重温一下有关概念。 一、一般情况 先看一个例子: //例程1 #include <iostream> using namespace std; class Complex { public: Complex(){real=0;imag=0;} Comple
学院一直鼓励学生参加各种专业技能比赛,也鼓励教师参与到对和种大赛的指导中。前几年我一直没有参与,去年有三组同学找到我担任指导教师,但很惭愧,没有取得一点成绩。反思其中的原因,一是自己的指导的投稿有限,二是有限的指导意见学生没有落实。 说到竞赛,那就应该是当作一场战斗去打的。参加竞赛是为了提升能力,那就一定得有所改变。反思去年,在前期和学生见面还是比较勤快的,但在学生的前期准备一直
【知识总结】 运算符的重载实质上就是为某一要用的运算符赋予一定的功能,使其实现自己要实现的运算。运算符的重载可读性强! 在实现友元函数时括号内忘了该怎么正确书写,最后出了好多错误啊!不过我感觉它出的值,下次就记住了,不会再犯这样的错误了! 在编写此程序时,要善于利用已实现的运算符功能,此外,要善于利用this指针。 在编写过程中要善于撞错,会有利于自己以后少出错! 为什么在比较大小
【题目】在任务3的基础上拓展。分数类中的对象可以和整型数进行四则运算,且运算符合交换律。例如:CFraction a(1,3),b; int i=2; 可以完成b=a+i;。同样,可以完成i+a, 45+a, a*27, 5/a等各种运算。 参考:第8周-任务3-实现分数类中的运算符重载 【参考解答】——逐一写出来,需要的是耐心 #include <iostream>
【题目】实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。class CFraction { private: int nume; // 分子 int deno; // 分母 public: //构造函数及运算符重载的函数声明 }; //重载函数的实现及用于测试的main()函数 【参考解答】 #include <i
【题目】实现Time类中的运算符重载 下面是给出的参考代码 #include <iostream> using namespace std; class CTime { private: unsigned short int hour; // 时 unsigned short int minute; // 分 unsigned short int se
接:第8周-任务1-方案2-复数类中运算符重载(非成员函数实现) 本文在方案2的基础上,扩展+、-、*、/运算符的功能,使之能与double型数据进行运算。设Complex c; double d; c?d和d?c的结果为“将d视为实部为d的复数同c运算”的结果(其中?为+、-、*、/之一)。另外,再定义一目运算符 -,-c相当于0-c。 【讲解视频】 【参考解答
接:第8周-任务1-方案1-复数类中运算符重载(成员函数实现) 本文用方案二求解:用类的友元函数,而不是成员函数,完成上面提及的运算符的重载; 【讲解视频】 【参考解答】 #include <iostream> using namespace std; class Complex { public: Complex(){real=0;imag=0;}
【题目】实现复数类中的运算符重载:定义一个复数类重载运算符+、-、*、/,使之能用于复数的加减乘除。 方案一:请用类的成员函数完成运算符的重载;class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex operator+(Compl
【关于友元函数】 friend函数使两个“人”之间的关系更加密切。。。 通过这个题目让我学会了友元函数与成员函数以及外部普通函数的区别, 但是友元函数也要谨慎使用。 慎交友。 两个好朋友也不是无限制的,一般不定义友元类,而只是定义几个友元函数,避免产生混乱 论亲缘关系的远近,成员函数》友元函数》一般函数【精辟!】 友元函数太好了,不是成员函数却可以随便访问别人的家,但是也不是无拘无
【预备】阅读P314的例10.1。 #include <iostream> using namespace std; class Complex { public: Complex( ){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex complex_add(Co
【预备工作:给出一个示例】 //例:使用成员函数、友元函数和一般函数的区别 #include <iostream> using namespace std; class Time {public: Time(int h,int m,ints):hour(h),minute(m),sec(s){} void display1(); //成员函数声明
【题目】含有静态数据成员和成员函数的Time类:类中所有的对象共有的数据 class Time { public: Time(int=0,int=0,int=0); void show_time( );//根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm voidadd_seconds(int);
这周开始,同学们在提交报告之余写的总结、随笔逐渐多了,其中不乏妙笔。摘录出来,配上老贺的一些评论及感言,作为师生更大范围的交互,共同享受进步的愉悦。 学习及其方法篇: 我决定每天在做完C++作业的同时,额外的抽出至少半小时的时间编写C++程序,以弥补自己在上个学期漏下的知识点,希望自己能坚守住自己的诺言。【很好的计划。】 上节课听讲不太好···没全听明白···百度了一下错误才
【题目】将任务4(第6周-任务4-用点类作成员的三角形类)中的的解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。 【要点】对多个文件一个项目的组织方法的一般原则是:(1)若干个功能相近的类的声明放在一个头文件中;(2)每个类的成员函数分别放在一个.cpp文件中;(3)如果有main(
【题目】设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。 提示:(1)这个问题需要用到两个类,顶点类参照任务3中的CPoint类;(2)三角形类参考下面CTriangle类的声明;(3)充分利用CPoint类中已有的代码实现;(4)关于三条边的处理,可以增加三个私有属性,在初始化时求出来备用,也可以在需要时计算得到。 class
【题目】设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等 enum SymmetricStyle { axisx,axisy,point};//分别表示按x轴, y轴, 原点对称 class CPoint {private: double x; // 横坐标 double y; // 纵坐标 public: CPoint(double x
【题目】程序填空:按要求将缺少的代码填进去。 a. 用指针访问对象 class A { private: int a; public: A() {a=0;} ___(1)___{} //定义构造函数,用参数aa初始化数据成员a }; main() { ___(2)___; //定义类A的指针对象p ___(3)__; //用p指向动态对象并初始化
【题目】下面的程序存在编译错误。有两种方法可以修改,请给出这两种修改方案,在报告中说明你倾向于用哪一种?为什么?处理此类问题的原则是什么? class C {private: int x; public: C(int x){this->x= x;} int getX(){return x;} }; void main() { const C c
原创案例讲解——”玻璃罩const”系列的三篇文章: 1. 使用常对象——为共用数据加装一个名为const的玻璃罩 2. 常(const)+ 对象 + 指针:玻璃罩到底保护哪一个 3. 对象更有用的玻璃罩——常引用 本文讲在基于对象的程序设计中,函数中传递参数使用更广泛的技术,利用引用及常引用的话题。 先从引用的作用开始谈起。 一、引用用在参数传递中的优势:带回修改值及节省开
原创案例讲解——”玻璃罩const”系列的三篇文章: 1. 使用常对象——为共用数据加装一个名为const的玻璃罩 2. 常(const)+ 对象 + 指针:玻璃罩到底保护哪一个 3. 对象更有用的玻璃罩——常引用 在上一篇文章《使用常对象——为共用数据加装一个名为const的玻璃罩》中,利用案例讨论了运用常对象,常成员函数、常数据成员及其用法。const这个玻璃罩让数据只能看,不能改,
原创案例讲解——”玻璃罩const”系列的三篇文章: 1. 使用常对象——为共用数据加装一个名为const的玻璃罩 2. 常(const)+ 对象 + 指针:玻璃罩到底保护哪一个 3. 对象更有用的玻璃罩——常引用 话题的引入:C++采取了不少有效的措施(如设private保护)以增加数据的安全性,但也可以在不同的场合通过不同的途径访问同一个数据对象。有时在无意之中的误操作
毕业班一位女同学,考研失利。找工作时,连续两次都只经过了一轮,感到倍受打击。慌得她妈妈给我打来电话,请我和她谈谈,帮她一下。这是一位性格内向,成绩优秀,动手能力也不错的同学。对考研的失利,她无话可说;而找工作不顺,诸多原因,她很自责,也不满意想象到的性别歧视。 交谈中,她表示将不会考虑再考研的事,接下来要全力准备就业了。我建议她可以出去参加培训,因为象她这种类型的同学,在培训中应该是
看学生的任务完成情况,随手做些评论,关于程序本身的,鼓励的,批评的,都有。学生的有些话挺有意思,自己的应对也自然而出,于是想顺手摘出来成了此文。 需要指出的是,不少同学仍不习惯于写些总结。由写总结而受益的同学已经不在少数,调通了一个程序,用自己的话将其中的原理,自己对所遇问题的解决,由解题带来的喜悦表达出来,何等快意的事情。这对积累知识以及增强自信发挥着不可或缺的意义,是以博文
【题目】设计一个学生类,包括学号(num)和成绩(score)。建立一个对象数组,内放5个学生的数据,要求: (1)用指针指向数组首元素,输出第1、3、5个学生的信息; (2)设计一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。 【参考解答】 #include <iostream> using namespace
【题目】编写基于对象的程序,求5个长方柱的体积和表面积。长方柱类的数据成员包括长(length)、宽(width)、高(heigth)等。另外: (1)需要定义长方柱类,5个长方柱采用一个对象数组表示; (2)前4个长方柱(即数组的前4个元素)要在定义数组时初始化,其中前3个直接给出参数初始化,第4、5个用默认构造函数初始化;然后第5个长方柱由键盘输入长、宽、高; (3)输出这5个长