Microsoft PowerPoint - Slides04_第三章(1) 栈.ppt [兼容模式]

Size: px
Start display at page:

Download "Microsoft PowerPoint - Slides04_第三章(1) 栈.ppt [兼容模式]"

Transcription

1 第三章栈 队列 数组 栈 (Stack) 基本概念 顺序存储结构 链式存储结构 应用 队列 (Queue) 基本概念 顺序存储结构 链式存储结构 应用 特殊矩阵 (Matrix) 的压缩存储

2 栈 ( Stack ) 只允许在一端插入和删除的线性表 允许插入和删除的一端称为栈顶 (top), 另一端称为栈底 (bottom) 退栈 (pop) 进栈 (push) 特点后进先出 (LIFO) bottom top a n-1 a n-2 a 0

3 栈的抽象数据类型 template <class E> class Stack { // 栈的类定义 public: Stack(){ }; // 构造函数 virtual void Push(E x) = 0; // 进栈 virtual bool Pop(E& x) = 0; // 出栈 virtual bool gettop(e& x) = 0; // 取栈顶 virtual bool IsEmpty() = 0; // 判栈空 virtual bool IsFull() = 0; // 判栈满 };

4 栈的数组存储表示 顺序栈 elements maxsize-1 top ( 栈空 )

5 #include <assert.h> #include <iostream.h> #include stack.h 顺序栈类的定义 template <class E> class SeqStack : public Stack<E> { // 顺序栈类定义 private: E *elements; // 栈元素存放数组 int top; // 栈顶指针 int maxsize; // 栈最大容量 void overflowprocess(); // 栈的溢出处理

6 public: SeqStack(int sz =50); // 构造函数 ~SeqStack() { delete []elements; } // 析构函数 }; void Push(E x); // 进栈 bool Pop(E& x); // 出栈 bool gettop(e& x); // 取栈顶内容 bool IsEmpty() const { return top == -1; } bool IsFull() const { return top == maxsize-1; }

7 top 空栈 top a a 进栈 top a b b 进栈 top e d c b a top e d c b a top e d c b a e 进栈 f 进栈溢出 e 退栈

8 top d c b a d 退栈 top c b a c 退栈 top b a b 退栈 top a a 退栈 top 空栈

9 顺序栈的操作 template <class E> void SeqStack<E>::overflowProcess() { // 私有函数 : 当栈满则执行扩充栈存储空间处理 E *newarray = new E[2*maxSize]; // 创建更大的存储数组 for (int i = 0; i <= top; i++) newarray[i] = elements[i]; maxsize += maxsize; delete [ ]elements; elements = newarray; // 改变 elements 指针 };

10 template <class E> void SeqStack<E>::Push(E x) { // 若栈不满, 则将元素 x 插入该栈栈顶, 否则溢出处理 if (IsFull( ) == true) overflowprocess( ); // 栈满 elements[++top] = x; // 栈顶指针先加 1, 再进栈 }; template <class E> bool SeqStack<E>::Pop(E& x) { // 函数退出栈顶元素并返回栈顶元素的值 if (IsEmpty() == true) return false; x = elements[top--]; // 栈顶指针退 1 return true; // 退栈成功 };

11 template <class E> bool Seqstack<E>::getTop(E& x) { // 若栈不空则函数返回该栈栈顶元素的值 if (IsEmpty() == true) return false; x = elements[top]; return true; };

12 双栈共享一个栈空间 V 0 maxsize-1 b[0] t[0] t[1] b[1] 两个栈共享一个数组空间 V[maxSize] 设立栈顶指针数组 t[2] 和栈底指针数组 b[2] t[i] 和 b[i] 分别指示第 i 个栈的栈顶 (top) 与栈底 (bottom) 初始 t[0] = b[0] = -1, t[1] = b[1] = maxsize 栈满条件 :t[0]+1 == t[1] // 栈顶指针相遇 栈空条件 :t[0] = b[0] 或 t[1] = b[1] // 退到栈底

13 bool push(dualstack& DS, Type x, int i) { if (DS.t[0]+1 == DS.t[1]) return false; if (i == 0) DS.t[0]++; else DS.t[1]--; DS.V[DS.t[i]] = x; return true; } bool Pop(DualStack& DS, Type& x, int i) { if (DS.t[i] == DS.b[i]) return false; x = DS.V[DS.t[i]]; if (i == 0) DS.t[0]--; else DS.t[1]++; return true; }

14 栈的链接存储表示 链式栈 top 链式栈无栈满问题, 空间可扩充 插入与删除仅在栈顶处执行 链式栈的栈顶在链头 适合于多栈操作

15 链式栈 (LinkedStack) 类的定义 #include <iostream.h> #include stack.h template <class E> struct StackNode { // 栈结点类定义 private: E data; // 栈结点数据 StackNode<E> *link; // 结点链指针 public: StackNode(E d = 0, StackNode<E> *next = NULL) : data(d), link(next) { } };

16 template <class E> class LinkedStack : public Stack<E> { // 链式栈类定义 private: StackNode<E> *top; // 栈顶指针 void output(ostream& os, StackNode <E> *ptr, int& i); // 递归输出栈的所有元素 public: LinkedStack() : top(null) {} // 构造函数 ~LinkedStack() { makeempty();} // 析构函数 void Push(E x); // 进栈 bool Pop(E& x); // 退栈

17 }; bool gettop(e& x) const; // 取栈顶 bool IsEmpty() const { return top == NULL; } void makeempty(); // 清空栈的内容 friend ostream& operator << (ostream& os, LinkedStack<E>& s) { output(os, s.top, 1); } // 输出栈元素的重载操作 <<

18 链式栈类操作的实现 template <class E> LinkedStack<E>::makeEmpty() { // 逐次删去链式栈中的元素直至栈顶指针为空 StackNode<E> *p; while (top!= NULL) // 逐个结点释放 { p = top; top = top->link; delete p; } };

19 template <class E> void LinkedStack<E>::Push(E x) { // 将元素值 x 插入到链式栈的栈顶, 即链头 top = new StackNode<E> (x, top);// 创建新结点 assert (top!= NULL); // 创建失败退出 }; template <class E> bool LinkedStack<E>::Pop(E& x) { // 删除栈顶结点, 返回被删栈顶元素的值 if (IsEmpty() == true) return false; // 栈空返回 StackNode<E> *p = top; // 暂存栈顶元素 top = top->link; // 退栈顶指针 x = p->data; delete p; // 释放结点 return true; };

20 template <class E> bool LinkedStack<E>::getTop(E& x) const { if (IsEmpty() == true) return false; // 栈空返回 x = top->data; // 返回栈顶元素的值 return true; }; template <class E> void LinkedStack<E>::output(ostream& os, StackNode<E> *ptr, int& i) { // 递归输出栈中所有元素 if (ptr!= NULL) { os << i << : << p->data << endl; // 逐个输出栈中元素的值 if (ptr->link!= NULL) output(os, ptr->link, i++); } };

21 问题是 : 当进栈元素的编号为 1, 2,, n 时, 可能的出栈序列有多少种? 关于栈的进一步讨论

22 设进栈元素数为 n, 可能出栈序列数为 m n : n = 0,m 0 = 1: 出栈序列 {} n = 1,m 1 = 1: 出栈序列 {1} n = 2,m 2 = 2 = m 0 *m 1 +m 1 *m 0 a) 出栈序列中 1 在第 1 位 1 进 1 出 2 进 2 出, 出栈序列为 {1, 2} = m 0 *m 1 = 1 b) 出栈序列中 1 在第 2 位 1 进 2 进 2 出 1 出, 出栈序列为 {2, 1} = m 1 *m 0 = 1

23 n = 3,m 3 = 5 = m 0 *m 2 +m 1 *m 1 +m 2 *m 0 a) 出栈序列中 1 在第 1 位 后面 2 个元素有 m 2 = 2 个出栈序列 :{1, 2, 3}, {1, 3, 2} = m 0 *m 2 = 2 b) 出栈序列中 1 在第 2 位 1 前有 2 后有 3, 出栈序列为 {2, 1, 3} = m 1 *m 1 = 1 c) 出栈序列中 1 在第 3 位 前面 2 个元素有 m 2 = 2 个出栈序列 :{2, 3, 1}, {3, 2, 1} = m 2 *m 0 = 2

24 n = 4,m 4 = 14 = m 0 *m 3 +m 1 *m 2 +m 2 *m 1 +m 3 *m 0 a) 出栈序列中 1 在第 1 位 后面 3 个元素有 m 3 = 5 个出栈序列 : {1, 2, 3, 4}, {1, 2, 4, 3}, {1, 3, 2, 4}, {1, 3, 4, 2}, {1, 4, 3, 2} = m 0 *m 3 = 5 b) 出栈序列中 1 在第 2 位 前面有 2, 后面 3 4 有 m 2 = 2 个出栈序列 : {2, 1, 3, 4}, {2, 1, 4, 3} = m 1 *m 2 = 2 b) 出栈序列中 1 在第 3 位 前面 2 3 有 m 2 = 2 个出栈序列, 后面有 4: {2, 3, 1, 4}, {3, 2, 1, 4} = m 2 *m 1 = 2 d) 出栈序列中 1 在第 4 位 前面 3 个元素有 m 3 = 5 个出栈序列 :{2, 3, 4, 1}, {2, 4, 3, 1}, {3, 2, 4, 1}, {3, 4, 2, 1}, {4, 3, 2, 1} = m 3 *m 0 = 5

