严蔚敏数据结构习题——第一章(部分)

本文探讨了程序设计中的三种常见错误处理方法,并通过一个具体的阶乘计算例子展示了如何运用这些方法。代码实现了计算i!⋅2^i的值,并在超出整数范围时进行错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.6 在程序设计中,常用下列三种不同的出错处理方式:
(1) 用exit语句终止执行并报告错误;
(2) 以函数的返回值区别正确返回或错误返回;
(3) 设置一个整型变量的函数参数以区别正确返回或某种错误返回。
试讨论这三种方法各自的优缺点。

(1) exit常用于异常错误处理,他可以强行中断程序的执行,返回操作系统。
(2) 以函数的返回值判断正确与否常用于子程序的测试,便于实现程序的局部控制。
(3)用整型函数进行错误处理的有点事可以给出错误类型,便于迅速确定错误。


试编写算法,计算 i!2i 的值并存入数组a[0..arrsize-1]的第i-1个分量中(i=1,2,…,n)。假设计算机中允许的整数最大值为maxint,则当n>arrsize或对某个 k(1kn) ,使 k!2k >MAXINT时,应按出错处理。注意选择你认为较好的出错处理方法。

#include <iostream>
#include <math.h>
#include <stdlib.h>
#define MAXINT 65535
#define ArrSize 100

using namespace std;

int main(void)
{
    int k, i;
    int a[ArrSize];
    cout << "Enter k:" << endl;
    cin >> k;
    if ( k > ArrSize - 1)
        exit(0);
    for (i = 0; i <= k; i++) {
        if (i == 0)
            a[i] = 1;
        else {
            if (2 * i*a[i-1] > MAXINT)
                exit(0);
            else a[i] = 2 * i * a[i - 1];
        }
    }

    for (i = 0; i <= k; i++) {
        if (a[i] > MAXINT)
            exit(0);
        else
            cout << a[i] <<endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值