自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(28)
  • 资源 (4)
  • 收藏
  • 关注

原创 C++primer plus第六版课后编程题答案7.5

输入一个整数,递归实现计算阶乘。#include <iostream>using namespace std;long Jiecheng(int );int main(){ cout<<"请输入一个整数:"<<endl; int number; while (cin>>number) { long result = Jiecheng(number); cout<<"阶乘 "<<number<<"! ="<<result<<endl; cout<<"请继续输入一个整数:"<

2015-12-28 11:37:26 120

原创 C++primer plus第六版课后编程题答案7.1

编写程序,不断要求用户输入两个数,直到其中一个为0。对于每个数,程序将使用一个函数计算他们的调和平均值,并将结果返回给main(),而后者将报错。

2015-12-28 11:12:17 123

原创 C++文件操作:读取文件字符数

打开文件,逐个字符读取该文件,直到文件末尾,然后指出该文件包含多少个字符。#include <iostream>#include <fstream>#include <string>using namespace std;int main(){ ifstream file; file.open("zs.txt"); if (!file.is_open())//is_open()判断前面是否调用了open(),打开成功返回1否则返回0 { cout<<"Could no

2015-12-28 09:53:27 1288

原创 C++文件操作:读取文件字符数

打开一个文件,逐个字符读取文件,直到文件末尾,然后指出该文件中包含多少个字符。#include #include #include using namespace std;int main(){ ifstream file; file.open("zs.txt"); if (!file.is_open())//is_open()判断前面是否调用了open(),打开成功

2015-12-28 09:50:20 1126

转载 C++之虚函数表

C++中的虚函数的实现一般是通过虚函数表(C++规范并没有规定具体用哪种方法,但大部分的编译器厂商都选择此方法)。类的虚函数表是一块连续的内存,每个内存单元中记录一个JMP指令的地址。注意的是,编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。类的每个虚成员占据虚函数表中的一行。如果类中有N个虚函数,那么其虚函数表将有N*4字节的大小。虚函数(Virtual Function)是通过一张虚函数表来实现的。简称为V-Table。在这个表中,主要是一个类的虚函数的地址表,这张表

2015-12-17 15:43:01 121

转载 C++之typedef用法详解

第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:char *pa, *pb;也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,typedef的

2015-12-11 14:07:18 128

转载 C++之 虚析构函数 的作用

在C++程序开发时,用作基类的类的析构函数一般要定义为虚函数,为什么要这样做呢?先看一个例子,代码如下:#include <iostream>using namespace std; class A //定义基类{public: //构造函数 A(){cout<<"A class is Constructed"<<endl;} //虚析构函数 virtual ~A(){cout<<"A class is deconstructed"<<endl;} //

2015-12-10 13:41:10 130

转载 C++之异常处理

引言异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题。而传统错误处理技术,检查到一个局部无法处理的问题时:1.终止程序(例如atol,atoi,输入NULL,会产生段错误,导致程序异常退出,如果没有core文件,找问题的人一定会发疯)2.返回一个表示错误的值(很多系统函数都是这样,例如malloc,内存不足,分配失败,返回NULL指针)3.返回一个合法值,让程序处于某种非法的状态(最坑爹的东西,有些第三方库真会这样)4.调用一个预先准备

2015-12-10 11:39:25 192

转载 C++之抽象类和接口的区别

