回 帖 发 新 帖 刷新版面

主题:求助

#include<iostream.h>
int main() 
{ int m,i,j,k,a[1000],N,t;
  cin>>N;
  while(N<2);
  cin>>N;
  for(k=0;k<N;k++)
  cin>>a[k];
  for(i=0;i<N-1;i++)
  {m=i;
  for(j=i+1;j<N;j++)
  if(a[i]<a[j])
  { m=j;
  t=a[m];
  a[m]=a[i];
  a[i]=t;}
  }
  cout<<a[N-1]<<" "<<a[N-2]<<endl;
  return 0;
}
 我想让此程序输出的是最小的两个数,为啥此程序输出的不是最小的两个数?哪里错了
  

回复列表 (共2个回复)

沙发

#include<iostream>
using namespace std;

int main()
{
    int m,i,j,k,N,t;
    int *a;
    cin>>N;
    if ( N<2 )
    {
        return 0;
    }
    a = new int[N];

    for(k=0;k<N;k++)
        cin>>a[k];

    for(i=0;i<N;i++)
    {
        m=i;
        for(j=i+1;j<N;j++)
            if(a[i]<a[j])
            {
                m=j;
                t=a[m];
                a[m]=a[i];
                a[i]=t;
            }
    }
    cout<<a[N-1]<<""<<a[N-2]<<endl;

    return 0;
}

板凳


#include<iostream>
using namespace std;

int main()

  int m,i,j,k,a[1000],N,t;
  cin>>N;
  while(N<2);
    cin>>N;
  for(k=0;k<N;k++)
    cin>>a[k];
  for(i=0;i<2;i++){  //找最小的两个数,第一小的存在a[0]中,第二小的存在a[1]中
    for(j=i;j<N;j++)
    if(a[j] < a[i]){ 
      t = a[j];
      a[j] =  a[i];
      a[i] =t ;
    }
  }
  cout<<a[0]<<" "<<a[1]<<endl;
  return 0;
}[code=c]
请填写代码
[/code]

我来回复

您尚未登录,请登录后再回复。点此登录或注册