当前位置: 代码迷 >> C语言 >> 冒泡排列哪里错了。
  详细解决方案

冒泡排列哪里错了。

热度:353   发布时间:2005-08-15 16:50:00.0
冒泡排列哪里错了。
#define N 10
void main()
{int a[N+1];int i,j,t;
printf("please inpute 10 number:\n");
for(i=1;i<=N;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=N-1;j++)
  for(i=1;i<N-j;i++)
  if(a[i]>a[i+1])
  {t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the scorted numbers:\n");
for(i=1;i<=N;i++)
printf("%d   ",a[i]);
getch();
}
如果最后一个比最后第2个小,最后一个就排不出来。
搜索更多相关的解决方案: 排列  printf  冒泡  numbers  void  

----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define  MAX 10
void main(void)
{
int Num[MAX];
for(int i=0;i<MAX;i++)
{
  printf("请输入第%d个数:",i);
  scanf("%d",&Num[i]);
}
for(int i=0;i<MAX-1;i++)
{
  for(int j=MAX-1;j>i;j--)
  {
   if( Num[j] > Num[j-1] )
   {
    int temp = Num[j];
    Num[j] = Num[j-1];
    Num[j-1] = temp;
   }
  }
}
printf("第一次排序的结果为:\n");
for(int i=0;i<MAX;i++)
{
  printf("%3d ",Num[i]);
}
printf("\n");
}
----------------解决方案--------------------------------------------------------
。。。。。。。。。。。。
----------------解决方案--------------------------------------------------------
你的根本不能运行。
----------------解决方案--------------------------------------------------------

开始执行排序的循环语句有问题吧,你的是for(j=1;j<=N-1;j++) for(i=1;i<N-j;i++)

其中下面的一个for语句中,你的i 是i<N-j,这样会丢了最后的一个吧,因为当你的j=1时,i<9,而你的i是从1开始的,这样的话,只有8个数吧,,,,应该写为i<=N-j吧,,,

现在有事,所以我也只是看看而已,感觉上是这样错了,你再自己看看吧,试一试


----------------解决方案--------------------------------------------------------
#define N 10
void main()
{int a[N+1];int i,j,t;
printf("please inpute 10 number:\n");
for(i=1;i&lt;=N;i++)
scanf("%d",&amp;a[i]);
printf("\n");
for(j=1;j&lt;=N;j++)
  for(i=1;i&lt;=N-j;i++)
  if(a[i]&gt;a[i+1])
  {t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the scorted numbers:\n");
for(i=1;i&lt;=N;i++)
printf("%d",a[i]);
getch();
}

这样就可以了
----------------解决方案--------------------------------------------------------
5,6楼的说的对,支持!
----------------解决方案--------------------------------------------------------
我用TC,还有错误啊{t=a[i];a[i]=a[i+1];a[i+1]=t;}这段有问题
----------------解决方案--------------------------------------------------------
{t=a[i];a[i]=a[i+1];a[i+1]=t;}这段没有问题

问题出在for(i=1;i&lt;N-j;i++)
----------------解决方案--------------------------------------------------------
我运行没问题 用TC2
----------------解决方案--------------------------------------------------------
  相关解决方案