| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 398 人关注过本帖
标题:为什么千呼万唤始不出呢
只看楼主 加入收藏
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:8 
为什么千呼万唤始不出呢
程序代码:
/*冒泡法排序*/


#include <stdio.h>
#define  N  5


  void  main()
{
    void arrange(int x[]);
    int a[N],i;
    printf("请输入要排序的整数");
    for(i=0;i<=N-1;i++)
         scanf("%d",&a[i]);

    arrange(a);

    printf("排好序的数为\n");
    for(i=0;i<=N-1;i++)
          if(a[i]!='\0')
                 printf("%d\t",a[i]);

}

/*以下函数的功能是对输入的数进行排序*/
void arrange(int x[])
{
    int *i,*j,t;
    for(i=x;i<x+N-1;i++)                               /*冒泡法排序*/
        for(j=i;j<x+N-1-i;j++)

           if(*j>*(j+1))
                {
                    t=*j;
                    *j=*(j+1);
                    *(j+1)=t;
                }


}

为什么这里好像没排一样
2011-05-16 15:52
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:1 
if(a[i]!='\0')
楼主什么意思?
         
2011-05-16 15:56
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:1 
回复 2楼 hjywyj
或许把整形数组当初字符数组了

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-16 16:08
zjl01223
Rank: 2
等 级:论坛游民
帖 子:42
专家分:90
注 册:2011-4-21
收藏
得分:2 
/*以下函数的功能是对输入的数进行排序*/
void arrange(int x[])
{
    int i,j,t;
    for(j=0;j<N-1;j++)                               /*冒泡法排序*/
        for(i=0;i<N-1-j;i++)
           if(x[i]>x[i+1])
                {
                    t=x[i];
                    x[i]=x[i+1];
                    x[i+1]=t;
                }
}

进行N-1次循环,
每次循环进行N-1-j次比较.
定义i,j为指针"j<x+N-1-i" 如何比较?


[ 本帖最后由 zjl01223 于 2011-5-16 18:04 编辑 ]
2011-05-16 17:46
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
不是 他们的地址啊 地址相减加上移动存储单元的个数
2011-05-16 21:40
zjl01223
Rank: 2
等 级:论坛游民
帖 子:42
专家分:90
注 册:2011-4-21
收藏
得分:2 
"j<x+N-1-i" 等价于 "&x[j]<&x[N-1]-&x[i]"
 如:              "&x[j]<1012-1004 "    ????
好像是这样理解吧。

下面的代码不知道行不行:
void arrange(int x[])
{
    int *i,*j,t,k=0;
    if(k<=N-1) k++;
    for(i=x;i<x+N-1;i++)                   /*冒泡法排序*/      
        for(j=x;j<x+N-k;j++)
           if(*j>*(j+1))
                {
                    t=*j;
                    *j=*(j+1);
                    *(j+1)=t;
                }
}
2011-05-17 05:57
其实、不想说
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:156
注 册:2011-3-3
收藏
得分:4 
#include <stdio.h>
#define  N  5


  void  main()
{
    void arrange(int x[]);
    int a[N],i;
    printf("input\n");
    for(i=0;i<=N-1;i++)
         scanf("%d",&a[i]);

    arrange(a);

    printf("sort array\n");
    for(i=0;i<=N-1;i++)

                 printf("%d\t",a[i]);
    getch();

}


void arrange(int x[])
{
    int i,*j,t;
    for(i=0;i<N;i++)
        for(j=x;j<x+N-i-1;j++)

           if(*j>*(j+1))
                {
                    t=*j;
                    *j=*(j+1);
                    *(j+1)=t;
                }


}
2011-05-17 08:01
其实、不想说
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:156
注 册:2011-3-3
收藏
得分:0 
试试这段,我的能运行!!!
2011-05-17 08:01
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
好吧 谢谢各位
2011-05-17 10:38
快速回复:为什么千呼万唤始不出呢
数据加载中...
 
   



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

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