烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
【课程支撑】我的 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之前传完。今天看得比较粗,很多没有写总结的,我数个数也就过去了;对留了言的,由感而发对上两句;有人提出疑问是必定要解答的,甚至代码中的问题可能还需要我调试一下才能发言。 在拳场上,我们有个规矩:当徒弟的,该怎么练就怎么练,时候到了,师傅自然就会指点。徒弟要主动练,要主动接近师傅。
函数式编程初探 (原文地址: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个长
【题目】C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。 任务要求:完成下面类的设计,并在main()函数中自行定义对象,调用各成员函数,完成基本的测试。 classCFraction
【题目】设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化 特别要求:为全面体会构造函数的各种写法,本任务要求提交多个版本的程序,体现出你已经掌握下列知识点:(1)使用带参数构造函数,即Triangle(float x, float y, float z),三边长在调用时由实参直接给出;(2)设计默认构造函数,即不指定参数时,默认各边长为1;(3)使用默认参数的构造函数,不给定实参时
原题目及解答见第4周-任务4-设计工资类(Salary): 【拓展1】使用salary[50]有限制,实际人数少浪费空间,人数多时无法完成任务。程序执行中先输入职工人数,然后利用教材P217所讲的动态分配内存的运算符new,开辟一个大小正好的连续空间,完成上面的工作(排序需要采用指针完成)。 【参考解答】 #include<iostream> using namesp
作为CSDN俱乐部的例行活动,今天由我为同学们讲新浪微博开发。原计划大一的继续在计算中心玩编程,高年级的听讲座,但据说大一的有意见,也就本周暂停编程比赛。 反思自己的思路,不管何种形式,不是要让同学们多见识一些吗?不是一直推荐“不要强调基础,能做就尽快做起来”的一种思维吗?每周五的活动尽可能变着点花样,而不是让大家感觉“苦逼”的日子从学校开始,这也是俱乐部活动长期健康进行的基础。
【边讲边演示——请点下面的视频链接】 【要点】 问题: CSDN的博文中插入代码,可以排版出很漂亮的效果,但是 处理不当,有时变得很难看 解决方案: 在集成开发环境(IDE)中编辑好后再往博客中放; 选用插入代码的工具(注意选择语言); 懂一些HTML,直接编辑“源代码”,处理意外的情况 <p>… </p> <br&g
【题目】阅读教材P255例8.4,注意到类中的数据成员可以是数组。设计一个工资类(Salary),其中的数据成员有:double型数组salary[50](实际人数可以少于50,固定取50可能造成空间浪费),整型值number表示的职工人数。在main函数中调用你自己设计好的成员函数完成下面的功能:(1)输入职工工资,工资保存到salary数组中,实际人数保存到number中(输入-1标志
【题目】设计一个“正整数”类,并通过一系列的成员函数对其性质进行做出判断或列出相关联的数值。下面给出类声明,请实现各成员函数。另外,模仿已经给出的main()函数,完成你所设计的各个成员函数的测试。 给出的程序段为: #include<iostream> using namespace std; class NaturalNumber {private: int n;