烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
贺老师的教学链接 本课讲解 共用数据的保护的问题#include <iostream> using namespace std; class Test { private: int x, y; public: Test(int a, int b) { x=a; y=b; } void Printxy(v
返回:贺老师课程教学链接 【项目1-体验常成员函数】设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等。在设计中,由于求距离、求对称点等操作对原对象不能造成任何改变,所以,将这些函数设计为常成员函数是合适的,能够避免数据成员被无意更改。 class CPoint { private: double x; // 横坐标 double y; // 纵坐标 pu
返回:贺老师课程教学链接 本周再补充三个和指针有关的阅读程序,进一步掌握指针工作的原理。友情提醒:画出内存,让程序的分析,在理性、有序中完成。如果有时间的变化,博客中加个自己画的图。可以在上机时通过单步执行,进一步和你在人脑中运行程序的过程进行对照。(1) 阅读程序,写出程序的运行结果并理解 #include <iostream> using namespace std;
贺老师的教学链接 本课讲解 内幕: 每个对象有个自己的this指针 #include <iostream> using namespace std; class Time { public: void set_time(int,int,int); void show_time(); private: int hour; int minute;
贺老师的教学链接 本课讲解 示例:使用指向对象数据成员的指针 #include <iostream> using namespace std; class Time { public: Time(int,int,int); void get_time( ); private: int hour,minute,sec; }; Time::Time(int
贺老师的教学链接 本课讲解 对象数组应用实例 #include <iostream> using namespace std; class Box { public: Box(int h=10,int w=12,int len=15): height(h),width(w),length(len) { } int volume( ); private:
贺老师的教学链接 本课讲解 析构函数应用实例方案1 const int N =500; class Salary { public: Salary(int); void input( ); void show( ); ~Salary(); private: double salarys[N]; int number; //实际人数 }; 方案
贺老师的教学链接 本课讲解 析构函数示例 #include<string> #include<iostream> using namespace std; class Student { public: Student(int n,string nam,char s) { num=n; name=nam;
贺老师的教学链接 本课讲解 使用默认参数的构造函数 #include <iostream> using namespace std; class Time { public: Time( ); Time(int h,int m=0,int s=0); void show_time( ); private: int hour; int mi
贺老师的教学链接 本课讲解 默认构造函数(default constructor) class Time { public: Time( ); void show_time(); private: int hour; int minute; int sec; }; Time::Time( ) { hour=0;
贺老师的教学链接 本课讲解 用构造函数初始化对象 #include <iostream> using namespace std; class Time { public: Time( ) { hour=0; minute=0; sec=0; } void set_time( ); void
返回:贺老师课程教学链接 【项目4-指向学生类的指针】设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set、get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索)。在main函数中,要做到: 建立一个对象数组,通过初始化,设置5个学生的数据,要求: 用指针指向数组首元素,输出第1、3、5个学生的信
返回:贺老师课程教学链接 【项目3-用对象数组操作长方柱类】编写基于对象的程序,求5个长方柱的体积和表面积。长方柱类Bulk的数据成员包括长(length)、宽(width)、高(heigth)等。对照已经给出的代码,要做的工作及要求有: 需要你定义长方柱类,代码中已经给出由5个长方柱对象构成的对象数组b; B数组中的前3个对象b[0]、b[1]、b[2]直接参数初始了,需要定义构造函数
【项目-分数类的雏形】 C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数,再如分数。我们可以自定义类支持这些数据类型。 本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为运算符重载等积累些感性认识。 分数类的声明为: class CFraction { private: int nume; // 分子 in
返回:贺老师课程教学链接 【项目1-三角形类的构造函数】 设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化,可以由下面的类声明开始,需要自己实现相关的成员函数,以及增加要求的构造函数 class Triangle { public: double perimeter();//计算三角形的周长 double area();//计算并返回三角形的面积 vo
返回:贺老师课程教学链接 【项目1-三角形类的构造函数】 设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化,可以由下面的类声明开始,需要自己实现相关的成员函数,以及增加要求的构造函数 class Triangle { public: double perimeter();//计算三角形的周长 double area();//计算并返回三角形的面积 voi
返回:贺老师课程教学链接 请写出下面程序的运行结果,再和计算机运行的结果对照。无论对错,再想一想。 #include <iostream> using namespace std; class A { int a , b ; public : A( ) { a=b=0; cout <<"a="<<a
下面的代码,是一位同学为《初识对象》中的项目3时间类写的。但错误有点诡异,他在QQ群中求助。 #include <iostream> using namespace std; class Time { public: void set_time(); void show_time(); void add_sec(int); void add_min
返回:贺老师课程教学链接 【项目5 - 数组作数据成员】阅读教材P255例8.4,注意到类中的数据成员可以是数组。设计一个工资类(Salary),其中类的数据成员如下: class Salary { private: double salarys[50]; //多人的工资 int number; //实际人数 };要设计的成员函数有: void set_salarys( )
返回:贺老师课程教学链接 【项目4 - 考了语文数学的学生】下面提供了类Stu的数据成员定义,和用于测试的main函数,参考如图的运行结果,完成类的定义,并用多文件形式组织程序 #include<iostream> using namespace std; class Stu { private: string name; //学生姓名 float chinese
返回:贺老师课程教学链接 【项目3 - 程序的多文件组织】利用多文件组织,重新实现项目2。其中,整个项目包括3个文件: 主文件: main.cpp,用于定义main()函数 头文件: triangle.h,头文件,声明类,定义内置成员函数 类定义文件: triangle.cpp,用于定义类Triangle中其他成员函数 注意,将3个set函数和3个get函数设计成内置成员函数,其他函数不作
返回:贺老师课程教学链接 【项目2 - 三角形类2】程序功能同项目1,main()函数如下,请重新定义Triangle类,其中逻辑特别简单的set和get成员函数,要处理为内置成员函数,直接在类内定义。 int main() { Triangle tri1; //定义三角形类的一个实例(对象) double x,y,z; cout<<"请输入三角形的三边:
返回:贺老师课程教学链接 【项目1 - 三角形类1】下面设计一个三角形类,请给出各成员函数的定义 #include<iostream> #include<Cmath> using namespace std; class Triangle { public: void setABC(double x, double y, double z);//置三边的值,注意
返回:贺老师课程教学链接 【项目1 - 三角形类1】下面设计一个三角形类,请给出各成员函数的定义 #include<iostream> #include<Cmath> using namespace std; class Triangle { public: void setABC(double x, double y, double z);//置三边的值,注意要
返回:贺老师课程教学链接 按照封装与信息隐藏的原则,除非特别需要,类中的数据成员需要设置为私有。由此带来的问题是,在类外如何访问这些私有成员?下面4段程序概括了常用的方法。请仔细阅读下面的程序,在阅读过程中,画出对象、变量在内存中的表示图,写出这些程序的运行结果(包括变量的变化过程及程序的最终输出),达到彻底理解这些机制的目标。 (1)通过公共函数为私有成员赋值class Test {
贺老师的教学链接 本课讲解 1、一个程序,一个源文件的做法 #include<iostream> #include<cstring> using namespace std; class Student { private: char Name[20]; //学生姓名 double Chinese; //语文成绩 double Math; /
【来信】 贺老师,您好: 我是一名(某985高校)的计算机专业学生,现在是大一下学期。报志愿的时候感觉这个计算机专业前景很好并且自己也喜爱编程,于是就选择了计算机专业。接近一年以来,我在学习的过程中遇到了很多的非知识性的困惑,您的著作《逆袭大学》和博客上的文章我都认认真真的看过,在这个过程中我的许多疑惑都得到了解答,非常感谢您这种乐于助人的老师。 有一个关于大学专业学习方向的疑惑,我思
【来信} 贺老师: 您好,我是……大学软件工程专业大二学生,自从在CSDN看到您的贴子后,就想给您写封信,但又想先拜读你的 逆袭大学,所以迟迟没有动笔。如今已读了大半,虽没想象中的幽默,但内容深刻。从中找到了自身存在的问题,为以后的学习指明了方向。今天,将我的疑惑整理了一下,给您写下这封信,希望得到您的指点。 以下是我的疑惑: 1、关于论文,我希望在本科期间发表几篇沦文,这样无
返回:贺老师课程教学链接 项目要求 【项目4:血型统计】黑猫警长在犯罪现场发现了一些血迹,现已经委托检验机构确定了血型,需要统计各种血型的样本数目。输入:血型序列(A/B/O/C,C代表AB型血,输入以X结束)输出:各种血型的数量输入样例:ABCAOCOAOOBX输出样例:A:3 B:2 O:4 AB:2 [参考解答] #include<stdio.h> int mai
返回:贺老师课程教学链接 项目要求 【项目3:消除多余的空格】从键盘上的输入一句话,直到按回车键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格。例如,输入:I am a teacher.,输出I am a teacher. [参考解答]#include <stdio.h> int main( ) { char c
返回:贺老师课程教学链接 项目要求 【项目2:转着圈加密】为使电文保密,往往按一定规律将电文转换成密码,收报人再按约定的规律将其译回原文。加密办法,如图所示,每一个字母的密文是其后第4个字母,若超出了字母的范围,将A看作为Z的下一个字母,将a看作是z的下一个字线,依次顺延。如″Wonderful!″转换为″Asrhivjyp!″。输入一行字符,要求输出其相应的密码。 [参考解答] #
返回:贺老师课程教学链接 项目要求 【项目1:M$pszi$y是嘛意思?】小明让同学传纸条给小丽,纸条上写着M$pszi$y。小丽接到会心一笑,大家却不知所云。他们俩的花招瞒不过老师,给你一个程序,输入M$pszi$y,输出的,就是小明的真实意思!老师真坏!下面,该你运行程序了,明白这样的处理方式后,扩展完成后面的两项工作: #include <stdio.h> int ma
返回:贺老师课程教学链接 项目要求 【项目4:贪财的富翁】一个百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,该计划如下:我每天给你十万元,而你第一天只需给我一分钱,第二天我仍给你十万元,你给我两分钱,第三天我仍给你十万元,你给我四分钱,....,你每天给我的钱是前一天的两倍,直到满一个月(30天),百万富翁很高兴,欣然接受了这个契约。请编程序,通过计算说明,这个换钱计划对百万富翁是
返回:贺老师课程教学链接 项目要求 【项目3:Bessel函数】Bessel函数Jn(X)有以下的递推关系: 编写程序,利用递推关系,由任意的n和x≠0求Jn(X)。 [参考解答] #include <stdio.h> #include <math.h> int main( ) { double jn, j0, j1, x; int n, i;
返回:贺老师课程教学链接 项目要求 【项目2:反弹的皮球】一球从的100米高度自由落下,每次落地后反跳回原来高度的一半,再落下,求它在第十次落地时,共经过多少米?第十次反弹多高?请在下面的代码基础上补充完整。#include <stdio.h> int main( ) { float sn=100.0,hn=sn/2; int n; for (n=2;
返回:贺老师课程教学链接 项目要求 【项目1:另类求和】求 Sn=a+aa+aaa+...+aa...a之值,其中 a是一个数字。例如2+22+222+2222( 此时a=2,n=4),a和n均由键盘输入。请在下面的代码基础上补充完整。 #include <stdio.h> int main( ) { int a,n,count=1,Sn=0,Tn=0; p
返回:贺老师课程教学链接 项目要求 【项目2:麻烦的累加涨功夫】计算(1) (2)关注效率,要求用单重循环完成,第一个式子的计算不能用求幂函数pow() [参考解答](1) #include <stdio.h> int main( ) { int i,m=1; //m表示2的幂,1为2的0次幂,与循环相符 double sum=0, s=1.0; /
返回:贺老师课程教学链接 项目要求 【项目3:输出这样的整数】输出1000以内能被3整除且个位数为6的所有整数。请在下面代码的基础上完成程序: #include <stdio.h> int main( ) { int i, j; for (i=0; _________; i++) // (1) { j=i*10+6;
返回:贺老师课程教学链接 项目要求 【项目4:多数中的最大】编程序,输入10个整数,找出最大数。请在下面代码的基础上完成程序:#include <stdio.h> int main( ) { int k,x,max; scanf("%d", &x); max=______; // (1) for(k=2;
返回:贺老师课程教学链接 项目要求 【项目2:求阶乘】输入n,求 n! 并输出[参考解答] #include <stdio.h> int main( ) { int n,i,fact=1; printf("Please input n:"); scanf("%d", &n); for(i=1;i<=n;i++) fact=fact*i; print
返回:贺老师课程教学链接 项目要求 【项目1:利用循环求和】求1000以内所有偶数的和要求:请编出3个程序来,分别用三种循环语句完成,注意体会各种循环语句的执行过程及语法特点。[参考解答] //用for循环完成 #include <stdio.h> int main( ) { int sum=0,i; for(i=2; i<=1000; i+=2)
返回:贺老师课程教学链接 项目要求 (1)要输出的是:代码:#include <stdio.h> int main( ) { int i,j,n=6; for(i=n;i>=1;--i) //一共要输出n行 { //输出第i行 for(j=1; j<=2*i-1; +
返回:贺老师课程教学链接 项目要求 要输出的星号图是: 将一个图,看作为6行,完成了第一级的分解,提到的算法框架为: i=1; While(i<=6) //需要输出6行 { 输出第i行; 换行; ++i; } 对于“输出第i行”的任务,可以进行细化:先输出若干空格(多少个空格?第1行0个,第2行1个,第3行2……第6行5个); 再输出若
返回:贺老师课程教学链接 【项目1:M$pszi$y是嘛意思?】小明让同学传纸条给小丽,纸条上写着M$pszi$y。小丽接到会心一笑,大家却不知所云。他们俩的花招瞒不过老师,给你一个程序,输入M$pszi$y,输出的,就是小明的真实意思!老师真坏!下面,该你运行程序了,明白这样的处理方式后,扩展完成后面的两项工作: #include <stdio.h> int main() {
返回:贺老师课程教学链接 【项目1:另类求和】求 Sn=a+aa+aaa+...+aa...a之值,其中 a是一个数字。例如2+22+222+2222( 此时a=2,n=4),a和n均由键盘输入。请在下面的代码基础上补充完整。 #include <stdio.h> int main( ) { int a,n,count=1,Sn=0,Tn=0; printf("请
返回:贺老师课程教学链接 【项目1:分数的累加】编程序,输出1/3-3/5+5/7-7/9…+19/21的结果提示:如果直接解决上面的问题有困难,可以设计一条“由易到难”的路线,逐渐解决其中要解决的问题,让自己的思路明朗起来。(1)1+2+...+20 ——这个应该会(2)1+1/2+1/3+…+1/20 ——分数的累加,注意两个整型相除,商也为整型,而显然求和结果应该是小数(3)1/2
返回:贺老师课程教学链接 写出下面程序运行的结果。(1) #include <stdio.h> int main( ) { int i,m=1; for(i=5; i>=1; i--) { m=(m+1)*2; printf("m=%d\n",m); } return 0; } (2)#include
返回:贺老师课程教学链接 【项目1:利用循环求和】求1000以内所有偶数的和要求:请编出3个程序来,分别用三种循环语句完成,注意体会各种循环语句的执行过程及语法特点。[参考解答]【项目2:求阶乘】输入n,求 n! 并输出[参考解答] 【项目3:输出这样的整数】输出1000以内能被3整除且个位数为6的所有整数。请在下面代码的基础上完成程序: #include <stdio.h> i
返回:贺老师课程教学链接 读程序,写出运行结果,并与计算机运行的结果进行对照(1) #include <stdio.h> int main( ) { char c1,c2; for(c1='0',c2='9'; c1<c2; c1++,c2--) printf("%c%c", c1, c2); printf("\n");
返回:贺老师课程教学链接 编写程序,输出如下的星号图[(3)详解] [全解链接]