C语言:求最大、次大、最小和次小值
发布网友
发布时间:2022-05-04 12:53
我来回答
共1个回答
热心网友
时间:2022-06-22 02:22
cout是我的输出语句,你改成printf即可。
#include "iostream"
using namespace std;
int main()
{
//下面2个数组,实际中由你自己从键盘输入中获取
int a[] = {6,8,1,3,4,7,9,0,2,5}; //整数
int b[] = {15,17,16,12,18,14,19,10,13,11}; //序号
int temp_a ;
int temp_b ;
int len = 10; //这里len,按照你的输入数n来定
//最大值沉底,操作2次,求出最大和次大。
for(int j=0; j<2; j++)
{
int len_temp = len - j;//改变len_temp长度,使得程序不做重复的操作
for(int i=1; i<len; i++)
{
if(a[i-1]>a[i])
{
temp_a = a[i];
a[i] = a[i-1];
a[i-1] = temp_a;
//同样操作对b[]
temp_b = b[i];
b[i] = b[i-1];
b[i-1] = temp_b;
}
}
}
//这里把最后2个值拿出来就是你的2个最大值
cout << a[9]<<endl //对应为 a[n-1]
<< a[8]<<endl; // a[n-2]
//最小值沉底,操作2次,求出最小和次小。
for(int x=0; x<2; x++)
{
int len_temp = len - x; //改变len_temp长度,使得程序不做重复的操作
for(int y=1; y<len; y++)
{
if(a[y-1]<a[y])
{
temp_a = a[y];
a[y] = a[y-1];
a[y-1] = temp_a;
//同样操作对b[]
temp_b = b[y];
b[y] = b[y-1];
b[y-1] = temp_b;
}
}
}
//这里把最后2个值拿出来就是你的2个最小值
cout << a[9]<<endl //对应为 a[n-1]
<< a[8]<<endl; // a[n-2]
return 0;
}