概述
首先在main方法里面定义一个整型数组,然后调用getMin()方法,getMin方法首先传入两个参数(一个是数组参数,另一个是数组长度),在方法里面通过for if 来判断!先是求出最值的下标,然后把最值下标i赋值给b,再判断buf[i]!=buf[b]后,再继续便利这个没有最小值的数组,再将这个没有最小值的数组再求最小值就得到了次最值!
#include<iostream>
using namespace std;
/*
功能:求最小值
函数名:getMin
返回值类型:int
*/
int getMin(int buf[100],int ilen)
{
//buf[0]=999;
int listen=0;
int b=0;
for(int i=0;i<9;i++)
{
if(buf[b]>buf[i])
{
b=i;
}
if(buf[i]!=buf[b])
{
for(int y=0;y<9;y++)
{
if(buf[listen]>buf[i])
{
listen=i;
}
}
}
}
return buf[listen];
}
int main()
{
//定义一个整型数组
int buf[100]={11,9,2,5,4,33,6,8,7};
cout<<"调用之前:buf[0]="<<buf[0]<<endl;
//调用函数:
cout<<getMin(buf,9)<<endl;
//cout<<"调用之后:"<<buf[0]<<endl;
}
第二种方法.
#include<iostream>
using namespace std;
//求次大值的元素
int GetS(int buf[100],int ilen)
{
int mlisten,i,slisten; //最大值
for(i=0,mlisten=0,slisten=0;i<ilen;i++)
{
if(buf[mlisten]<buf[i])
{
slisten=mlisten; //之前的最大值成为次大值
mlisten=i;
}
else if(buf[i]>buf[slisten]) //如果新元素比最大值小
{
slisten=i;
}
}
return slisten;
}
//求次大值
int GetS(double buf[100],int ilen)
{
int mlisten,i,slisten; //最大值
for(i=1,mlisten=0,slisten=0;i<ilen;i++)
{
if(buf[mlisten]<buf[i])
{
slisten=mlisten; //之前的最大值成为次大值
mlisten=i;
}
else if(buf[i]>buf[slisten] || slisten==mlisten) //如果新元素比最大值小
{
slisten=i;
}
}
return slisten;
}
//主函数
int main()
{
int buf[100]={1,2,6,5,3,4,7,9,8};
double score[100]={99.9,98.1,78.9,58.9};
//调用函数
cout<<GetS(buf,9)<<endl;
cout<<score[GetS(score,4)]<<endl;
}
最后
以上就是酷酷金鱼为你收集整理的C++求次最值的全部内容,希望文章能够帮你解决C++求次最值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复