首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-08 
希望各位能帮帮忙指点下错误....下面是小弟写的插入排序的程序...但是运行上出现错误....输入:6789569060

希望各位能帮帮忙指点下错误....
下面是小弟写的插入排序的程序...但是运行上出现错误....
输入:   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 ");
}

热点排行