C++-练习-59

 题目:

编写模板函数maxn(),它将由一个T类型元素组成的数组和一个表示数组元素数目的整数作为参数,并返回数组中最大的元素。在程序对它进行测试,该程序使用一个包含6个int元素的数组和一个包含4个double元素的数组来调用该函数。

程序还包含一个具体化,它将char指针数组和数组中的指针数量作为参数,并返回最长的字符串的地址。如果由多个这样的字符串,则返回其中第一个字符串的地址。如果有多个这样的字符串,则返回其中第一个字符串的地址。使用由5个字符串组成的数组来测试该具体化。

源代码:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

template <typename T>
T* MAX(T* arr,const int size);

template <> char* MAX(char * arr,int size);

int main()
{
    int num_one[6] = { 2,5,3,8,1,9 };
    double num_two[4] = { 2.5,5.6,3.1,4.5 };
    const char* arr[3] = {
        "hello","world","my friend"
    };
    cout << MAX(num_one,6) << " " << *MAX(num_one,6) << endl;
    cout << MAX(num_two,4) << " " << *MAX(num_two,4) << endl;
    cout << MAX(arr, 3) << " " << *MAX(arr, 3) << endl;
    return 0;
}

template <typename T>
T* MAX(T* arr,const int size)
{
    T* max = arr;
    for (int i = 1; i < size; i++)
    {
        if (arr[i] > *max)
            max = arr+i;
    }
    return max;
}

template <> char* MAX(char* arr, int size)
{
    char* tmp = arr;
    int max = strlen(arr);
    for (int i = 1; i < size; i++)
    {
        if (strlen(arr + i) > max)
        {
            tmp = arr + i;
            max = strlen(arr + i);
        }
    }
    return tmp;
}

演示效果: 

1cd383f74c028f6f0606b612e4d702a3.png


如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

猜你喜欢

转载自blog.csdn.net/little_startoo/article/details/143103678