25 一般地, 设有 n 个元素按序号 1, 2,, n 进栈, 轮流让 1 在出栈序列的第 1, 第 2, 第 n 位, 则可能的出栈序列数为 : 推导结果为 : n-1 0 i 0 1 n 2 n 1 1 n 0 1 i n i m * m m *m m *m *m m C n 2n 1 n 0 i 1 i n i 1 n 1 * m m

26 栈的应用 : 表达式求值 Evaluation of Expressions

27 一个表达式由操作数 ( 亦称运算对象 ) 操作符 ( 亦称运算符 ) 和分界符组成 算术表达式有三种表示 : 中缀 (infix) 表示 < 操作数 >< 操作符 >< 操作数 >, 如 A+B; 前缀 (prefix) 表示 < 操作符 >< 操作数 >< 操作数 >, 如 +AB; 后缀 (postfix) 表示 < 操作数 > < 操作数 > < 操作符 >, 如 AB+; 例如 : 中缀表达式 a+b*(c-d)- e/f 后缀表达式 abcd- *+ef/- 前缀表达式 - +a*b cd/ef

28 表达式中相邻两个操作符的计算次序为 : 优先级高的先计算 ; 优先级相同的自左向右计算 ; 当使用括号时从最内层括号开始计算

29 一般表达式的操作符有 4 种类型 : 1 算术操作符如双目操作符 (+ - * / 和 %) 以及单目操作符 (-) 2 关系操作符包括 < <= ==!= >= > 这些操作符主要用于比较 3 逻辑操作符如与 (&&) 或 ( ) 非 (!) 4 括号 ( 和 ) 它们的作用是改变运算顺序

30 中缀表示 转后缀表示 1) 对中缀表达式按运算优先次序加上括号, 2) 以就近移动为原则, 把操作符后移到右括号的后面, 3) 将所有括号消去 如中缀表示 (A+B)*D-E/(F+A*D)+C, 其转换为后缀表达式的过程如下 : ( ( ( ( A + B ) * D ) ( E / ( F + ( A * D ) ) ) ) + C ) 后缀表示 A B + D * E F A D * + / - C +

31 中缀表示 转前缀表示 1) 对中缀表达式按运算优先次序通统加上括号, 2) 以就近移动为原则, 把操作符前移到左括号前, 3) 将所有括号消去 如中缀表示 (A+B)*D-E/(F+A*D)+C, 其转换为前缀表达式的过程如下 : ( ( ( ( A + B ) * D ) ( E / ( F + ( A * D ) ) ) ) + C ) 前缀表示 + - * + A B D / E + F * A D C

32 使用栈可将表达式的中缀表示转换成它的前缀表示和后缀表示 为了实现这种转换, 需要考虑各操作符的优先级 优先级操作符 1 单目 -! 2 * / % < <= > >= 5 ==!= 6 && 7

33 中缀表示 转后缀表示 如 : 中缀表示 : A + B * (C - D ) - E / F 后缀表示 : ABCD-*+EF/-

34 各个算术操作符的优先级 操作符 ch # ( *,/,% +, - ) isp ( 栈内 ) icp ( 栈外 ) isp 叫做栈内 (in stack priority) 优先数 icp 叫做栈外 (in coming priority) 优先数 操作符优先数相等的情况 : 只出现在括号配对或栈底的 # 号与输入流最后的 # 号配对时

35 利用栈将中缀表达式转换为后缀表达式的算法 1) 操作符栈初始化 ; 2) 将结束符 # 进栈 ; 3) 读入中缀表达式字符流的首字符 ch; 4) 重复执行以下步骤, 直到 ch = #, 同时栈顶的操作符也是 #, 停止循环

36 若 ch 是操作数直接输出, 读入下一个字符 ch 若 ch 是操作符, 判断 ch 的优先级 icp 和位于栈顶的操作符 op 的优先级 isp 若 icp(ch) > isp(op), 令 ch 进栈, 读入下一个字符 ch 若 icp(ch) < isp(op), 退栈并输出 若 icp(ch) == isp(op), 退栈但不输出, 若退出的是 ( 号读入下一个字符 ch 5) 算法结束, 输出序列即为所需的后缀表达式

37 步输入栈内容语义输出 动作 1 # 栈初始化 2 A # A 操作数 A 输出, 读字符 3 + # + > # 操作符 + 进栈, 读字符 4 B #+ B 操作数 B 输出, 读字符 5 * #+ * > + 操作符 * 进栈, 读字符 6 ( #+* ( > * 操作符 ( 进栈, 读字符 7 C # +*( C 操作数 C 输出, 读字符 8 - # +*( - > ( 操作符 - 进栈, 读字符 9 D # +*(- D 操作数 D 输出, 读字符 10 ) # +*(- ) < - - 操作符 - 退栈输出 11 # +*( ) = ( ( 退栈, 消括号, 读字符

38 步输入栈内容语义输出动作 12 - #+* - < * * 操作符 * 退栈输出 13 #+ - < + + 操作符 + 退栈输出 14 # - > # 操作符 - 进栈, 读字符 15 E #- E 操作数 E 输出, 读字符 16 / #- / > - 操作符 / 进栈, 读字符 17 F #-/ F 操作数 F 输出, 读字符 18 # #-/ # < / / 操作符 / 退栈输出 19 #- # < - - 操作符 - 退栈输出 20 # # = # # 配对, 转换结束

