1。注意位段用法和大头序和小头序
^- j" }1 [3 M5 C' k% A3 G
! i1 m$ F5 V; S; g" l! Y9 e+ L U2。字节对起问题
6 P) Z+ s+ K, G! Y' T
, [" i4 e4 y6 |3.全局变量的描述# W z6 v& w) f) f- E
5 l9 S, q$ V6 E+ b. k
' N% n) E( ^' E' V9 j
1.2叉树的遍历,前序,中序和后序。给一个2叉树你要能写出按上述遍历的序列。
" O$ n2 \' j8 G6 ]$ I2.指针的长度,sizeof(char*) = 1; sizeof(int*) = 4等;
$ ~9 z, S, D4 E1 v2 I+ o6 N比如会考int* a = 0x0000 0001; a+4 = ?
7 I7 X+ `- W9 i7 r9 }- a3.2维数组a[1][2]用指针怎么表示?*(*(a+1)+2);
: X! k9 ]+ f6 i: t) g4.指针问题,什么函数指针,返回指针类型的函数,常指针,指向常量的指针,数组指针,指向一维数组的指针。
0 S# j- x5 b, \2 h$ A# n; j5.指针和数组的区别。
' b- f9 M- z5 W4 K! xchar a[] = "Hi, pig!"; X4 s2 a5 m$ F. [ l/ @
char *p = "Hi, pig!";
; u' Y2 v* I( X2 K1 z0 n: u
6 t, a. V7 d/ Z: k. w* A改错题:6 }; v: ]& n3 a8 Q; O
1.strcpy注意字符串长度,不要产生内存越界问题。
3 x3 E7 Y+ g# d9 A/ X7 u$ W2.高质量c++上那些内存分配的改错题。
; d7 t$ x5 I- I0 d+ d4 M( a. U3.unsigned char a;; k C7 f* J" t9 t. |2 b
for(a = 0; a < 500; a++)' e, X0 M2 H1 K' w$ q' Q: G9 m
;( [# u3 @7 u# f1 S/ U% ]
之类注意死循环的改错题;' M7 l& ^ G* E) {# @. N( b) a
4.静态变量的可重入问题% d! u, g% u: M: g0 Q6 O
5.宏的问题。
2 p* T6 f$ c8 X4 f3 I' Q比如要求a+1的平方:
0 L: |1 |0 |: I/ i7 @8 F* n#define A_1(m) ((m)*(m))9 ~2 ~3 }4 ^5 g! A4 ?# {
int a = 6;1 p6 v2 m$ }% w3 Q) R+ |
int val = A_1(a++);
8 k, Y" D! w0 g% N* f" e ^1 v+ {' Z4 q3 Z
$ N! A% {: G" ]1 x$ m! ]算法题: n! G- [8 R6 C+ j& t
1.设有n个人依围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列的顺序。
8 k _) a; y+ \% U* j# V2.找出1000以内满足既是平方数,又有两个数相等的数。例如121, 121=11*11且有2个1。
6 p3 Q0 t9 _/ K* p+ h' z; U要求尽量优化算法。
6 L& c% s/ H& m( |3 B* p9 j {& ]- w# f- Z' p$ `# e; h: C( u
( n( f0 x* K/ P" L 后面这些不是试卷上的。
+ g& b1 W! n$ u- K( N- ]+ ^2 F6 ]其他稍微掌握一下:6 v& @8 M& V3 V0 R
1.经典递归 例如hanoi塔问题:经典的递归,原问题包含子问题。有些问题或者数据结构本来就是递归描述的,用递归做很自然。
& p# [6 k) w0 N, W0 K2.递归与递推 利用递归的思想建立递推关系,如由兔子生崽而来的fibonacci数列。但递推由于没有返回段,因此更为简单,有时可以直接用循环实现。 ) @( P) p4 O% {" g! {
3.分治 不少分治方法是源于递归思想,或是递归分解+合并处理。 & b$ n, U( @4 a, @ Q* V
4.回溯 规模较小的问题用回溯解决比较自然。注意递归前后要保证现场的保存和恢复,即正确的转化问题。 ' ~! Q! D4 K |, C2 f
5.动态规划 动态规划的子问题重叠性质与递归有某种相似之处。递归+动态修改查表是一种不错的建立动态规划模型的方法。 ' Y, @1 u0 s* f8 E: Y, m# K
6.其他 其他么,就是不好归类。例如表达式处理,排列组合等。附带说一下,用递归来处理打印方案的问题还是很方便的。求把一个整数n无序划分成k份互不相同的正整数之和的方法总数0 z" x n# C" ^ D, C7 W% j
# p; d: @6 r1 w+ o# T% W
0 z& f% j8 g' r+ ?8 Q& |我认为必需掌握的算法:
* x. s$ ^- M8 l% T' Z: @6 b1 J排序算法(尤其是快速排序和冒泡)' b5 r. J- k1 F& [1 d1 Z
字符串函数实现。
" M$ @* Z8 w6 r; V! J& m
% c/ H" j- W, U2 w其它杂7杂8的。, _5 w1 |( m3 v# i( R: X0 F
比如:怎么判断一个单链表是不是循环链表。7 p* m" r0 R# }2 B& {/ A. Z# q
怎么求出一个无符号数中1的个数。
p1 A' n3 Q. Z0 M& j怎么不用其他变量,实现两变量交换。 |