抽象类和接口的区别: 1.接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什 么。比如,男人,女 人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人人可以吃东西,狗也可以吃东西, 你可以把“吃 东西”定义成一个接口,然后让这些类去实 现它.所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时 是生物和非生物),但 是可以实现多个接口(吃饭接口、走路接

2015-12-10 10:23:03 156

原创 C++之运算符、操作符重载

所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能。运算符也可以重载 ..运算符重载是对已有的运算符赋予多重含义... // 也就是说重载完之后,会根据我们定义的重载函数 自动调用最符合调用的方法使用...比如我们定义的类的重载运算符+. 当我们使用类的对象相加时,会自动调用我们定义的重载...而当我们使用内置的+法运算,比如 int b=5+3; 那么这是还是调用内置的+法运算进行处理 ..C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于

2015-12-09 11:21:35 195

转载 C++之 初始化列表的作用

与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。在C++中,struct和class的唯一区别是默认的访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示。struct foo{ string name ; int id ; foo(string s, int i):name(s), id(i){} ; // 初始化列表};构造函数的两个执行阶段构造函数的执行

2015-12-08 13:47:51 1756 1

转载 C++ 之Template

模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计。C++ 的标准库提供许多有用的函数大多结合了模板的观念,如STL以及IO Stream。函数模板在c++入门中,很多人会接触swap(int&, int&)这样的函数类似代码如下:void swap(int&a , int& b) { int temp = a; a = b; b = temp;}但是如果是要支持long,string,自定义class的swap函数,代码和

2015-12-08 10:32:10 144

转载 C++class总结

一、C++类的定义 C++中使用关键字 class 来定义类, 其基本形式如下:class 类名{public://公共的行为或属性 private://公共的行为或属性}; 示例: 定义一个点(Point)类, 具有以下属性和方法: ■ 属性: x坐标, y坐标 ■ 方法: 1.设置x,y的坐标值; 2.输出坐标的信息。实现代码:class Point{public: void setPoint(int x, int y);

2015-12-08 10:29:55 285

转载 C++重载解析

1何时应用重载解析重载解析可以看作是函数调用整个完整处理过程的一部分。首先,如果是通过指针或者成员函数指针来进行调用,就不会进行重载解析:因为究竟调用哪一个是在运行期由指针(实际所指的对象)来决定的。另外,类似函数的宏不能被重载,因此就不会进行重载解析。2简化过的重载解析重载解析通过比较调用实参和候选参数的匹配程度,来对所有的可行候选函数进行分级,对于匹配级别高的候选函数,它每个参数的匹配程度都不能低于匹配级别低的候选函数的相应参数的匹配程度。下面的例子说明了这一点:[cpp] view plain

2015-12-08 09:38:16 135

转载 浅谈C++中指针和引用的区别

指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法。1.指针和引用的定义和性质区别:(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如:int a=1;int *p=&a;int a=1;int &b=a;上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址。而下面2句定义了一个整形

2015-12-07 14:40:16 129

原创 C++之inline和define

内联函数和宏的区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可以象调用函数一样来调用内联函数,而不必担心会产生于处理宏的一些问题。  我们可以用Inline来定义内联函数,不过,任何在类的说明部分定义的函数都会被自动的认为是内联函数。  下面我们来介绍一下内联函数的用法。  内联函数必须是和函数体申明在一起,才有效。像这样的申明Inline Tablefun

2015-12-07 14:28:19 193

转载 getline()函数详解

学习C++的同学可能都会遇到一个getline()函数,譬如在C++premer中,标准string类型第二小节就是“用getline读取整行文本”。书上给的程序如下:int main(){ string line: while(getline(cin,line)) cout<<line<<endl; return 0;}大家会发现运行时怎么也跳不出循环,甚至会发生各种莫名其妙的错误。这是为什么呢?在这里我给大家做一个详细的讲解。首先给大家介绍一下getline()

2015-12-07 13:59:03 241

原创 C++管理数据内存方式

C++有三种管理数据内存的方式:自动存储、静态存储、动态存储。自动存储 函数内部定义的常量使用自动存储空间,存储在栈中,称为自动变量(局部变量)。即所属的函数被调用时自动产生。静态存储 静态存储是整个程序执行期间都存在的存储方式。使变量成为静态变量的方式有2种: 函数外定义,static定义动态存储 new,delete管理内存池(堆)。

2015-12-04 17:02:41 143

原创 ::在C++中是什么意思

::在C++中是什么意思::是运算符中等级最高的,它分为三种:1)global scope(全局作用域符),用法(::name)2)class scope(类作用域符),用法(class::name)3)namespace scope(命名空间作用域符),用法(namespace::name)他们都是左关联(left-associativity)他们的作用都是为了更明确的调用你想要的变量,如在程序中的某一处你想调用全局变量a,那么就写成::a,如果想调用class A中的成员变量a,那么就写成

2015-12-04 16:15:44 684

转载 C++ 输入函数getline(cin,str) 与cin.getline(str,int)区别

cin.getline()函数是处理数组字符串的,其原型为cin.getline(char * , int),第一个参数为一个char指针,第二个参数为数组字符串长度。getline(cin,str)函数是处理string类的函数。第二个参数为string类型的变量。实例:#include <iostream>#include <string>using namespace std;const int SIZE=20;int main(){string str;cout<<"strin

2015-12-04 11:08:05 337

原创 Java中JDK、JRE和JVM的联系与区别

JDK(java development kit)又称J2SDK,是Java开发工具包。是整个Java的核心。提供了Java的开发环境(javac等)和运行环境(JVM和核心类库)。JDK的安装目录下有六个文件夹,其中,真正在运行java程序时起作用的是四个文件夹:bin:javac.exe编译器include:Java和jvm交互用的头文件lib:类库jre:运行环境JRE(Java runtime environment)java运行环境。包括java虚拟机(JVM)、Java平

2015-11-25 11:08:09 130

转载 Eclipse代码补全

代码补全具体操作如下:1. 点击Windows- >Preferences- >General- >Keys .2. 在列出的快捷键列表中查找到:word competion,把它的快捷键alt + /改成其它的快捷键(怎么改,先把此快捷键删除,点右边的按钮 "remove binding ", 再选中binding文本框,输入你想要的快捷键)。3. 在列出的快捷键列表中查找到:content assist,把它的快捷键ctrl +space改成我们想的的alt+ /即可了。

2015-11-24 23:00:11 320

原创 java特性

纯面向对象语言简单性 语法规则与C++类似。 java比C++更简洁易懂。使用接口取代C++的多重继承,取消了指针(程序员看不到,内部进行了封装),垃圾自动回收。 提供了丰富的类库和API文档及第三方开发包,JDK开源了,可以分析项目的源代码提高编程水平。面向对象Java不能在类外面定义单独的数据和函数。Java最外部的数据和元素是对象,所有元素都要通过类和对象来访问。分布性包括:操作分布,数据分布。Java可以凭借URL对象访问网络对象,访问方式和访问本地系统

2015-11-24 21:33:48 119

原创 测试用例设计原则

测试需要讲究效率,但是如何有效的进行测试呢?答案:良好的测试用例测试用例尽可能的找出软件错误本类用例中最佳的选择不过与复杂,也不过与简单不是冗余的等价类与边界值如果两个测试的预期结果相同,则是等价的。等价类:测试同一内容包含同样的输入变量导致程序进行类似的操作影响力相同的输出变量要么让程序执行错误处理,要么都不让如何寻找等价类有效等价类和无效等价类查找无效输入的等价类以图表形式组织分类查找数值范围查找等价类分组的成员分析程序对列表与菜单的反馈查找必须相等

2015-11-24 19:57:06 117

原创 如何做好软件测试

测试工程师基本素质首先,最最重要的是要对测试工作有兴趣:测试工作很多时候是很枯燥的,只有热爱测试工作才能更好地做好测试,才能坚持下去。这是结合自己实习经历切身的体会。与开发人员相比,不但需要一技之长,还需要如操作系统、数据库、网络等方面的知识。尽管不能精通所有知识,但要做好测试工作,要尽可能学习更多与测试相关的知识。

2015-11-23 12:12:12 139

原创 大话数据结构之堆排序

堆排序思想:将待排序的序列构造成一个大顶堆。整个序列的最大值就是堆顶的根节点。将它移走(就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素中的次大值。如此反复执行,便能得到一个有序序列。堆排序的时间复杂度:O(nlogn)

2015-11-22 17:04:05 204

原创 大话数据结构之归并排序

归并排序思想:假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两合并,得到[n/2]个长度为2或1 的有序子序列;再两两合并,。。。。。。如此重复,直到得到一个长度为n的有序序列为止,也称为2路归并排序。归并排序的时间复杂度:O(nlogn)

2015-11-22 16:56:59 305

原创 大话数据结构之快速排序

快速排序的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到真个序列有序的目的。快速排序的时间复杂度:O(nlogn)

2015-11-21 22:34:20 412

Git教程By廖雪峰

Git的使用入门教程,短时间快速入门。在网上也看了很多资料,觉得还是廖雪峰的教程浅显易懂!

2015-12-18

虚拟机安装ubuntu_11.10

windows下安装ubuntu的教程,教新手快速安装虚拟机环境。

2015-09-22

python学习笔记

python学习笔记(中文版),适合初学者。精简实用。

2015-09-22

CUDA在win7下的编程环境搭建

CUDA 4.0+win7旗舰版32位 编程环境构建

2013-11-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除