求出a所指数组中最大和次最大数(规定最大数和次最大数不在a[0]和a[1]中),依次和a[0],和a[1]中的数对调
例如数组中原有的数为:7,10,12,0,3,6,9,11,5,8。
输出结果为:12,11,7,0,3,6,9,10,5,8
求出a所指数组中最大和次最大数(规定最大数和次最大数不在a[0]和a[1]中),依次和a[0],和a[1]中的数对调
例如数组中原有的数为:7,10,12,0,3,6,9,11,5,8。
输出结果为:12,11,7,0,3,6,9,10,5,8
int s[10],first,second,i;
first=2,second=1;
for(i=3;i<10;i++)
if(s[i]>s[first])first=i;
else if(s[i]>s[second])second=i;
i=s[0];s[0]=s[first];s[first]=i;
i=s[1];s[1]=s[second];s[second]=i;
int s[10],first,second,i;
first=2,second=1; //因为最大数不是第一个和第二个,所以我将最大数暂时指向第三个,第二大的要比第一大的小,所以指向第二。
for(i=3;i<10;i++)
if(s[i]>s[first])first=i; //如果后面的有比first还大的,就将first指向他
else if(s[i]>s[second])second=i; //如果你first小但是比second大,就暂时算第二大
i=s[0];s[0]=s[first];s[first]=i; //这里是交换数组元素
i=s[1];s[1]=s[second];s[second]=i;
老大,不行啊,再帮帮忙好?
改为
int s[10],first,second,i;
first=2,second=1;
for(i=3;i<10;i++)
{if(s[i]>s[first])
{first=i;
i=s[0];s[0]=s[first];s[first]=i;
}
else
{
if(s[i]>s[second])
second=i;
i=s[1];s[1]=s[second];s[second]=i;
}
}
#include <stdio.h> void main() { int s[10]={7,10,12,0,3,6,9,11,5,8},first,second,i;
first=2,second=1;
for(i=3;i<10;i++)
if(s[i]>s[first])first=i;
else if(s[i]>s[second])second=i;
i=s[0];s[0]=s[first];s[first]=i;
i=s[1];s[1]=s[second];s[second]=i; for(i=0;i<10;i++)printf("%d ",s[i]); }
VC6.0下编译通过,结果正确