
求解一道C++函数编程题,急!!!! 20
任务一:实现上述函数
任务二:将上述函数改为类,该类实现输入一组值,输出值中第二大数 展开
给你写一个! 你参考一下
#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 广告
/*
只对“返回在一维数组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;
}