| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 783 人关注过本帖
标题:一道C语言的问题
只看楼主 加入收藏
ksddah
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:135
注 册:2012-12-11
收藏
得分:3 
楼主你错误的原因是你的程序中没有保证指针k和m指向的始终是相邻的两个元素,而冒泡排序法始终是在比较两个相邻的元素再进行交换的。
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define N 4                //数组取小些,方便输入 ,可以改成10 

int main()
{
    void sort(int *x);
    int a[N],*p;
    for(p=a;p<(a+N);p++)
        scanf("%d",p);
    p=a;
    sort(p);
    for(p=a;p<(a+N);p++)
        printf("%5d",*p);
    printf("\n");
    system("pause");
}
void sort(int *x)
{
    int *k,*m,temp;
    for(k=x;k<(x+N);k++)
    {
        for(m=k;m<(x+N-1);m++)      
         {                  
         // *t=*k;      这部分改了
            if(*m<*(m+1)){
                //temp=*t;
               // *t=*m;
               // *m=temp;}
                       temp=*m;
                       *m=*(m+1);
                       *(m+1)=temp;
                       }
         }
    }
}
2012-12-29 13:25
tracyxia716
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-12-29
收藏
得分:0 
回复 9楼 azzbcc
如果按照这样定义变量的思路写的话那到底应该改成什么样子,我试了几种改法,还是不行………………
2012-12-30 09:25
善ing
Rank: 2
来 自:华东师范
等 级:论坛游民
帖 子:34
专家分:19
注 册:2012-11-18
收藏
得分:3 
回复 7楼 tracyxia716
void sort(int *x)
{
    int *k, *m, temp, *t;
    for (k = x; k < (x + 9); k++)
    {
        for (m = k + 1; m < (x + 10); m++)          // m=x+1被我改了。
        {
            
            //t =  k;这里其实没必要用t
            /*
              如果你非要用,
       请把下面的 k 都改为 t .
            */
            if (*k < *m)
            {
                temp = *k;
                *k = *m;
                *m = temp;
            }
            
        }
    }
}

邂逅c  (⊙o⊙)
2012-12-30 22:20
continue24
Rank: 2
等 级:论坛游民
帖 子:38
专家分:96
注 册:2012-11-16
收藏
得分:3 
我这完全不能输出啊!?奇怪,怎么同样的代码结果会不同呢?

一直想要成长着……
2012-12-31 09:04
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:3 
void sort(int *x)
{
    int *k,*m,temp,t;
    for(k=x;k<(x+9);k++)
    {     t=*k;
    for(m=k+1;m<(x+10);m++)
    {   
         if(t<*m)
         { temp=t;
                t=*m;
                *m=temp;}
         *k=t ;
    }
    }
}
2012-12-31 11:48
快速回复:一道C语言的问题
数据加载中...
 
   



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

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