求解一道C++函数编程题,急!!!! 20

编写函数intfind_see_max(intx[],intn),其功能是返回在一维数组x的n个整数中第二大的数。要求在完成处理后,数组中的数据不能有任何改变。在main... 编写函数int find_see_max(int x[],int n),其功能是返回在一维数组x的n个整数中第二大的数。要求在完成处理后,数组中的数据不能有任何改变。在main()函数,对从键盘输入的10个整数,通过调用find_see_max f()求出第二大的数并输出。
任务一:实现上述函数
任务二:将上述函数改为类,该类实现输入一组值,输出值中第二大数
展开
 我来答
帐号已注销
2013-05-16 · TA获得超过3956个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1362万
展开全部

给你写一个!  你参考一下


#include <iostream>

#include <algorithm>

#include <vector>


template<class T, int N> 

T second(T (&arr)[N]) {

    T f = arr[0], s = arr[0];

    for(size_t i = 0; i < N; i++)

        if(arr[i] > f) {

            std::swap(f, arr[i]);

            std::swap(arr[i], s);

        } else {

            if(arr[i] > s)

                std::swap(arr[i], s);

       }

    return s;

}  


template<class T>

class Second {

    std::vector<T> buf;

public:

    T operator () (T terminate) {

        T tem;

        do {

            std::cin >> tem;

            buf.push_back(tem);

        } while(tem != terminate);

        std::sort(buf.begin(), buf.end());

        return (buf.size() > 1) ? buf[buf.size() - 2] : buf[0]; 

    }

};


int main() {

    int a[] = {1, 2, 34, 4, 67, 6, 7, 8, 9, 0};

    double d[] = {23.5, 56.7, 34.5, 98.0, 87.9};

    char ch[] = {'a', 'c', 'e', 'f', 'z'};

    std::cout << second(a) << std::endl;

    std::cout << second(d) << std::endl;

    std::cout << second(ch) << std::endl;


    Second<int> ss;

    std::cout << ss(-1) << std::endl;

}

追问
1>c:\documents and settings\administrator\桌面\上机作业\上机作业\上机作业.cpp(67) : error C2601: “main”: 本地函数定义是非法的
1> c:\documents and settings\administrator\桌面\上机作业\上机作业\上机作业.cpp(67): 此行有一个“{”没有匹配项

这怎么破 用的是Microsoft Visual Studio 2008 软件
追答
我用的是GCC编译器,中午回去给你看看
百瑞环保
2025-10-15 广告
百瑞环保科技(上海)有限公司,是中美团队合作的科技企业,有着丰富的国际资源和技术优势。自成立以来,百瑞一直保持着快速和有质量的发展,目前客户已经遍及中国的每个省份并出口一些其他国家。我们的团队在中国五个中心城市为客户提供优质的服务。百瑞的实... 点击进入详情页
本回答由百瑞环保提供
储炜歌0h1
2013-05-16 · 超过15用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:45.7万
展开全部
/*
只对“返回在一维数组x的n个整数中第二大的数”这个感兴趣
动态指定数组大小,这个得等大虾来解答……
(偶不会,偶只是小虾米一只:)
*/
int find_see_max(int x[10],int n)
{
    int max=x[0];
    int second=x[0];
    for(int i=0;i<10;i++)
    {
        //先判断出最大值。
        if(x[i]>max)
             max=x[i];
        //小于最大值中的“最大值”。即第二大的值
        else if(x[i]>second)
            second=x[i];
    }
     return second;
}

 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式