- 博客(17)
- 资源 (14)
- 收藏
- 关注
原创 程序员面试宝典一
1、int i=i; ? 首先声明一个变量i,然后将变量i的值(未初始化)赋值给自己 2、下面代码的意义 void func(int x,int &count) { while(x) { count++; x=x&(x-1); //求将x转换为二进制后包含1的个数 } } 求一个整数转换为二进制之后包含多少个1 3、printf在VC6.0下是自
2012-07-30 11:09:06 2546
原创 大数乘法(加法)运算
1、直接进行整型大数之间的乘法很容易导致数据存储溢出,可以采用数组存储计算得到的每一位 #include #include int main() { int n; int a[100], k=0, i, j; //定义相关变量,数组 while(1) //自行判断决定循环执行次数 { if(n==0) break; printf("请
2012-07-30 10:37:58 2329
原创 运算符重载
1、赋值运算符= 2、等于运算符== 3、加法运算符+ 4、前向自加运算符++ 5、后向自加运算符++ 6、下标运算符[ ] 7、输入输出运算符> 8、转换运算符( ) 9、实例代码 #include #include #include using namespace std; class A; ostream& operator<<(ostream &out,A &
2012-07-28 23:10:57 482
原创 面向对象----类的继承
1、派生类对象的构造与析构 创建派生类对象的时候首先调用基类的构造函数初始化基类成员,随后才调用派生类构造函数 派生类对象的析构过程首先是调用派生类的析构函数,再调用基类的析构函数 2、多重继承 B、C都继承于A,而D继承于B和C 多重继承的两义性:当D的对象调用A中的成员时就会产生两义性(D-B-A还是D-C-A) 使用虚继承就可以消
2012-07-28 23:06:40 647
原创 面向对象----类基础知识
1、static和const变量 static变量是类的所有对象所共享的,他必须在类的外面定义和初始化,计算类的内存大小时不用考虑static变量 const变量只能在类的初始化函数列表中进行初始化 const static变量一般在类的外面定义和初始化 2、空类的大小是1 空类的大小是1,那是被编译器插进去的一个char ,使得这个class的不
2012-07-28 22:48:44 609
原创 指针数组与数组指针
1、指针数组与数组指针 int *p[10]; //一个包含10个int指针的数组 int (*p)[10]; //一个指向具有10个int的数组的指针 2、函数指针 int (*p)(int i); //定义一个函数指针 int func(int i){return i;} p=func;
2012-07-28 21:33:11 390
原创 指针和引用
1、引用注意事项 引用必须初始化 引用初始化指向一个对象之后就不能再指向别的对象 引用不能为空 返回引用的函数可以作为左值来计算 不能声明void类型的引用 int a=10; void &p=a; //error 不能声明引用数组 int a[10]; int p[10]=a //
2012-07-28 21:24:03 468
原创 栈----基本操作、进制转换和迷宫求解
//十进制数值M转换成m进制 void SysConvert(int N,int m) { while(N!=0) { push(p,N%m); //将余数进栈 N=N/m; } } 1、栈的基本操作 // lb.cpp : Defines the entry point for the console application. // #include "stdafx.
2012-07-28 15:01:42 873
原创 链表----增加删除节点、链表反转、链表合并
1、链表基本操作----(带头结点)链表创建、增加节点、删除节点、链表反转 // lb.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "stdlib.h" #include #include using namespace std; //定义链表的数据结
2012-07-28 11:42:10 2854
原创 编程珠玑第十三章----查找
1、顺序查找 int find1(int *array,int n,int val) { if (n<=0) { return -1; } for (int i=0;i<n;i++) { if (val==array[i]) { return i; } } return -1; } 2、二分查找 int find2(int *array,int n,i
2012-07-27 13:17:22 1120
原创 编程珠玑第十一章----排序
1、快速排序 原理:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。 void quickSort(int *a,int s,int t) //数组首地址a,数组起始位置s(初始值为0),结束位置t(初始值为n-1) { int i=s,j=t+1,temp,x=a[s]; do
2012-07-27 13:15:53 1341
原创 编程珠玑第九章
1、内存访问(连续内存访问与跨页面访问内存的区别) 注意在访问内存的时候,要注意内存的连续性,如果访问的内存不是连续的,那么程序的运行速度也会受到极大的影响 例如访问一个二维数组时,先访问行,再访问列,能够减少页面调度次数,同时cache命中率也相对高些。 2、递归调用宏时,需要小心,宏中的某个参数被调用了多次以致数值发生了变化 #define Ma
2012-07-27 12:54:46 738
原创 编程珠玑第八章
1、求一个整型数组中相邻子向量的最大和。 方法一:最直观的,也是最容易想到的,长度为n的数组,子向量个数为 n *(n+1)/ 2 ,找到和最大的子向量,复杂度为 O(n^2 ) int findMax(int *a,int n) //a为待查找数组,n为数组长度 { int max=0,sum=0; for (int i=0;i<n;i++) { sum=0; for (i
2012-07-27 12:23:18 1512
原创 编程珠玑第四章
1、二分查找代码 int find(int *a,int n,int key) //a为待查找数组,n为数组长度,key为待查找元素 { int begin=0,end=n-1,mid=0; while(begin<=end) { mid=(begin+end)/2; if(a[mid]==key) //相等,直接返回key在数组中的位置 retur
2012-07-27 10:53:10 720
原创 编程珠玑第三章
1、本书出版之时,美国的个人收入所得税分为5种不同的税率,其中最大的税率大约为40%.以前的情况则更为复杂,税率也更高。下面所示的程序文本采用25个if语句的合理方法来计算1978年的美国联邦所得税。税率序列为0.14, 0.15, 0.16, 0.17, 0.18.....。序列中此后的计算大于0.01.有何建议呢? if income tax = 0; else if inco
2012-07-27 10:31:58 1288
原创 编程珠玑第二章
1、给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中一32位整数。 1、在文件中至少存在这样一个数? 2、如果有足够的内存,如何处理? 3、如果内存不足,仅可以用文件来进行处理,如何处理? 答案: 1、32位整数,包括-2146473648~~2146473647,约42亿个整数,而文件中只有40亿个,必然有整数少了。 2、如果采用位数思想来存放,则32位
2012-07-20 18:12:04 1197
原创 编程珠玑第一章
1、1000w个整数(没有重复)进行排序,可用内存只有1M,怎么排序? 1000w *4 /(1024*1024)= 38.14 M ; 所以划分40个通道,每次读取25w个数据(需要不到1M内存),利用快速排序或者堆排序进行排序,然后写回到文件中; 对得到的40个排好序的文件两两进行归并排序,直到得到一个排好序的文件即可。 2、1000w个整数(
2012-07-20 17:53:39 1156 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人