重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一次就够了
海原网站建设公司创新互联建站,海原网站设计制作,有大型网站制作公司丰富经验。已为海原上1000家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的海原做网站的公司定做!
每次保留2个值,一个最大值,一次次大值。
每次先比较次大值,大就替换,然后次大值和最大值比。
没有时间写源程序,说说思想吧
设数组a[2],开始时赋值a[0]=a[1]=0
让a[1]依次和要求次大数的数组中元素比较,如果a[1]小于被比较的元素
{
a[0]=a[1];
a[1]=这个被比较的元素的值;
}
最后输出a[0]就可以了
#include stdio.h
void max(int a[],int n,int *pmax1,int *pmax2)
{
int i;
*pmax1=*pmax2=a[0]; // 初始值为第一个元素
for(i=1;in;i++) //循环整个数组
{
if(a[i]*pmax1) {*pmax2= *pmax1;*pmax1=a[i]; } //如果当前数比最大数大,赋给最大数
else if(a[i]*pmax2) *pmax2=a[i]; //如果没有最大数大,比第二大数大,赋给数
}
}
int main (){
int a[6]={2,4,56,23,45},pmax1,pmax2;
max(a,6,pmax1,pmax2);
printf("max1=%d,max2=%d\n",pmax1,pmax2);
return 0;
}
用数组的方法就OK了 楼上的方法正确 只是最后printf函数拼错罢了
我完善一下
#include stdio.h
void main()
{
printf("请输入10个整数/n");
int a[10];
int i,j,t;
for(i=0;i10;i++)
scanf("%d",a[i]);
printf("\n");
for(j=0;j9;j++)
for(i=0;i9-j;i++)
if(a[i]a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("输出次小值%d\n输出次大值%d\n",a[2],a[9]);
}