| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 909 人关注过本帖
标题:排序问题
只看楼主 加入收藏
jtwebvideo
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-5-15
结帖率:0
收藏
已结贴  问题点数:10 回复次数:11 
排序问题
有个数组a[6]={127,3,6,28,54,68}   然后把里面的数字按顺序排列   我编了个  有错误  还请各位帮忙看看我错哪里了  
#include <stdio.h>
main()
{
    int max,i,j=0,k, a[6]={127,3,6,28,54,68} ;
    for(k=0;k<6;k++)
        {
            max=a[k];
            for(i=k;i<6;i++)
               {
                   if(max<a[i])
                      {
                            max=a[i];
                            j=i;
                       }
               }
             a[j]=a[k];
             a[k]=max;
        }
    for(i=0;i<6;i++)
        {
           printf("%d ",a[i]);
        }
}


运行结果是:127 68 54 28 3 3
搜索更多相关主题的帖子: max include 
2010-05-16 00:03
jtwebvideo
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-5-15
收藏
得分:0 
???咋没人回答啊  着急啊
2010-05-16 00:34
aphase
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2010-5-16
收藏
得分:1 
把max=a[k];
提出去
写成max=a[0];再开始循环
2010-05-16 00:44
aphase
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2010-5-16
收藏
得分:0 
以下是引用aphase在2010-5-16 00:44:15的发言:

把max=a[k];
提出去
写成max=a[0];再开始循环

刚才看错了
不过程序运行没有错误
2010-05-16 00:45
aphase
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2010-5-16
收藏
得分:0 
今天刚好写了一个比较大小的
#include <stdio.h>

int maxmin(int n[],int numbers);
int max,min;
void main()
{

    int i,data[4];

    printf("请输入四个数字:");
    for(i=0;i<4;i++)
    {
        scanf("%d",&data[i]);
    }
    maxmin(data,4);
    printf("\n最大数字是%d,最小数字是%d\n",max,min);



}

maxmin(int n[],int numbers)
{
    int i;
    extern int max,min;
    if(n[0]>n[1])
    {
        max=n[0];
        min=n[1];
    }
    else
    {
        max=n[1];
        min=n[0];
    }

    for(i=0;i<numbers;i++)
    {
        if(n[i]>max)
            max=n[i];
        if(n[i]<min)
            min=n[i];
    }
    return max,min;
}
2010-05-16 00:48
aphase
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2010-5-16
收藏
得分:0 
不对不对
再思考一下
2010-05-16 00:51
lxg1123
Rank: 2
等 级:论坛游民
帖 子:31
专家分:18
注 册:2010-5-11
收藏
得分:1 
以下是引用jtwebvideo在2010-5-16 00:03:15的发言:


               {
                   if(max
lz在这里最后j并没有改变,即当k=2后,数组变为了{127,68,54,28,6,3}if语言不会执行,
则j=4会保持不变,则出现lz所给的原因就会清楚了
2010-05-16 00:56
parkour
Rank: 2
等 级:论坛游民
帖 子:63
专家分:39
注 册:2009-1-3
收藏
得分:1 
#include<stdio.h>
int main()
{
        int max, i, j = 0, k, tmp, a[] = {127,3,6,28,54,68};
        for(k = 0; k < 6; k++)
        {
                max = a[k];
                for(i = k + 1; i < 6; i++)
                {
                        if(max < a[i])
                        {
                                max = a[i];
                                j = i;
                                a[j] = a[k];
                                a[k] = max;
                        }
                }
        //      a[j] = a[k];
        //      a[k] = max;
        }
        for(i = 0; i < 6; i++)
     {
                printf("%3d", a[i]);
        }
        printf("\n");
        return 0;
}
2010-05-16 00:58
godfery
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2010-3-24
收藏
得分:1 
冒泡法排序有问题啊!
2010-05-16 00:58
jtwebvideo
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-5-15
收藏
得分:0 
恩 我知道了  只要把if(max<a[i])  改为if(max<=a[i])  就可以了    谢谢
2010-05-16 01:12
快速回复:排序问题
数据加载中...
 
   



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

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