本文主要是介绍东华大学 2022 oj c++ 无超纲写法 谁是老二?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//还是那句话,建议大家先学函数,这样代码写的更有条理
AC代码:
#include<iostream>
#include<iomanip>
#include<math.h>
#include<cstring>
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<bits/stdc++.h>
void Rank(int a[], int n)//a为给定的数组,n为该数组的有效长度
{for (int i = 1; i < n; i++){for (int j = 0; j < n - i; j++){if (a[j] > a[j + 1]){int temp = a[j + 1];a[j + 1] = a[j];a[j] = temp;}}}
};
int second(int a[], int n)//设计一个函数找出给定数组的第二大的值
{Rank(a, n);for (int i = n - 1; i >= 0; i--){if (a[i] != a[n - 1]){return(a[i]);}}
};
using namespace std;
int main()
{//下测试排序函数是否正确/*int a[10] = { 1,5,3,5 };Rank(a, 4);for (int i = 0;i < 4; i++){cout << a[i];}*///下测试second函数是否正确/*int a[5] = { 0,0,-1,-2,-3 };cout << second(a, 5);*/int n = 0;int a[150];int b[150];while (cin >> n)//n为数组有效长度{for (int i = 0; i < n; i++){cin >> a[i];b[i] = a[i];//因为a等会要进行重排,故把a原来的序列保存到b中}Rank(a, n);//将a按照从小到大的顺序重排if (a[0] == a[n - 1])//判断整个数组是否都是一个值{cout << "none" << endl;continue;}else{int sec =0;sec = second(a, n);//找到“老二”的值cout << sec; for (int k = 0; k < n; k++){if (b[k] == sec)//输出对应的值的下标{cout << " " << k;//注意格式}}cout << endl;}}//system("pause");return 0;
}
这篇关于东华大学 2022 oj c++ 无超纲写法 谁是老二?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!