| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 372 人关注过本帖
标题:新手求助~有个小问题请教一下各位大虾!!!!!!!
只看楼主 加入收藏
枫蓝
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2011-8-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
新手求助~有个小问题请教一下各位大虾!!!!!!!
#include "stdafx.h"
#include<stdlib.h>
#include"stdio.h"
void main()
{
    void sort(int x[],int n);
    int i,a[10];
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    sort(a,10);
    for(i=0;i<10;i++)
        printf("%d",a[i]);
    system("pause");
}
void sort(int x[],int n)
{
    int i,j,k,l;
    for(i=0;i<n-1;i++)
    {k=i;
        for(j=i+1;j<n;j++)
        {
            if(x[k]<x[j]) k=j;
                {
                    l=x[i];x[i]=x[k];x[k]=l;
            }
        }
    }
}
选择法排序由大到小,为什么输入
图片附件: 游客没有浏览图片的权限,请 登录注册
1、2、3、4、5、6、7、8、9、0,输出的会是8765432190,然后输入其他的数字串,输出是正确结果,这是为什么啊???~
搜索更多相关主题的帖子: system include void 
2012-10-13 00:40
枫蓝
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2011-8-7
收藏
得分:0 
还有,后面的k=j起什么作用啊???
2012-10-13 00:48
micholasmalo
Rank: 2
等 级:论坛游民
帖 子:40
专家分:62
注 册:2012-6-22
收藏
得分:0 
k=i是重新定位元素索引的(在元素大小比对后)
之所以出错是因为if(x[k]<x[j]) k=j;
                {
                    l=x[i];x[i]=x[k];x[k]=l;
            }
要把K=I放到{}执行块中,你K=I放在外面,等于IF的判断只执行了K=I,{L=X[I]。。。。。}后执行了,影响了运行结果!
2012-10-13 01:25
枫蓝
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2011-8-7
收藏
得分:0 
唔,那K=J呢,是什么作用啊?
2012-10-13 10:51
micholasmalo
Rank: 2
等 级:论坛游民
帖 子:40
专家分:62
注 册:2012-6-22
收藏
得分:0 
以下是引用枫蓝在2012-10-13 10:51:43的发言:

唔,那K=J呢,是什么作用啊?
说错了,就是K=J,不是K=I,失误!
2012-10-13 22:51
micholasmalo
Rank: 2
等 级:论坛游民
帖 子:40
专家分:62
注 册:2012-6-22
收藏
得分:12 
以下是引用micholasmalo在2012-10-13 22:51:36的发言:

说错了,就是K=J,不是K=I,失误!
代码块里也是K=J,你的K=J,在IF语句后了,而不是代码块中!
2012-10-13 22:53
chenglovenju
Rank: 2
等 级:论坛游民
帖 子:11
专家分:30
注 册:2012-10-14
收藏
得分:8 
#include<stdlib.h>
#include"stdio.h"
void main()
{
     void sort(int x[],int n);
     int i,a[10];
     for(i=0;i<10;i++)
         scanf("%d",&a[i]);
     sort(a,10);
     for(i=0;i<10;i++)
         printf("%d ",a[i]);
     system("pause");
 }
 void sort(int x[],int n)
 {
     int i,j,k,l;
     for(i=0;i<n-1;i++)
     {
         k=i;
         for(j=i+1;j<n;j++)
         {
             if(x[k]<x[j]) k=j;
         }
         l=x[i];x[i]=x[k];x[k]=l;//不是没找到一个较大的就交换一次,而是找到那个最大的在交换

     }
 }
2012-10-14 00:51
快速回复:新手求助~有个小问题请教一下各位大虾!!!!!!!
数据加载中...
 
   



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

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