| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 550 人关注过本帖
标题:一个关于数组中元素排序的问题
只看楼主 加入收藏
雾雨淼淼
Rank: 2
来 自:甘肃金昌
等 级:论坛游民
帖 子:85
专家分:89
注 册:2010-8-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
一个关于数组中元素排序的问题
程序如下:
# include <stdio.h>
void main()
{
    int a[]={11,12,13,14,15,16,17,18,19,20},i;
    int *p=a;
    void change(int *q);

    //原始数组的输出

    printf("排序前的数组为:\n");
    for(i=0;i<10;i++)
        printf("a[%d]\t%d\n",i,*p++);
    p=a;
    change(*p);

    //输出排序后的数组
   
    printf("排序后的数组为:\n");
    p=a;
    for(i=0;i<10;i++)
        printf("a[%d]\t%d\n",i,*p++);


}
void change(int *q)
{
  int i,j,t,k;
  for(i=0;i<9;i++)
  {
    k=i;
    for(j=i+1;j<10;j++)
        if(*(q+i)<*(q+j))
        {
          k=j;
        }
    if(k!=i)
        t=*(q+i),*(q+i)=*(q+j),*(q+j)=t;
  }

}
在编译运行之后只能输出原数组中的元素,交换后的元素不能输出,自动停止,系统为win7,编译器为VC6.0,提示windows正在寻找解决问题的方案,请各位高手帮帮忙,找找错误,万分感谢
搜索更多相关主题的帖子: 元素 
2010-08-18 23:54
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
我在好奇,你这能编译通过吗?

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-18 23:56
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:20 
# include <stdio.h>

void main()
{
    int a[]={11,12,13,14,15,16,17,18,19,20},i;
    int *p=a;
    void change(int *q);

    //原始数组的输出

    printf("排序前的数组为:\n");
    for(i=0;i<10;i++)
        printf("a[%d]\t%d\n",i,*p++);
    p=a;
  //  change(*p);            //函数的参数是int *p,那么传入的应该是p,而不是*p
    change(p);

    //输出排序后的数组
   
    printf("排序后的数组为:\n");
    p=a;
    for(i=0;i<10;i++)
        printf("a[%d]\t%d\n",i,*p++);

}

void change(int *q)
{
  int i,j,t,k;
  for(i=0;i<9;i++)
  {
    k=i;
    for(j=i+1;j<10;j++)
        if(*(q+k)<*(q+j))        //不是 if(*(q+i)<*(q+j))而是 if(*(q+k)<*(q+j))
          k=j;

        if(k!=i)
           t=*(q+i),*(q+i)=*(q+k),*(q+k)=t;  // t=*(q+i),*(q+i)=*(q+j),*(q+j)=t;改成t=*(q+i),*(q+i)=*(q+k),*(q+k)=t;
   
  }

}
还有其实交换元素顺序的时候,更常见的用法是分号隔开,虽然你写成逗号表达式也对,但建议你还是使用常规的表达
2010-08-19 00:27
雾雨淼淼
Rank: 2
来 自:甘肃金昌
等 级:论坛游民
帖 子:85
专家分:89
注 册:2010-8-17
收藏
得分:0 
谢谢各位,初学者,请多多包含
2010-08-19 16:39
快速回复:一个关于数组中元素排序的问题
数据加载中...
 
   



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

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