练习题(一)
一、编程题。根据程序要求,写出函数的完整定义。
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