回 帖 发 新 帖 刷新版面

主题:一道简单的菜鸟编程题

有十个数进行排序,把倒数第三个数排在第一位

回复列表 (共8个回复)

沙发

把你写的代码贴出来吧~大家帮你找出你的问题所在

板凳


#include <stdio.h>
void main()
{
   int a[10]={45,56,25,23,21,64,75,15,28,93};
   int i,j,k,l;
   printf("the old numbers  are:\n");
   for(i=0;i<=9;i++)
   printf("\n the sorted numbers are: \n");
   for(j=0;j<=9;j++)
      for(i=0;i<=9-j;i++)
         if(a[i>a[i+1])
         {k=a[i];a[i]=a[i+!];a[i+!]=k;}
printf("\n the sorted numbers are :\n");
l=a[9];
a[9]=a[7];
a[7]=l;
for(i=0;i<=9;i++)
  printf("%d",a[i]);
}
各位大虾,这是我编地,感觉有很多错误,请指教!

3 楼


题目有点问题,是把第三大地数排在第一位

4 楼

你可以先把它按从小到大或从大到小排列,然后在把第3个和第一个的位置换一下就可以拉~

5 楼

我没装C 下面是一个C++的
# include <iostream>
# define N 10
double  a[]={2.1,3.7,3.5,2.9,2.7,2.3,3.3,2.5,3.1,3.9};
using namespace std;
class QuickSort
{
    int low,high;
 public:
     QuickSort(int ,int);
     void qkSort();
     int part();
     void prnt();
};
QuickSort::QuickSort(int l,int h)
{
    low=l;
    high=h;
}
int QuickSort::part()
{
    int i,j;
    float p;
    i=low,j=high;
    p=a[low];
    while (i<j)
    {
       while(i<j && a[j]>=p)
       { j--;}
            a[i]=a[j];
       while(i<j && a[i]<=p)
       { i++;}
            a[j]=a[i];
    }
    a[i]=p;
    return(i);
}
void QuickSort::qkSort()
{
    int i;
    int ih, il;
    if(low<high)
    {
        i=part();
        ih = high;
        il = low;

        high=i-1;
        qkSort();
        high = ih;
        
        low=i+1;
        qkSort();
        low = il;
    }
    else
        return;
}
void QuickSort::prnt()
{
  cout<<"\n sorted sequence is:\n";
  for(int i=0;i<=N-1;i++)
      cout<<a[i]<<endl;
}

void main()
{
    int m=0,n=N-1;
    QuickSort qs (m,n);
    qs.qkSort();
    qs.prnt();

}

6 楼

#include <iostream>
using namespace std;
int main()
{int i,j,k,t,a[10];
for(i=0;i<=9;i++)
cin>>a[i];
for(i=0;i<=8;i++)
for(j=0;j<=8-i;j++)
if(a[j]>a[j+1]) {k=a[j];a[j]=a[j+1];a[j+1]=k;}
t=a[0];a[0]=a[7];a[7]=t;
for(i=0;i<=9;i++)
cout<<a[i]<<" ";

return 0;}

7 楼

这是我改进的
你原来的没多大错就是太粗心了
你好好找找有两个同样的低级错误 
要认真噢

#include <stdio.h>
void main()
{
   int a[10]={45,56,25,23,21,64,75,15,28,93};
   int i,j,k,l;
   //printf("the old numbers  are:\n");
   //for(i=0;i<=9;i++)
   //printf("\n the sorted numbers are: \n");
   for(j=0;j<=9;j++)
      for(i=0;i<=9-j;i++)
         if(a[i]>a[i+1])
         {k=a[i];a[i]=a[i+1];a[i+1]=k;}
printf("\n the sorted numbers are :\n");
l=a[9];
a[9]=a[7];
a[7]=l;
for(i=0;i<=9;i++)
  printf("%d\n",a[i]);
}


另外你的题目意思是把倒数第三个数放在第一位(已经实现了)  那题目怎么又讲十个数排序(我没理解是什么意思)

8 楼

#include <iostream.h>
int main()
{
    int a[10]={12,67,98,32,43,28,29,24,94,59};
    int w,i;
    for(i=0;i<10;i++)
        for(int j=9;j>=i+1;j--)
            if(a[j]<a[j-1])
            {
                w=a[j];
                a[j]=a[j-1];
                a[j-1]=w;
            }
            w=a[9];
            a[9]=a[7];
            a[7]=w;
            for(i=0;i<10;i++)
            {
                cout<<a[i]<<' ';
            }
            return 0;
}

我来回复

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