1. 试编写一个模板函数I n p u t,它要求用户输入一个非负数,并负责验证用户所输入的数是否真的大于或等于0,如果不是,它将告诉用户该输入非法,需要重新输入一个数。在函数非成功退出之前,应给用户三次机会。如果输入成功,函数应当把所输入的数作为引用参数返回。输入成功时,函数应返回true, 否则返回f a l s e。上机测试该函数。

 

2. 试编写一个模板函数,用来测试数组a中的元素是否按升序排列(即a [ i ]≤a [ i + 1 ] ,其中0≤i<n - 1)。如果不是,函数应返回f a l s e,否则应返回t r u e。上机测试该函数。

bool AscendingSort(T a[],int n)
{
    bool flag=true;
    for(int i=0; i<n-1; i++)
    {
        if(a[i]>a[i+1])
        {
            flag=false;
            break;
        }
    }
    return flag;
}


3. 试编写一个非递归函数来计算n!,并上机测试函数的正确性。

int N(int n)
{
    int sum=1;
    for(int i=1; i<=n; i++)
        sum*=i;
    return sum;
}


4. 1) 试编写一个计算斐波那契数列F n 的递归函数,并上机测试其正确性。
2) 试说明对于任何n> 2的整数,调用1)中的函数计算F n 时,同一个F i 会被处理至少一次。
3) 试编写一个非递归的函数来计算斐波那契数列F n ,该函数应能直接计算出每个斐波那
契数。上机测试代码的正确性。


5. 试编写一个递归函数,用来输出n 个元素的所有子集。例如,三个元素{a, b, c} 的所有子集是:{ }(空集),{a}, {b}, {c}, {a, b}, {a, c}, {b, c} 和{a, b, c}。


6. 试编写一个递归函数来确定元素x 是否属于数组a[ 0:n- 1 ]。