注册 登录
编程论坛 C语言论坛

新手学习C语言,哪位大佬可以给我解释一下这个程序,这个程序哪里不对

说句实话 发布于 2018-12-18 20:06, 1621 次点击
编写程序,任意输入10个整数,经过排序后,使得数列的前一半数为升序排序,后一半数为降序排列。
例如输入: 12 23  9  45  78  124  37  52  97  65。则输出结果为:9  12  23  37  45  124  97  78  65  52。




#include<stdio.h>
main()
{
    int i,j,k,r;
    int a[10]={12,23,9,45,78,124,37,52,97,65};
    for(i=0;i<=9;i++)
    {   
    k=i;
        for(j=i+1;j<=9;j++)
        {
          if(a[i]>a[j])
         
            {
                k=j;
                r=a[i];a[i]=a[k];a[k]=r;
            }
            
        }
        
    }
   
     
     for(i=0;i<=9;i++)
     if(i<=4)
     printf("%d ",a[i]);
     else      
     printf("%d ",a[14-i]);

     
}

[此贴子已经被作者于2018-12-19 12:32编辑过]

2 回复
#2
莱茵瓶2018-12-19 14:33
什么问题..
程序没问题啊
#3
perry_lin2019-07-19 10:22
应该是答案错了吧
你从前往后排序后应再从后往前排
否则后面的小数字无法排前面!
在第十七排加上:
if(a[9-i]<a[9-j])
{
  r=a[9-i];
  a[9-i]=a[9-k];
  a[9-k]=r;
}
1