-->
当前位置:首页 > 题库 > 正文内容

程序填空题:异常处理程序填空

Luz4年前 (2021-05-10)题库1761
下面程序定义栈类模板StackTemplate,创建栈对象存储斐波那契数列的前10项数值,并以后进先出的方式取出元素并输出,输出结果为:55 34 21 13 8 5 3 2 1 1。其中void push(const T& i)函数为添加元素、T pop()函数为取出栈顶元素,int fibonacci(int n)函数为计算斐波那契数列的第n项值。在计算斐波那契数列值、添加元素和取出元素的过程中要进行上溢(OverFlow)或者下溢(UnderFlow)的异常处理。请补充空白处的代码(每空1分)。

```c++
#include
using namespace std;

enum ERROR{UnderFlow,OverFlow};

template
class StackTemplate {
enum { ssize = 100 };
T stack[ssize];
int top;
public:
StackTemplate() : top(0) {}
void push(const T& i) {
if (top >= ssize)
@@[throw OverFlow](1);
stack[top++] = i;
}
T pop() {
if (@@[top <= 0](1))
throw UnderFlow;
return @@[stack[--top]](1);
}
int size() const{
return top;
}
};
int fibonacci(int n);
int main() {
@@[try](1) {
@@[StackTemplate](1) is;
for(int i = 0; i < 10; i++)
is.push(fibonacci(i));
for(int k = 0; k < 10; k++)
cout << is.pop() << "\t";
}
catch( ERROR e ) {
switch(@@[e](1) ) {
case OverFlow: exit;
case UnderFlow: exit;
}
}
catch(...) {
}
return 0;
}

int fibonacci(int n) {
@@[const](1) int sz = 100;
int i;
static int f[sz];
if (n >= sz)
@@[throw OverFlow](1);
f[0] = f[1] = 1;
for(i = 0; i < sz; i++)
if(f[i] == 0) break;
while(i <= n) {
@@[f[i]](1) = f[i-1] + f[i-2];
i++;
}
return @@[f[n]](1);
}
```






答案:
第1空:throw OverFlow

第2空:top <= 0

第3空:stack[--top]

第4空:try

第5空:StackTemplate

第6空:e

第7空:const

第8空:throw OverFlow

第9空:f[i]

第10空:f[n]

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。