数据结构,算法与应用 C++语言描述 练习答案1.2函数与参数

数据结构,算法与应用 C++语言描述 练习答案1.2函数与参数

1.修改代码,使实参的值得到交换:

void swap(int &x,int &y){
int temp=x;
x=y;
y=temp;
}

2.编写一个模板函数count,返回值是数组a[0,n-1]中value出现的次数。

template <class T>

int count(T& a,int value) {
    int i = 0, j = 0,n;
    n = (sizeof(a) / sizeof(a[0]));
    for (i = 0; i < n; i++) {
        if (a[i] == value)
        {
            j++;
        }
    }
    return j;
}

3.编写一个模板函数fill,给数组a[start:end-1]赋值value。

template<class T>
void fill(T * a, int start, int end, const T & value)
 {while (start != end) {
     a[start++] = value;   }
     }

4.编写一个模板函数inner_product,返回值是a[i]b[i] (i从0到n-1).

template <class T>
int inner_product(T *a,T *b,int n) {
    int i = 0, sum = 0;
        for (i = 0; i < n; i++) {
            sum += a[i] * b[i];
        }
    
    return sum;
}

5.编写一个模板函数iota,使a[i]=value+i,0<=i<n.(要注意用for来遍历数组中的每个元素,如果只使用cout输出a的话会出现乱码

template <class T>
void iota(T *a,T value,int n) {
        int i ;
        for (i = 0; i < n; i++) {
            a[i] = value + i;}
}
/*int main() {
    int a[7] ;
    iota(a,4,7);
    for (auto x : a) {
        cout << x << " ";
    }
         return 0;
}*/

6.编写一个模板函数is_sorted,当且仅当a[0:n-1]有序时,返回值是true。

template <class T>
bool is_sorted(T *a,int n) {
    int f = 1, ff = 1;
    for (int i = 0; i < n - 1; i++) {
        if (a[i] < a[i + 1]){
            f = 0;
            }
        if (a[i] > a[i + 1]) {
            ff = 0;
        }
    }
    if (f == 1 || ff == 1)
        return true;
    else
        return false;
}//通过运行结果我们可以看到,所有元素相同的数组也被认为是有序数组

7.编写一个模板函数mismatch,返回值是使不等式a[i]不等于b[i]成立的最小索引i,0=<i<n.
(这里题设描述的不是很准确,可以认为n=lengtha[ ]=lengthb[ ])

template<class T>
int mismatch(T* a, T* b, int length) {
    for (int i = 0; i < length; i++) {
        if (a[i] != b[i]) {
            return i;
        }
    }
    return -1;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值