想当初因为对第二个for所管理的范围不清楚而理解不明白,被折磨了好久...现在看还是挺容易的,虽然感觉大部分还是靠背出来的:)
#include<iostream>
using namespace std;
int main()
{
int a[5],i,j,k,s;
for(i=0;i<5;i++)
cin>>a[i];
for(i=0;i<4;i++) //一共5个数外层循环只需4次,排完4个数第5个数自然定了
{
k=i;
for(j=i+1;j<5;j++) //第一次比较4次,第二次比较3次...
if(a[k]<a[j]) k=j; //这一段就是a[k]存储最大的那个数,之后就不归第二个for管了
if(k!=i) //把最大值存到a[i]
{
s=a[i];
a[i]=a[k];
a[k]=s;}
for(i=0;i<5;i++) //验证一下吧
cout<<a[i];
}
}