C++练习题及解答----练习题(一)

文章作者 100test 发表时间 2007:04:06 21:28:33
来源 100Test.Com百考试题网


练习题(一)

一、编程题。根据程序要求,写出函数的完整定义。

1.写一个函数,找出给定字符串中大写字母字符(即’A’-‘Z’26个字母)的个数(如字符串”China Computer Wrold”中大写字母字符的个数为3个)。

函数的原型 int CalcCapital (char *str).

函数参数 str为所要处理的字符串;

函数返回值:所给字符串中数字字符的个数

2.写一个函数,用递归函数完成以下运算:

sum(n) = 1 – 1/2 1/3 – 1/4 … -(1/n)*(-1)n (其中n>0

函数原型 float sum(int n).

函数参数n为正整数。

函数返回值:相应于给定的n,右边表达式运算结果。

提示:你可以使用递归表达式: sum(n) = sum(n-1) -(1/n)*(-1)n

3. 给定新数值,在一个按节点所存放数值从大到小排序的链表中,找适当位置插一个新节点,仍保持有序的链表,写一个函数,完成此操作。

函数的原型 Node * InsNode(Node * head, int newValue).

其中,链表节点的定义如下:

struct Nodee{

int Value. //存放数值

Node * next. //指向链表中的下一个节点

}.

函数参数:函数的第一个参数head指向链表头一节点的指针,如果链表为空,则head的值为NULL。第二个参数newValue为所给定的插入新节点的新数值。

函数返回值:当成功地插入新的节点时,函数返回指向新链表头一节点的指针,否则,若不能申请到内存空间,则返回NULL

4.写一个函数,找出给定数组中具有最小值的元素。

函数的原型

char MinCode(char charAry[]).

函数参数charAry所要处理的字符数组名;

函数返回值:返回具有最小ASCII码的字符。

二、理解问答题:

下面的文件stack.h是一个堆栈类模板Stack的完整实现。在这个文件中,首先定义了一个堆栈元素类模板StackItem,然后,在这个类的基础上定义了堆栈类模板Stack。在Stack中使用链表存放堆栈的各个元素,top指针指向链表的第一个节点元素,bottom指针指向链表的最后一个节点元素,成员函数push()将一个新节点元素加入(压进)到堆栈顶部,pop()从堆栈顶部删除(弹出)一个节点元素。为方便起见,程序中加上了行号。阅读程序,根据程序后面的问题作出相应解答。

1. /*---------------------------------------------------------- -------------------*/

2. /********************* 文件stack.h ************************/

3. /*---------------------------------------------------------- -------------------*/

4. template

5. class Stack.

6. /***************** 定义模板类StackItem ******************/

7. template

8. class StackItem

9. {

10. public:

11. StackItem(const Type &. elem):item(elem) {}

12. ~StackItem() {}

13. private:

14. Type item.

15. StackItem * nextItem.

16. friend class Stack.

17. }.

18. /***************** 定义模板类Stack *********************/

19. template

20. class Stack

21. {

22. public:

23. Stack():top( NULL), ____(A)_____ {}

24. ~Stack().

25. Type pop().

26. void push(const Type &.).

27. bool is_empty() const { return ____(B) ______ . }

28. private:

29. StackItem * top.

30. StackItem * bottom.

31. }.

32. //模板类Stack的函数成员pop()的实现。

33. //从堆栈顶弹出一个节点,并返回该节点的值

34. template

35. Type Stack::pop()

36. {

37. StackItem *ptop. //指向顶部节点的临时指针

38. Type retVal. //返回值

39. ______(C) ________.

40. retVal = top->item.

41. top = top->nextItem.

42. 0delete ptop.

43. return retVal.

44. }

45. //模板类Stack的函数成员push()的实现

46. template

47. void Stack::push(const Type &. newItem)

48. {

49. StackItem *pNew = new StackItem( newItem).

50. ______(D)___________.

51. if (bottom == NULL) bottom = top = pNew.

52. else _____(E)_________.

53. }

54. //模板类Stack的析构函数~Stack()的实现

55. template

56. Stack::~Stack()

57. {

58. StackItem *p = top, *q.

59. while(p != NULL) {

60. q = p->nextItem.

61. 0delete p.

62. p = q.

63. }

64. }

问题1 程序中有几处填空,将它们完成。

A_________________________________________________

B_________________________________________________

C_________________________________________________

D_________________________________________________

E_________________________________________________

问题2程序第45行有什么作用?如果没有这两行语句,程序还正确吗?

问题3程序中多处出现const,请分别说明它们各自表示什么含义。

问题4程序中模板类Stack的析构函数主要做了什么事情?为什么要这么做?

问题5下面的程序使用了stack.h文件中定义的类模板,请说明下列程序中定义堆栈对象的语句(1-5)是否正确。

#include “stack.h”

void main()

{

Stack q1. // 1

Stack q2. // 2

Stack q3(10). // 3

Stack q4[10]. // 4

Stack *q5 = new Stack. // 5

//....

0delete q5.

}

答:

语句号

1

2

3

4

5

/



相关文章


C++练习题及解答----练习题(二)
C++练习题及解答----练习题(二)参考答案
C++练习题及解答----练习题(一)参考答案
精选二级C 练习试题
C++练习题及解答----练习题(一)
二级模拟试题:C 习题与解析(友元-05)
二级模拟试题:C 习题与解析(友元-04)
二级模拟试题:C 习题与解析(友元-02)
二级模拟试题:C 习题与解析(友元-01)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