3454 - max
时间限制 : 1 秒
内存限制 : 128 MB
给定一堆数,输出该堆数中第二大的数
题目输入
有多组测试数据
对于每组测试数据,先输入一个N代表有N个数字,然后输入N个数字,所有输入是小于100的非负数
题目输出
输出第二大数,每个一行
输入/输出样例
输入格式
2 1 2 3 1 1 2 3 2 2 1
输出格式
1 1 1
C语言解答
#include<stdio.h> void main() { int max1,max,x,m; while(scanf("%d",&x)!=EOF) { max=max1=0; for(x;x>0;x--) { scanf("%d",&m); if(m>max){max1=max;max=m;} if(max>m&&max1<m)max1=m; } printf("%d\n",max1); } }
C++解答
#include <cstdio> #include <iostream> #include <cstring> #include <cmath> using namespace std; int main() { int n, a[200]; while(scanf("%d",&n) != EOF) { for(int i = 0 ; i < n ; i ++) scanf("%d",&a[i]); int max = -1, max2 = -1; for(int i = 0 ; i < n ; i ++) { if(a[i] > max) { max2 = max; max = a[i]; } else if (a[i] > max2 && a[i] != max) { max2 = a[i]; } } cout << max2 << endl; } //while(scanf("%d",&n) != EOF) //{ // int a, b, x, sum = 0; // for(int i = 0 ; i < n ; i ++) // { // cin >> x; // if(i == 0) // a = x; // if(x != a) // b = x; // if(x == a) // sum ++; // else // sum --; // } // if(sum > 0) // cout << a << endl; // else // cout << b << endl; //} }