39 void postfix(expression e) { stack<char> s; char ch= #, ch1, op; // 栈底放一个 # s.push(ch); cin.get(ch); while (s.isempty()==false && ch!= # ) if (isdigit(ch)) {cout<<ch; cin.get(ch)}; // 操作数直接输出 else{ s.gettop(ch1); if (isp(ch1)<icp(ch)) // 新输入操作符优先级高 {s.push(ch); cin.get(ch);} else if (isp(ch1)>icp(ch)) // 新输入操作符优先级低 {s.pop(op); cout<<op;}

40 }; } else { // 新输入操作符优先级相等 s.pop(op); if (op== ( ) cin.get(ch) }

41 思考题 : 利用栈将中缀表达式转换为前缀表达式的算法

42 中缀表示计算表达式的值 a + b * (c - d ) - e / f rst1 rst2 rst3 rst5 rst4 使用两个栈 : 操作符栈 OPTR (operator) 操作数栈 OPND(operand) 为了实现这种计算, 需要考虑各操作符的优先级

43 各个算术操作符的优先级 操作符 ch # ( *, /, % +, - ) isp ( 栈内 ) icp ( 栈外 ) isp 叫做栈内 (in stack priority) 优先数 icp 叫做栈外 (in coming priority) 优先数 操作符优先数相等的情况 : 只出现在括号配对或栈底的 # 号与输入流最后的 # 号配对时

44 中缀算术表达式求值 对中缀表达式求值的一般规则 : 1. 建立并初始化 OPTR 栈和 OPND 栈, 然后在 OPTR 栈中压入一个 # 2. 扫描中缀表达式, 取一字符送入 ch 3. 当 ch!= # 或 OPTR 栈的栈顶!= # 时, 执行以下工作, 否则结束算法 在 OPND 栈的栈顶得到运算结果 1 若 ch 是操作数, 进 OPND 栈, 从中缀表达式取下一字符送入 ch;

45 2 若 ch 是操作符, 比较 icp(ch) 的优先级和 isp(optr) 的优先级 : 若 icp(ch) > isp(optr), 则 ch 进 OPTR 栈, 从中缀表达式取下一字符送入 ch; 若 icp(ch) < isp(optr), 则从 OPND 栈退出 a2 和 a1, 从 OPTR 栈退出 θ, 形成运算指令 (a1)θ(a2), 结果进 OPND 栈 ; 若 icp(ch) == isp(optr) 且 ch == ')', 则从 OPTR 栈退出 '(', 对消括号, 然后从中缀表达式取下一字符送入 ch;

46 步输入 OPND OPTR 语义 动作 1 # 栈初始化 2 A 操作数 A 进栈, 读字符 3 + A # + > # 操作符 + 进栈, 读字符 4 B A #+ 操作数 B 进栈, 读字符 5 * AB #+ * > + 操作符 * 进栈, 读字符 6 ( AB #+* ( > * 操作符 ( 进栈, 读字符 7 C AB #+*( 操作数 C 进栈, 读字符 8 - ABC #+*( - > ( 操作符 - 进栈, 读字符 9 D ABC #+*(- 操作数 D 进栈, 读字符 10 ) ABCD #+*(- ) < - D C - 退栈, 计算 C-D, 结果 r1 进栈

47 步输入 OPND OPTR 语义 动作 11 ABr1 #+*( ) = ( ( 退栈, 消括号, 读字符 12 - ABr1 #+* - < * r1 B * 退栈, 计算 B*r1, 结果 r2 进栈 13 Ar2 #+ - < + r2 A + 退栈, 计算 A+r2, 结果 r3 进栈 14 r3 # - > # 操作符 - 进栈, 读字符 15 E r3 #- 操作数 E 进栈, 读字符 16 / r3e #- / > - 操作符 / 进栈, 读字符 17 F r3e #-/ 操作数 F 进栈, 读字符 18 # r3ef #-/ # < / F E / 退栈, 计算 E/F, 结果 r4 进栈

48 步输入 OPND OPTR 语义动作 19 r3r4 #- # < - r4 r3 - 退栈, 计算 r3-r4, 结果 r5 进栈 20 r5 # 算法结束, 结果 r5

49 void InFixRun() { stack<char> OPTR, OPND; char ch, op; OPTR.makeEmpty(); OPND.makeEmpty(); OPTR.Push( # ); // 两个栈初始化 getchar(ch); // 读入一个字符 op = '#' ; while (ch!= '#' op!= '#') { if (isdigit(ch)) // 是操作数, 进栈 { OPND.Push(ch); getchar(ch); } else { // 是操作符, 比较优先级 OPTR.GetTop(op); // 读一个操作符

50 } if (icp(ch) > isp(op)) // 栈顶优先级低 { OPTR.Push (ch); getchar(ch); } else if (icp(ch) < isp(op)) { OPTR.Pop(op); // 栈顶优先级高 OPND.DoOperator(op); } else if (ch == ) ) // 优先级相等 { OPTR.Pop(op); getchar(ch); } } OPTR.GetTop(op); } /*end of while*/

51 思考题 : 应用后缀表示计算表达式的值

52 思考题 : 应用后缀表示计算表达式的值 从左向右顺序地扫描表达式, 并用一个栈暂存扫描到的操作数或计算结果 在后缀表达式的计算顺序中已隐含了加括号的优先次序, 括号在后缀表达式中不出现 计算例 abcd- *+ef /- rst1 rst4 rst2 rst3 rst5

53 栈的应用 : 递归

54 递归 (Recursion) 的定义若, 一个对象部分地包含它自己, 或, 用它自己给自己定义, 则称这个对象是递归的 ; 若, 一个过程直接地或间接地调用自己, 则称这个过程是递归的过程 以下三种情况常常用到递归方法 定义是递归的 数据结构是递归的 问题的解法是递归的

55 1 定义是递归的 例如, 阶乘函数 1, n! n ( n 1)!, 当 n 当 n 0时 1时 求解阶乘函数的递归算法 long Factorial(long n) { if (n == 0) return 1; else return n*factorial(n-1); }

56 求解阶乘 n! 的过程 主程序 main : fact(4) 递归调用 参数传递 参数 4 计算 4*fact(3) 返回 24 参数 3 计算 3*fact(2) 返回 6 参数 2 计算 2*fact(1) 返回 2 结果返回 回归求值 参数 1 计算 1*fact(0) 返回 1 参数 0 直接定值 = 1 返回 1

57 2 数据结构是递归的 例如, 单链表结构 f f 一个结点, 它的指针域为 NULL, 是一个单链表 ; 一个结点, 它的指针域指向单链表, 仍是一个单链表

58 搜索链表最后一个结点并打印其数值 template <class E> void Print(ListNode<E> *f) { if (f ->link == NULL) cout << f ->data << endl; else Print(f ->link); } 递归找链尾 f a 0 a 1 a 2 a 3 a 4 f f f f

59 在链表中寻找等于给定值的结点并打印其数值 template <class E> void Print(ListNode<E> *f, E value) { if (f!= NULL) if (f -> data == value) cout << f -> data << endl; else Print(f -> link, value); } 递归找含 x 值的结点 f f f f x

60 3 问题的解法是递归的 例, 汉诺塔 (Tower of Hanoi) 问题的解法 : 如果 n = 1, 则将这一个盘子直接从 A 柱移到 C 柱上 否则, 执行以下三步 : 1 用 C 柱做过渡, 将 A 柱上的 (n-1) 个盘子移到 B 柱上 : 2 将 A 柱上最后一个盘子直接移到 C 柱上 ; 3 用 A 柱做过渡, 将 B 柱上的 (n-1) 个盘子移到 C 柱上

61

62 #include <iostream.h> void Hanoi (int n, chara, charb, charc) { // 解决汉诺塔问题的算法 if (n == 1) cout << " move " << A << " to " << C << endl; else { Hanoi(n-1, A, C, B); cout << " move " << A << " to " << C << endl; Hanoi(n-1, B, A, C); } }

63 自顶向下 逐步分解的策略 子问题应与原问题做同样的事情, 且更为简单 ; 解决递归问题的策略是把一个规模比较大的问题分解为一个或若干规模比较小的问题, 分别对这些比较小的问题求解, 再综合它们的结果, 从而得到原问题的解 分而治之策略 ( 分治法 ) 这些比较小的问题的求解方法与原来问题的求解方法一样

64 构成递归的条件 不能无限制地调用本身, 必须有一个出口, 化简为非递归状况直接处理 Procedure <name> ( <parameter list> ) { if ( < initial condition> ) // 递归结束条件 return ( initial value ); else // 递归 return (<name> ( parameter exchange )); }

65 递归过程与递归工作栈 递归过程在实现时, 需要自己调用自己 层层向下递归, 退出时的次序正好相反 : 递归调用 n! (n-1)! (n-2)! 1! 0!=1 返回次序 主程序第一次调用递归过程为外部调用 ; 递归过程每次递归调用自己为内部调用 它们返回调用它的过程的地址不同

66 RetLoc2 RetLoc1 long Factorial(long n) { int temp; if (n == 0) return 1; else temp = n * Factorial(n-1); } return temp; void main() { int n; n = Factorial(4); }

67 递归工作栈 每一次递归调用时, 需要为过程中使用的参数 局部变量等另外分配存储空间 每层递归调用需分配的空间形成递归工作记录, 按后进先出的栈组织 活动记录框架 局部变量返回地址参数 递归工作记录

68 函数递归时的活动记录 调用块 函数块. < 下一条指令 > Function(< 参数表 >). <return> 返回地址 ( 下一条指令 ) 局部变量参数

69 计算 Fact 时活动记录的内容 递归调用序列 参数返回值返回地址 4 24 RetLoc1 3 6 RetLoc2 2 2 RetLoc2 1 1 RetLoc2 0 1 RetLoc2 返回时的指令 return 4*6 // 返回 24 return 3*2 // 返回 6 return 2*1 // 返回 2 return 1*1 // 返回 1 return 1 // 返回 1

70 递归过程改为非递归过程 递归过程简洁 易编 易懂 递归过程效率低, 重复计算多 改为非递归过程的目的是提高效率 单向递归和尾递归可直接用迭代实现其非递归过程 其他情形必须借助栈实现非递归过程

71 单向递归

72 计算斐波那契数列的函数 Fib(n) 的定义 Fib(n) Fib(n 1) n, 求解斐波那契数列的递归算法 long Fib(long n) { if (n <= 1) return n; else return Fib(n-1)+Fib(n-2); } Fib(n 2), n n 0,1 1 如 F 0 = 0, F 1 = 1, F 2 = 1, F 3 = 2, F 4 = 3, F 5 = 5

73 斐波那契数列的递归调用树 Fib(5) Fib(4) Fib(3) Fib(3) Fib(2) Fib(2) Fib(1) Fib(2) Fib(1) Fib(1) Fib(0) Fib(1) Fib(0) Fib(1) Fib(0) 调用次数 NumCall(k) = 2*Fib(k+1)-1

74 单向递归用迭代法实现 long FibIter(long n) { if (n <= 1) return n; long twoback = 0, oneback = 1, Current; for (int i=2; i <= n; i++) { Current = twoback + oneback; twoback = oneback; oneback = Current; } return Current; }

75 尾递归 逆向输出

76 void recfunc(int A[ ], intn) { if (n >= 0) { cout << A[n] << ; n--; recfunc(a, n); } } void sterfunc(int A[ ], int n) { // 消除了尾递归的非递归函数 while (n >= 0) { cout << A[n] << ; n--; } } 尾递归用迭代法实现

77 递归与回溯 对一个包含有许多结点, 且每个结点有多个分支的问题, 可以先选择一个分支进行搜索 当搜索到某一结点, 发现无法再继续搜索下去时, 可以沿搜索路径回退到前一结点, 沿另一分支继续搜索 如果回退之后没有其他选择, 再沿搜索路径回退到更前结点, 依次执行, 直到搜索到问题的解, 或搜索完全部可搜索的分支没有解存在为止 回溯法与分治法本质相同, 可用递归求解

78 栈的应用 : 递归 -> 迷宫问题

79 迷宫问题 小型迷宫 路口动作结果 1 ( 入口 ) 正向走进到 2 2 左拐弯进到 3 3 右拐弯进到 4 4 ( 堵死 ) 回溯退到 3 3 ( 堵死 ) 回溯退到 2 2 正向走进到 5 5 ( 堵死 ) 回溯退到 2 2 右拐弯进到 6 6 左拐弯进到 7 ( 出口 ) 型迷宫的数据 小6 左 0 直 2 右 0 行 3 行 5 行

80 迷宫的类定义 交通路口结构定义 #include <iostream.h> struct Intersection { #include <fstream.h> int left; #include <stdlib.h> int forward; class Maze { int right; private: } int MazeSize; int EXIT; Intersection *intsec; public: Maze(char *filename); int TraverseMaze(int CurrentPos); };

81 Maze :: Maze(char *filename) { // 构造函数 : 从文件 filename 中读取各路口 // 和出口的数据 ifstream fin; fin.open(filename, ios::in ios::nocreate); // 为输入打开文件, 文件不存在则打开失败 if (!fin) { cerr << 迷宫数据文件 << filename << 打不开 << endl; exit(1); } fin >> MazeSize; // 输入迷宫路口数

82 } intsec = new Intersection[MazeSize+1]; // 创建迷宫路口数组 for (int i = 1; i <= MazeSize; i++) fin >> intsec[i].left >> intsec[i].forward >> intsec[i].right; fin >> EXIT; // 输入迷宫出口 fin.close();

83 迷宫漫游与求解算法 int Maze::TraverseMaze(int CurrentPos) { if (CurrentPos > 0) { // 路口从 1 开始 if (CurrentPos == EXIT) { // 出口处理 cout << CurrentPos << " "; return1; } else // 递归向左搜寻可行 if (TraverseMaze(intsec[CurrentPos].left)) { cout << CurrentPos << ; return1; } else // 递归向前搜寻可行 if (TraverseMaze(intsec[CurrentPos].forward)) { cout << CurrentPos << ; return1; } else // 递归向右搜寻可行 if (TraverseMaze(intsec[CurrentPos].right)) { cout << CurrentPos << " "; return1; } } return 0; }

84 利用栈实现 TraverseMaze 的非递归算法

递归函数的高效实现方法

递归函数的高效实现方法 递归函数的高效实现方法 赵建华 递归函数的适用范围和优缺点 分治法 把一个比较大的问题分解为若干个比较小的问题, 分别求解这些比较小的问题, 再综合得到原问题的解 如果比较小的问题和原问题具有同样的性质, 那么适用递归接法 要求最终能够把问题分解为能够直接解决的简单问题 优点 简洁 能够帮助思考 和问题的结构有对应关系 缺点 效率低下 递归 递归的定义 若一个对象部分地包含它自己, 或用它自己给自己定义,

More information

PowerPoint Presentation

PowerPoint Presentation 数据结构与算法 ( 三 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg 第 3 章栈与队列 栈 栈的应用 递归到非递归的转换 队列 2 栈 (Stack) 操作受限的线性表 运算只在表的一端进行 队列 (Queue) 运算只在表的两端进行

More information

ebook39-5

ebook39-5 5 3 last-in-first-out, LIFO 3-1 L i n e a r L i s t 3-8 C h a i n 3 3. 8. 3 C + + 5.1 [ ] s t a c k t o p b o t t o m 5-1a 5-1a E D 5-1b 5-1b E E 5-1a 5-1b 5-1c E t o p D t o p D C C B B B t o p A b o

More information

Microsoft PowerPoint - 4.pptx

Microsoft PowerPoint - 4.pptx 第 4 章栈和队列 运算受限的线性表 栈 表达式求值 搜索与回溯 队列 队列的应用 4.1 栈 只在称为栈顶 (top) 的一端插入和删除的线性表 另一端称为栈底 (bottom) 数据通过栈的顺序 后进先出 (LIFO) top bottom a n-1 a n-2 a 0 栈的抽象数据类型 class Stack { public: Stack ( ) { ; ~Stack ( ) { ; int

More information

PowerPoint Presentation

PowerPoint Presentation 第 章 栈与队列 本章主题 : 栈和队列的应用 教学目的 : 掌握栈和队列的应用方法, 理解栈的重要作用 教学重点 : 利用栈实现行编辑, 利用栈实现表达式求值 教学难点 : 利用栈实现表达式求值 2011-10-18 1 .1 ADT 栈 ( 定义和运算 ) 1.. 栈的定义 栈 stack 是一种特殊的 ( 有序表 ) 线性表, 插入 或删除栈元素的运算只能在表的一端进行, 称运算 的一端为栈顶,

More information

Microsoft PowerPoint - ch3.pptx

Microsoft PowerPoint - ch3.pptx 第 3 章栈和队列 第 3 章栈和队列 3.1 栈 3.2 栈的应用举例 3.3 队列 哈尔滨工业大学 ( 威海 ) 计算机科学与技术学院 (2014/2015 学年秋季版 ) 1 本章重点难点 第 3 章栈和队列 重点 : (1) 栈 队列的定义 特点 性质和应用 ;(2)AT 栈 AT 队列的设计和实现以及基本操作及相关算法 难点 : (1) 循环队列中对边界条件的处理 ;(2) 分析栈和队列在表达式求值

More information

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 1 CARDGAME 1 CardGame 题目描述 桌上有一叠牌, 从第一张牌 ( 即位于顶面的牌 ) 开始从上往下依次编号为 1~n 当至少还剩两张牌时进行以下操作 : 把第一张牌扔掉, 然后把新的第一张放到整叠牌的最后 请模拟这个过程, 依次输出每次扔掉的牌以及最后剩下的牌的编号 输入 输入正整数 n(n

More information

正文.doc

正文.doc 第 3 章 栈 实验三 3.1 实验目的及要求 1. 理解特殊的线性结构 顺序栈的抽象数据类型的定义, 及其在 C 语言环境中的表示方法 2. 理解顺序栈的基本操作的算法, 及其在 C 语言环境中一些主要基本操作的实现 3. 在 C 语言环境下实现顺序栈的应用操作 : 1 利用栈实现十进制数转换成八进制数 2 利用栈实现一位数的加减乘除的表达式求解 3.2 实验内容 经过对实验目的及要求的分析, 本实验仍然采用首先描述栈的基本操作集函数,

More information

Microsoft PowerPoint - string_kruse [兼容模式]

Microsoft PowerPoint - string_kruse [兼容模式] Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.

More information

4

4 孙猛 http://www.math.pku.edu.cn/teachers/sunm 2017 年 9 月 28 日 2 栈及其抽象数据类型 栈的实现 栈的应 用 3 基本概念 栈是 一种特殊的线性表, 它所有的插 入和删除都限制在表的同 一端进 行行 表中允许进 行行插 入 删除操作的 一端叫做栈的顶 表的另 一端则叫做栈的底 当栈中没有元素时, 称之为空栈 栈的插 入运算通常称为进栈或 入栈,

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

2.3 链表

2.3  链表 数据结构与算法 ( 二 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) https://pkumooc.coursera.org/bdsalgo-001/ 第二章线性表 2.1 线性表 2.2 顺序表 tail head a 0 a 1 a n-1 2.4 顺序表和链表的比较 2 链表 (linked list) 通过指针把它的一串存储结点链接成一个链

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

ebook39-6

ebook39-6 6 first-in-first-out, FIFO L i n e a r L i s t 3-1 C h a i n 3-8 5. 5. 3 F I F O L I F O 5. 5. 6 5. 5. 6.1 [ ] q u e n e ( r e a r ) ( f r o n t 6-1a A 6-1b 6-1b D C D 6-1c a) b) c) 6-1 F I F O L I F ADT

More information

Microsoft PowerPoint - DS_Ch3_EN [兼容模式]

Microsoft PowerPoint - DS_Ch3_EN [兼容模式] Data Structure Ch.3 Stacks & Queues Dr. He Emil Huang School of Computer Science and Technology Soochow University 苏州大学计算机科学与技术学院网络工程系 本章 ppt 与教材对应情况 本章涉及所有内容涵盖了 Kruse 教材以下章节 Chapter 2 ( 栈,Introduction

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

Microsoft PowerPoint - Ch3 [兼容模式]

Microsoft PowerPoint - Ch3 [兼容模式] Ch.3 栈和队列 1 3.1 栈 定义和运算 栈 仅在表的一端插 删的线性表插入 进 ( 入 ) 栈 删除 出 ( 退 ) 栈 栈顶 插删的一端 栈底 另一端 结构特征 -- 后进先出 修改原则 : 退栈者总是最近入栈者 服务原则 : 后来者先服务 (LIFO 表 ) 例 : 入栈出栈 a n a 2 a 1 2 3.1 栈 Note: 后入栈者先出栈, 但不排除后者未进栈, 先入栈者先出栈 an,,

More information

40 第二部分试题部分 9. 假设栈初始为空, 将中缀表达式 a/b+(c*d-e*f)/g 转换为等价的后缀表达式的过程中, 当扫描 到 f 时, 栈中的元素依次是 ( ) 2014 年全国试题 2(2) 分 A. +(*- B. +(-* C. /+(*-* D. /+-* 10. 循环队列存放

40 第二部分试题部分 9. 假设栈初始为空, 将中缀表达式 a/b+(c*d-e*f)/g 转换为等价的后缀表达式的过程中, 当扫描 到 f 时, 栈中的元素依次是 ( ) 2014 年全国试题 2(2) 分 A. +(*- B. +(-* C. /+(*-* D. /+-* 10. 循环队列存放 第 3 章栈和队列 39 第 3 章 栈和队列 一 选择题 1. 为解决计算机主机与打印机之间速度不匹配问题, 通常设置一个打印数据缓冲区, 主机将要 输出的数据依次写入该缓冲区, 而打印机则依次从该缓冲区中取出数据 该缓冲区的逻辑结 构应该是 ( ) 2009 年全国试题 1(2) 分 A. 栈 B. 队列 C. 树 D. 图 2. 设栈 S 和队列 Q 的初始状态均为空, 元素 a, b, c,

More information

PowerPoint Presentation

PowerPoint Presentation 数据结构与算法 ( 三 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg 第 3 章栈与队列 栈 栈与表达式求值 队列 栈和队列的应用 队列的应用 递归到非递归的转换 ( 补充 ) 2 栈 (Stack) 操作受限的线性表 运算只在表的一端进行

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

数据结构 Data Structure

数据结构 Data Structure 数据结构 : 线性表 Data Structure 2016 年 3 月 15 日星期二 1 线性表 栈和队列 线性表 字典 ADT 栈 队列 2016 年 3 月 15 日星期二 2 线性表 定义 : 线性表 L 是 n 个数据元素 a 0,a 1, a n-1 的有限序列, 记作 L=(a 0,a 1, a n-1 ) 其中元素个数 n(n 0) 定义为表 L 的长度 当 n=0 时,L 为空表,

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

untitled

untitled 1 1.1 1.2 1.3 1.4 1.5 ++ 1.6 ++ 2 BNF 3 4 5 6 7 8 1.2 9 1.2 IF ELSE 10 1.2 11 1.2 12 1.3 Ada, Modula-2 Simula Smalltalk-80 C++, Objected Pascal(Delphi), Java, C#, VB.NET C++: C OOPL Java: C++ OOPL C# C++

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx 运算符重载 Operator Overloading class Point { public: ; double x_, y_; Why Operator Overloading? Point (double x =0, double y = 0):x_(x),y_(y) { int main(){ Point a(1., 2), b(3,4); Point c = a + b; return 0;

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 数据结构与算法 ( 五 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg 第五章 的概念 的抽象数据类型 深度优先搜索 宽度优先搜索 的存储结构 D B A E G C H F I 二叉搜索树 堆与优先队列 Huffman 树及其应用 2 5.2

More information

PowerPoint Presentation

PowerPoint Presentation 数据结构与算法 ( 六 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg 第 6 章树 C 树的定义和基本术语 树的链式存储结构 子结点表 表示方法 静态 左孩子 / 右兄弟 表示法 动态表示法 动态 左孩子 / 右兄弟 表示法 父指针表示法及其在并查集中的应用

More information

<4D F736F F F696E74202D20536C FB5DAD2BBD5C220D0F7C2DBA3A831A3A92E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D20536C FB5DAD2BBD5C220D0F7C2DBA3A831A3A92E BBCE6C8DDC4A3CABD5D> 数据结构基础 FUNDAMENTALS OF DATA STRUCTURE 耿新 2014-2015 学年第 2 学期 课程的主要内容 数据结构和算法基础本质 : 如何用计算机高效地解决问题 先修课程 高等数学 离散数学 程序设计 参考教材 数据结构 ( 用面向对象方法与 C++ 描述 ) 清华大学出版社, 殷人昆主编 Fundamentals of Data Structures in C++ Ellis

More information

PowerPoint Presentation

PowerPoint Presentation 数据结构与算法 ( 一 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg 第 1 章概论 问题求解 数据结构及抽象数据类型 算法的特性及分类 算法的效率度量 数据结构的选择和评价 2 1.1 问题求解 问题求解 设计方法 编写计算机程序的目的?

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

Microsoft Word - 第5-7章

Microsoft Word - 第5-7章 3 5 1 2 239 1. 1 2 3 2. 1 2 7 1 1 2 3 4 5 A. B. C. D. ABC 2012 240 A. B. C. D. D D 1 7 2 2012 3 10 2 000 100 1 21 000 000 21 000 000 2 21 000 000 21 000 000 2 7 3 A 2012 1 1 1 2012 12 31 600 3 000 4 000

More information

Strings

Strings Inheritance Cheng-Chin Chiang Relationships among Classes A 類 別 使 用 B 類 別 學 生 使 用 手 機 傳 遞 訊 息 公 司 使 用 金 庫 儲 存 重 要 文 件 人 類 使 用 交 通 工 具 旅 行 A 類 別 中 有 B 類 別 汽 車 有 輪 子 三 角 形 有 三 個 頂 點 電 腦 內 有 中 央 處 理 單 元 A

More information

大侠素材铺

大侠素材铺 编译原理与技术 语法制导翻译 Ⅱ 计算机科学与技术学院 李诚 22/10/2018 Announcement Tutorial on Thursday (25/10/2018) 3B201, Class time Assignment review Q & A Cheng @ Compiler Fall 2018, USTC 2 主要内容 源程序 词法分析器 token 语法分析器 分析树 语义分析

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf (%d, & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9 201 201 21 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 1 B 1 C 5 D RPG 10 E 10 F 1 G II 1 1 201 201 C 1 # include 2 int main ( void

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

More information

Chapter12 Derived Classes

Chapter12   Derived Classes 继 承 -- 派 生 类 复 习 1. 有 下 面 类 的 说 明, 有 错 误 的 语 句 是 : class X { A) const int a; B) X(); C) X(int val) {a=2 D) ~X(); 答 案 :C 不 正 确, 应 改 成 X(int val) : a(2) { 2. 下 列 静 态 数 据 成 员 的 特 性 中, 错 误 的 是 A) 说 明 静 态 数

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

提问袁小兵:

提问袁小兵: C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.

More information

Microsoft PowerPoint - DS_Ch4_EN [兼容模式]

Microsoft PowerPoint - DS_Ch4_EN [兼容模式] Data Structure Ch.4 Recursion Dr. He Emil Huang School of Computer Science and Technology Soochow University 苏州大学计算机科学与技术学院网络工程系 本章 ppt 与教材对应情况 本章涉及所有内容涵盖了教材以下章节 Chapter 5 ( 递归,Recursion) Question: 递归与数据结构课程体系的关系?

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2009 年 下 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

untitled

untitled 1 7 7.1 7.2 7.3 7.4 7.5 2 7.1 VFT virtual 7.1 3 1 1. 2. public protected public 3. VFT 4. this const volatile 4 2 5. ( ) ( ) 7.1 6. no-static virtual 7.2 7. inline 7.3 5 3 8. this this 9. ( ) ( ) delete

More information

Microsoft Word - 9502_1-2.doc

Microsoft Word - 9502_1-2.doc 北 一 女 中 95 學 年 度 第 二 學 期 高 一 第 二 次 期 中 考 歷 史 科 試 題 範 圍 : 歷 史 ( 下 ) 4-3~8-2 聯 合 命 題 電 腦 卡 務 必 寫 上 座 號 姓 名, 以 便 核 對 劃 記 有 無 錯 誤 未 劃 記 或 畫 卡 錯 誤, 以 致 電 腦 不 能 判 讀 者, 一 律 先 扣 5 分 一 單 選 題 75%( 每 題 3 分 ) 1. 大

More information

目录 一 题目的内容及要求... 1 二 需求分析... 1 三 概要设计... 1 四 详细设计... 2 五 源代码... 7 六 运行结果及分析 七 收获及体会

目录 一 题目的内容及要求... 1 二 需求分析... 1 三 概要设计... 1 四 详细设计... 2 五 源代码... 7 六 运行结果及分析 七 收获及体会 程序设计实训报告 表达式求值问题 完成者 : 何炜班级 : 计科 1501 学号 :2015014278 完成日期 :2016 年 7 月 14 日星期四 1 目录 一 题目的内容及要求... 1 二 需求分析... 1 三 概要设计... 1 四 详细设计... 2 五 源代码... 7 六 运行结果及分析... 16 七 收获及体会... 17 2 一 题目的内容及要求 求解形如 (a+b)*((c+d)*e+f*h*g)

More information

Microsoft PowerPoint - Lecture3.ppt

Microsoft PowerPoint - Lecture3.ppt Chap 4. Links, Stacks and Queue 1 Lists A list is a finite, ordered sequence of data items. Important concept: List elements have a position. Notation: What operations should we implement?

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

A.68 B.70 C.80 D.100 答 案 A 解 析 丁 产 品 的 可 变 现 净 值 =110-2=108( 万 元 ), 成 本 =100+40=140( 万 元 ), 可 变 现 净 值 低 于 成 本, 产 品 发 生 的 减 值, 所 以 丙 材 料 的 可 变 现 净 值 =1

A.68 B.70 C.80 D.100 答 案 A 解 析 丁 产 品 的 可 变 现 净 值 =110-2=108( 万 元 ), 成 本 =100+40=140( 万 元 ), 可 变 现 净 值 低 于 成 本, 产 品 发 生 的 减 值, 所 以 丙 材 料 的 可 变 现 净 值 =1 2013 年 中 级 会 计 职 称 考 试 中 级 会 计 实 务 真 题 及 答 案 解 析 一 单 项 选 择 题 ( 本 类 题 共 15 小 题, 每 小 题 1 分, 共 15 分 每 小 题 只 有 一 个 符 合 题 意 的 正 确 答 案 请 将 选 定 的 答 案, 按 答 题 卡 要 求, 用 2B 铅 笔 填 涂 答 题 卡 中 相 应 信 息 点 多 选 错 选 不 选 均

More information

Microsoft Word - 2p01

Microsoft Word - 2p01 本 章 内 容 比 较 基 础, 主 要 是 为 以 后 章 节 的 学 习 打 好 基 础, 重 点 掌 握 基 本 概 念 考 点 年 份 1. 实 质 重 于 形 式 2006 年 多 项 选 择 题 2. 会 计 要 素 的 确 认 与 计 量 2009 年 单 项 选 择 题 2012 年 判 断 题 3. 谨 慎 性 要 求 2011 年 判 断 题 4. 计 量 属 性 2014 年

More information

Microsoft PowerPoint - Slides03_第二章 线性表.ppt [兼容模式]

Microsoft PowerPoint - Slides03_第二章 线性表.ppt [兼容模式] 第二章线性表 定义 基本操作 实现 顺序存储 链式存储 应用 多项式 线性表 (Linear List) 定义 线性表是 n ( 0) 个数据元素的有限序列, 记作 (a 1, a 2,, a n ) a i 是表中数据元素,n 是表长度 假定 : 各元素的数据类型相同 原则上 : 线性表中, 表元素的数据类型可以不相同 采用的存储表示可能会对元素的数据类型有限制 特点 除第一个元素外, 其他每一个元素有一个且仅有一个直接前驱

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

<4D F736F F D B8BDBCFE4220D7A8D2B5BBF9B4A1D3EBBACBD0C4BFCEB3CCC3E8CAF62E646F6378>

<4D F736F F D B8BDBCFE4220D7A8D2B5BBF9B4A1D3EBBACBD0C4BFCEB3CCC3E8CAF62E646F6378> B212CC: 数据结构与算法 课程描述 0 课程基本信息 课程编号 : B212CC 课程名称 : 数据结构与算法英文名称 : Data Structures and Algorithms 英文简称 : DSA 预备课程 : 计算系统基础 离散数学授课时间 : 二年级第一学期时间分配 : 课堂教学 (48 课时 )+ 实验安排 (48 课时 )+ 课后作业与阅读 (48 课时 ) 学分数 : 3

More information

ebook14-4

ebook14-4 4 TINY LL(1) First F o l l o w t o p - d o w n 3 3. 3 backtracking parser predictive parser recursive-descent parsing L L ( 1 ) LL(1) parsing L L ( 1 ) L L ( 1 ) 1 L 2 L 1 L L ( k ) k L L ( 1 ) F i r s

More information

生成word文档

生成word文档 希赛网, 专注于软考 PMP 通信考试的专业 IT 知识库和在线教育平台 希赛网在线题库, 提供历年考试真题 模拟试题 章节练习 知识点练习 错题本练习等在线做题服务, 更有能力评估报告, 让你告别盲目做题, 针对性地攻破自己的薄弱点, 更高效的备考 希赛网官网 :http://www.educity.cn/ 希赛网软件水平考试网 :http://www.educity.cn/rk/ 希赛网在线题库

More information

PowerPoint Presentation

PowerPoint Presentation 数据结构与算法 ( 二 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) https://pkumooc.coursera.org/bdsalgo-001/ 第二章 线性表 第二章线性表 2.1 线性表 2.2 顺序表 2.3 链表 {a 0, a 1,, a n 1 } a 0 a 1 a 2 a n-1 tail head a

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

Microsoft PowerPoint - schap1 [兼容模式]

Microsoft PowerPoint - schap1 [兼容模式] 算法设计与分析 Desig ad Aalysis of Algorithms 主讲人 徐云 Fall 2018, USTC 第 1 章 ( 补充 ) 递归与分治法 1.1 递归设计技术 1.2 二分查找 1.3 大整数乘法 1.4 Strasse 矩阵乘法 1.5 导线和开关 1.1 递归设计技术 递归的概念和种类 递归方法的三种应用 一个简单示例 :! 递归算法的非递归实现 递归算法设计举例 2018/9/25

More information

Intro to Alg

Intro to Alg 算法基础 Foudatio of Algorithms 主讲人 徐云 Fall 2018, USTC 第 1 章 ( 补充 ) 递归与分治法 1.1 递归设计技术 1.2 二分查找 1.3 大整数乘法 1.4 Strasse 矩阵乘法 1.5 导线和开关 1.1 递归设计技术 递归的概念和种类 递归方法的三种应用 一个简单示例 :! 递归算法的非递归实现 递归算法设计举例 2018/9/27 算法基础

More information

2 A

2 A 1 2 A 3 AB 8 11 12 13 14 15 16 4 5 6 21 200 (l)20 (2)15 (3)10 7 8 9 10 11 11 12 14 15 12 13 14 15 16 17 18 19 20 21 17 18 203500 1500 500 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

More information

Intro to Alg

Intro to Alg 算法设计与分析 Desig ad Aalysis of Algorithms 主讲人 徐云 Fall 2016, USTC 第 1 章 ( 补充 ) 递归与分治法 1.1 递归设计技术 1.2 二分查找 1.3 大整数乘法 1.4 Strasse 矩阵乘法 1.5 导线和开关 1.1 递归设计技术 递归的概念和种类 递归方法的三种应用 一个简单示例 :! 递归算法的非递归实现 递归算法设计举例 2016/10/27

More information

untitled

untitled 1 DBF (READDBF.C)... 1 2 (filetest.c)...2 3 (mousetes.c)...3 4 (painttes.c)...5 5 (dirtest.c)...9 6 (list.c)...9 1 dbf (readdbf.c) /* dbf */ #include int rf,k,reclen,addr,*p1; long brec,erec,i,j,recnum,*p2;

More information

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不 1. 右 側 程 式 正 確 的 輸 出 應 該 如 下 : * *** ***** ******* ********* 在 不 修 改 右 側 程 式 之 第 4 行 及 第 7 行 程 式 碼 的 前 提 下, 最 少 需 修 改 幾 行 程 式 碼 以 得 到 正 確 輸 出? (A) 1 (B) 2 (C) 3 (D) 4 1 int k = 4; 2 int m = 1; 3 for (int

More information

Strings

Strings Polymorphism and Virtual Functions Cheng-Chin Chiang Virtual Function Basics 多 型 (Polymorphism) 賦 予 一 個 函 數 多 種 意 涵, 存 在 於 同 一 類 別 之 內 祖 先 類 別 與 後 代 類 別 間 物 件 導 向 程 式 設 計 基 本 原 理 虛 擬 函 數 (Virtual Function)

More information

Microsoft Word - data_mid1611_and_sol.docx

Microsoft Word - data_mid1611_and_sol.docx Department of Computer Science and Engineering National Sun Yat-sen University Data Structures - Middle Exam, Nov. 14, 2016 1. Explain each of the following terms. (16%) (a) private in C++ language (b)

More information

Microsoft Word - 97.01.30軟體設計第二部份範例試題_C++_ _1_.doc

Microsoft Word - 97.01.30軟體設計第二部份範例試題_C++_ _1_.doc 電 腦 軟 體 設 計 乙 級 技 術 士 技 能 檢 定 術 科 測 試 範 例 試 題 (C++) 試 題 編 號 :11900-920201-4 審 定 日 期 : 94 年 7 月 1 日 修 訂 日 期 : 96 年 2 月 1 日 97 年 1 月 30 日 ( 第 二 部 份 ) 電 腦 軟 體 設 計 乙 級 技 術 士 技 能 檢 定 術 科 測 試 應 檢 參 考 資 料 壹 試

More information

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 第十一讲 运算符重载 与类型转换 运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 为什么要运算符重载 预定义的运算符只针对基本数据类型, 若要对类的对象进行类似的运算, 需要重新定义运算符的功能 运算符重载实质就是函数重载 : 对已有的运算符赋予多重含义, 使得同一个运算符作用于不同类型的数据时导致不同的行为

More information

PowerPoint Presentation

PowerPoint Presentation 程序设计 II 第 7 讲递归 计算机学院黄章进 zhuang@ustc.edu.cn 内容 例题 : 汉诺塔问题 例题 : 放苹果 1664 例题 : 神奇的口袋 2755 例题 : 八皇后 2754 例题 : 逆波兰表达式 2694 2 递归的基本思想 总体思想 : 将待求解问题的解看作输入变量 x 的函数 f(x), 通过寻找函数 g, 使得 f(x) = g(f(x-1)), 并且已知 f(0)

More information

概述

概述 OPC Version 1.8 build 0925 KOCRDK Knight OPC Client Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOC_Init...5 2.2.2 KOC_Uninit...5 2.3...5

More information

山东2014第四季新教材《会计基础》冲刺卷第二套

山东2014第四季新教材《会计基础》冲刺卷第二套 2016 年 会 计 从 业 考 试 会 计 基 础 冲 刺 卷 2 一 单 项 选 择 题 ( 本 题 共 20 小 题, 每 小 题 1 分, 共 20 分 在 下 列 每 小 题 的 备 选 项 中, 有 且 只 有 一 个 选 项 是 最 符 合 题 目 要 求 的, 请 将 正 确 答 案 前 的 英 文 字 母 填 入 题 后 的 括 号 内, 不 选 错 选 均 不 得 分 ) 1.

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc 2 5 8 11 0 1. 13 2. 15 3. 18 1 1. 22 2. 25 3. 27 2 1. 35 2. 38 3. 41 4. 43 5. 48 6. 50 3 1. 56 2. 59 3. 63 4. 65 5. 69 13 22 35 56 6. 74 7. 82 8. 84 9. 87 10. 97 11. 102 12. 107 13. 111 4 114 1. 114 2.

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

( ) A B C D ( ) A B C D A B C D A B C D A 8750 B C 6250 D 5000 A B C D A B C D

( ) A B C D ( ) A B C D A B C D A B C D A 8750 B C 6250 D 5000 A B C D A B C D 1 A B C D A B C D A B C D 1000 1200 900 A B C D ( ) A B C D ( ) A B C D A B C D A B C D 5000 6250 A 8750 B 11250 C 6250 D 5000 A B C D A B C D A B C D 1 200000 400 10 A 1000 B 1600 C 2000 D 2300 1 A B

More information

Microsoft Word - 970617cppFinalSolution.doc

Microsoft Word - 970617cppFinalSolution.doc 國 立 台 灣 海 洋 大 學 資 訊 工 程 系 C++ 程 式 設 計 期 末 考 參 考 答 案 姓 名 : 系 級 : 學 號 : 97/06/17 考 試 時 間 :10:00 12:10 試 題 敘 述 蠻 多 的, 看 清 楚 題 目 問 什 麼, 針 對 重 點 回 答 是 很 重 要 的 ; 不 確 定 的 請 一 定 要 當 場 提 出 來, 不 要 白 花 力 氣 在 誤 會

More information

<4D6963726F736F667420576F7264202D20C9CFBAA3B2C6BEADB4F3D1A732303133C4EAC9CFB5B3D1B5B0E0BDE1D2B5C0EDC2DBCCE2BFE2A3A8746F20D1A7D4B1A3A92E646F6378>

<4D6963726F736F667420576F7264202D20C9CFBAA3B2C6BEADB4F3D1A732303133C4EAC9CFB5B3D1B5B0E0BDE1D2B5C0EDC2DBCCE2BFE2A3A8746F20D1A7D4B1A3A92E646F6378> 上 海 财 经 大 学 2013 年 第 2 期 师 生 预 备 党 员 积 极 分 子 培 训 班 结 业 理 论 考 试 题 一 单 选 题, 合 计 90 题 : 1 马 克 思 主 义 诞 生 的 最 根 本 的 历 史 条 件 是? () A 工 人 运 动 的 兴 起 B 资 本 主 义 的 迅 速 发 展 C 社 会 主 义 思 想 的 高 涨 D 吸 取 人 类 优 秀 文 化 成

More information

就 构 成 了 盗 窃 罪 与 破 坏 交 通 设 施 罪 的 想 象 竞 合, 按 照 其 中 处 罚 较 重 的 犯 罪 处 罚 5. 答 案 :B 本 题 主 要 考 察 如 何 区 分 收 买 被 拐 卖 的 妇 女 儿 童 罪 与 拐 卖 妇 女 儿 童 罪 的 共 犯 问 题 ( 对 向

就 构 成 了 盗 窃 罪 与 破 坏 交 通 设 施 罪 的 想 象 竞 合, 按 照 其 中 处 罚 较 重 的 犯 罪 处 罚 5. 答 案 :B 本 题 主 要 考 察 如 何 区 分 收 买 被 拐 卖 的 妇 女 儿 童 罪 与 拐 卖 妇 女 儿 童 罪 的 共 犯 问 题 ( 对 向 新 东 方 全 国 法 律 硕 士 ( 非 法 学 ) 联 考 模 拟 考 试 专 业 基 础 课 答 案 解 析 一 单 项 选 择 题 1. 答 案 D 本 题 主 要 考 查 刑 法 分 则 中 关 于 亲 告 罪 与 非 亲 告 罪 的 规 定 要 注 意 这 些 亲 告 罪 在 有 特 别 的 情 况 下, 是 公 诉 犯 罪 我 国 刑 法 共 规 定 了 5 种 告 诉 才 处 理 的

More information

C++ 程序设计 实验 2 - 参考答案 MASTER 2017 年 5 月 21 日 1

C++ 程序设计 实验 2 - 参考答案 MASTER 2017 年 5 月 21 日 1 C++ 程序设计 实验 2 - 参考答案 MASTER 2017 年 5 月 21 日 1 1 CRECT 类 1 CRect 类 设计矩形类, 包含 长度和宽度信息 基本构造函数 基础属性的访问接口 ( 读 / 写, Read/Write, Get/Set) 计算周长和面积 ( 注 : 基本构造函数, 一个无参数的默认构造函数, 以及一个初始化数据成员的构造函数如果数据成员的初始化有多种形式, 就提供多个构造函数

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

精 品 库 我 们 的 都 是 精 品 _www.jingpinwenku.com 7. 根 据 中 华 人 民 共 和 国 会 计 法 的 规 定, 对 登 记 会 计 账 簿 不 符 合 规 定 的 单 位 县 级 以 上 人 民 政 府 财 政 部 门 责 令 限 期 改 正, 并 可 以 处

精 品 库 我 们 的 都 是 精 品 _www.jingpinwenku.com 7. 根 据 中 华 人 民 共 和 国 会 计 法 的 规 定, 对 登 记 会 计 账 簿 不 符 合 规 定 的 单 位 县 级 以 上 人 民 政 府 财 政 部 门 责 令 限 期 改 正, 并 可 以 处 北 京 市 会 计 从 业 资 格 无 纸 化 考 试 财 经 法 规 与 会 计 职 业 道 德 上 机 考 试 题 库 ( 五 ) 考 试 时 间 :60 分 钟 一 单 项 选 择 题 ( 本 题 共 20 分, 每 小 题 1 分 每 小 题 只 有 一 个 正 确 答 案, 多 选 错 选 漏 选, 不 得 分 ) 1. 纳 税 人 生 产 规 模 较 小 产 品 零 星 税 源 分 散

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

C++ 程式設計

C++ 程式設計 C C 料, 數, - 列 串 理 列 main 數串列 什 pointer) 數, 數, 數 數 省 不 不, 數 (1) 數, 不 數 * 料 * 數 int *int_ptr; char *ch_ptr; float *float_ptr; double *double_ptr; 數 (2) int i=3; int *ptr; ptr=&i; 1000 1012 ptr 數, 數 1004

More information

什么是函数式编程?

什么是函数式编程? 函数式编程 FUNCTIONAL PROGRAMMING byvoid@byvoid.com 什么是函数式编程? 真相是 从停机问题开始 Bug 假设有停机判定算法 function halting(func, input) { } return if_func_will_halt_on_input; 充分利用停机判定 function ni_ma(func) { if (halting(func,

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

國 立 台 南 二 中 104 學 年 度 第 二 學 期 第 一 次 期 中 考 高 三 國 文 科 解 答 壹 選 擇 題 1 B 2 B 3 C 4 A 5 A 6 C 7 B 8 C 9 B 10 D 11 A 12 D 13 A 14 B 15 B 16 D 17 A 18 AB 19 E

國 立 台 南 二 中 104 學 年 度 第 二 學 期 第 一 次 期 中 考 高 三 國 文 科 解 答 壹 選 擇 題 1 B 2 B 3 C 4 A 5 A 6 C 7 B 8 C 9 B 10 D 11 A 12 D 13 A 14 B 15 B 16 D 17 A 18 AB 19 E 國 立 台 南 二 中 104 學 年 度 第 二 學 期 第 一 次 期 中 考 高 三 國 文 科 解 答 壹 選 擇 題 1 B 2 B 3 C 4 A 5 A 6 C 7 B 8 C 9 B 10 D 11 A 12 D 13 A 14 B 15 B 16 D 17 A 18 AB 19 E 20 AD 21 BDE 22 ABCD 23 ABD 24 BD 解 析 1.(A) ㄌㄧˋ/ㄓㄣˇ

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

第3章.doc

第3章.doc 3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo

More information

考试大2011年高考试题答案

考试大2011年高考试题答案 持 续 更 新 中... 一 单 项 选 择 题 ( 本 类 题 共 30 小 题, 每 小 题 1 分, 共 30 分 每 小 题 备 选 答 案 中, 只 有 一 个 符 合 题 意 的 正 确 答 案 多 选 错 选 不 选 均 不 得 分 ) 1. 甲 乙 签 订 的 买 卖 合 同 中 订 有 有 效 的 仲 裁 条 款, 后 因 合 同 履 行 发 生 的 纠 纷, 乙 未 声 明 有

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

考 查 知 识 点 肝 气 疏 泄 调 畅 气 机 的 作 用, 主 要 表 现 在 以 下 几 个 方 面 :(1) 促 进 血 液 与 津 液 的 运 行 输 布 ;(2) 促 进 脾 胃 的 运 化 功 能 和 胆 汁 分 泌 排 泄 ;(3) 调 畅 情 志 ;(4) 促 进 男 子 排 精

考 查 知 识 点 肝 气 疏 泄 调 畅 气 机 的 作 用, 主 要 表 现 在 以 下 几 个 方 面 :(1) 促 进 血 液 与 津 液 的 运 行 输 布 ;(2) 促 进 脾 胃 的 运 化 功 能 和 胆 汁 分 泌 排 泄 ;(3) 调 畅 情 志 ;(4) 促 进 男 子 排 精 2015 年 全 国 硕 士 研 究 生 入 学 统 一 考 试 中 医 综 合 科 目 试 题 解 析 一 A 型 题 :1~80 小 题, 每 小 题 1.5 分, 共 120 分 在 每 小 题 给 出 的 A B C D 四 个 选 项 中, 请 选 出 一 项 最 符 合 题 目 要 求 的 1. 提 出 阳 常 有 余, 阴 常 不 足 观 点 的 医 家 是 A 朱 丹 溪 B 刘 完

More information

ebook55-13

ebook55-13 1 3 C + + C C + + 13.1 X 256 C + + p r i v a t e p u b l i c p e r m u t e () X X Y 13.2 Y Y X 13 257 Y X Y X X m a i n () s i z e o f ( Y s i z e o f ( X ) p u b l i c p r i v a t e p u b l i c p r i

More information

Microsoft Word - 专升本练习2:线性表.doc

Microsoft Word - 专升本练习2:线性表.doc 第二章 线性表 一 选择题 1. 线性表是 ( ) A. 一个有限序列, 可以为空 B. 一个有限序列, 不能为空 C. 一个有限序列, 可以为空 D. 一个无序序列, 不能为空 2. 对顺序存储的线性表, 设其长度为 n, 在任何位置上插入或删除操作都是等概率 插入一个元素 时大约要移动表中的 ( ) 个元素, 删除一个元素时大约要移动表中的 ( ) 个元素 A. n/2 B. (n+1)/2 C.

More information