| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 434 人关注过本帖
标题:这个简单排序程序运行时只能交换最后两个数,怎么回事?该怎么改呢?
只看楼主 加入收藏
阳光的安慰
Rank: 1
等 级:禁止访问
帖 子:12
专家分:0
注 册:2013-12-24
结帖率:20%
收藏
已结贴  问题点数:10 回复次数:1 
这个简单排序程序运行时只能交换最后两个数,怎么回事?该怎么改呢?
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void input(double r[] ,int n) 
{printf("请输入%d个数\n",n);

 int i;

 for(i=0;i<n;i++)

 scanf(" %lf",&r[i]);
}
void output(double r[] ,int n) 
{int i;

 for(i=0;i<n;i++)

 {printf (" %lf",r[i]);

 if((i+1)%5==0)

 {

 printf("\n");

 }

 }
}
void sort3(double r[],int n)
{int i,j,k;
double l;
for(i=0;i<n-1;i++)
k=i;
for(j=i+1;j<n;j++)
{
if(r[j]<r[k])
k=j;}
if (i!=k)
{l=r[k];
r[k]=r[i];
r[i]=l;}
}
int main()
{
    double a[10] ;
    int d[]={5,3,1};
    input(a,10) ;
    sort3(a,10) ; 
    printf("排好的序列:\n") ;
    output(a,10) ;
    return 0 ;
}
2014-01-09 00:02
lxxcom
Rank: 2
等 级:论坛游民
帖 子:7
专家分:21
注 册:2013-12-20
收藏
得分:10 
回复 楼主 阳光的安慰
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void input(double r[] ,int n)
{printf("请输入%d个数\n",n);
int i;
for(i=0;i<n;i++)
scanf(" %lf",&r[i]);
}
void output(double r[] ,int n)
{int i;
for(i=0;i<n;i++)
{printf (" %lf",r[i]);
if((i+1)%5==0)
{
printf("\n");
}
}
}
void sort3(double r[],int n)
{int i,j,k;
double l;
for(i=0;i<n-1;i++)
{k=i;//少了{}
for(j=i+1;j<n;j++)
{
if(r[j]<r[k])
k=j;}
if (i!=k)
{l=r[k];
r[k]=r[i];
r[i]=l;}
}}
int main()
{
    double a[10] ;
    int d[]={5,3,1};
    input(a,10) ;
    sort3(a,10) ;
    printf("排好的序列:\n") ;
    output(a,10) ;
    return 0 ;
}
收到的鲜花
  • 阳光的安慰2014-01-09 03:15 送鲜花  1朵   附言:我很赞同
2014-01-09 01:23
快速回复:这个简单排序程序运行时只能交换最后两个数,怎么回事?该怎么改呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049971 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved