读书人

希望各位能帮帮忙指点下异常.

发布时间: 2012-02-08 19:52:21 作者: rapoo

希望各位能帮帮忙指点下错误....
下面是小弟写的插入排序的程序...但是运行上出现错误....
输入: 67 89 56 90 60
输出: 89 67 90 60 56

我想输出是由大到小排序的啊!!大家帮帮忙啦!

#include <stdio.h>
void main()
{
int a[5];
int i,j,k;

printf( "输入5个数字进行排序: ");

for(i=0;i <5;i++)
{
scanf( "%d ",&a[i]);
}

for(i=1;i <5;i++)
{
k=a[i];
for(j=i-1;j> =0;j--)
{
if(a[i]> a[j])
{
a[j+1]=a[j];
a[j]=k;
}
}
}

for(i=0;i <5;i++)
{
printf( "%3d ",a[i]);
}
printf( "\n ");
}

[解决办法]
#include <stdio.h>
void main()
{
int a[5];
int i,j,k;

printf( "输入5个数字进行排序: ");

for(i=0;i <5;i++)
{
scanf( "%d ",&a[i]);
}

for(i=1;i <5;i++)
{
k=a[i];
for(j=i-1;j> =0;j--)
{
if(a[i]> a[j])//这里错了,改为k> a[j]就OK了,因为只要这个条件满足的话,就会改变a[i]的值,所以要用k
{
a[j+1]=a[j];
a[j]=k;
}
}
}

for(i=0;i <5;i++)
{
printf( "%3d ",a[i]);
}
printf( "\n ");
}

读书人网 >C语言

热点推荐