| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 893 人关注过本帖
标题:有关指针和函数的问题
只看楼主 加入收藏
夏日清风
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:71
专家分:126
注 册:2010-4-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:18 
有关指针和函数的问题
输入3个数,按由小到大的顺序排列。我的程序如下,调试不出来,请大家帮我找找错误,谢谢!
#include<stdio.h>
void main()
{
    void sort(int *t)
    int a[3],i=0,j=0;
    printf("请输入3个整数:");
    for(i=0;i<3;i++)
        scanf("%d",&a[i]);
    int *p;
    p=a;
    for(j=0;j<3;j++)
        printf("%d ",*p++);
    sort(*p);
}
void sort(int *t)
{
    int a1;
    int i,j;
    for(i=0;i<3;i++)
    {
        for(j=0;j<2-i;j++)
        {
            if(*t>*(t+1))
                a1=*t;*t=*(t+1);*(t+1)=a1;
            t++;
        }
    }
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("%d ",*t);
            t++;
        }
    }
}
搜索更多相关主题的帖子: 函数 指针 
2010-05-21 09:45
冥卫
Rank: 8Rank: 8
来 自:深山老林
等 级:蝙蝠侠
帖 子:280
专家分:772
注 册:2010-4-20
收藏
得分:3 
如果只是排序,何必那么麻烦呢?直接用冒泡排序法不是就可以了。
2010-05-21 10:07
冥卫
Rank: 8Rank: 8
来 自:深山老林
等 级:蝙蝠侠
帖 子:280
专家分:772
注 册:2010-4-20
收藏
得分:3 
如果只是排序,何必那么麻烦呢?直接用冒泡排序法不是就可以了。
2010-05-21 10:08
ZZlove
Rank: 2
等 级:论坛游民
帖 子:29
专家分:28
注 册:2010-3-7
收藏
得分:2 
不会,等人赐教。
2010-05-21 10:09
ZZlove
Rank: 2
等 级:论坛游民
帖 子:29
专家分:28
注 册:2010-3-7
收藏
得分:2 
是啊,冒泡法不是很好,楼主是不是想练习指针和数组,我去编译了一下有9个错误啊。
2010-05-21 10:16
ww稻草人
Rank: 5Rank: 5
来 自:陕西西安
等 级:职业侠客
帖 子:57
专家分:309
注 册:2010-5-11
收藏
得分:10 
1,在这句sort(*p);之前加上p=a;因为你在上一个循环完成时,p指向数组最后一个元素,你得让他重新指向数组的首元素;
2,这句sort(*p)应该改为sort(p);因为你要传给函数的参数是指针p,而不是指向p的值。
3, if(*t>*(t+1))这句后的内容要用大括号括起来例如
            if(*t>*(t+1))
                {
                     a1=*t;*t=*(t+1);*(t+1)=a1;
                     t++;
                }
    你的指针t不是随每次循环而向下值得,只有当if条件成立时才需要。
4,在sort函数中定义一个int  *p=t;用来记录开始时的数组地址,因为你在排完序时t已经指向他的最后一个元素,你要输出数组就可能是乱码了。
5,在sort函数的最后一个循环前加上t=p;让t又重新指向函数的首元素。
6,你的 void sort(int *t)这句后面少个分号。           

[ 本帖最后由 ww稻草人 于 2010-5-21 10:32 编辑 ]

我的博客  http://blog..cn/daocaoren020
2010-05-21 10:31
夏日清风
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:71
专家分:126
注 册:2010-4-16
收藏
得分:0 
回复 4楼 ZZlove
呵呵,是为了练习,特地这个编的。
2010-05-21 10:37
ww稻草人
Rank: 5Rank: 5
来 自:陕西西安
等 级:职业侠客
帖 子:57
专家分:309
注 册:2010-5-11
收藏
得分:0 
这是我修改后你的代码:
#include<stdio.h>
void main()
{
    void sort(int *t);
    int a[3],i=0,j=0,*p;
    printf("请输入3个整数:");
    for(i=0;i<3;i++)
    { scanf("%d",&a[i]);}
    p=a;
    for(j=0;j<3;j++)
        printf("%d ",*(p++));
    p=a;
    sort(p);
}
void sort(int *t)
{
    int a1,*p,i,j;
    p=t;
    for(i=0;i<3;i++)
        {
            for(j=0;j<2-i;j++)
             {
                if(*t>*(t+1))
                   {
                       a1=*t;*t=*(t+1);*(t+1)=a1;
                       t++;
                    }
            }
        }
    t=p;
    for(j=0;j<3;j++)
      {
           printf("%d ",*t);
           t++;
      }  
}

我的博客  http://blog..cn/daocaoren020
2010-05-21 10:40
夏日清风
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:71
专家分:126
注 册:2010-4-16
收藏
得分:0 
回复 6楼 ww稻草人
多谢指点,终于改出来了,谢谢!
2010-05-21 10:46
ww稻草人
Rank: 5Rank: 5
来 自:陕西西安
等 级:职业侠客
帖 子:57
专家分:309
注 册:2010-5-11
收藏
得分:0 
呵呵,不用谢,我们互相帮助,互相提高嘛。

我的博客  http://blog..cn/daocaoren020
2010-05-21 11:01
快速回复:有关指针和函数的问题
数据加载中...
 
   



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

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