| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 566 人关注过本帖
标题:看看这个对吗?
只看楼主 加入收藏
tuifeixiaopeng
Rank: 1
来 自:河北
等 级:新手上路
帖 子:11
专家分:9
注 册:2009-10-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
看看这个对吗?
#include"stdio.h"
void fun(int *h1,int *h2,int *h3)
{
    int t;
    if(h1<h2){t=h1;h1=h2;h2=t;}
    if(h1<h3){t=h1;h1=h3;h3=t;}
    if(h2<h3){t=h2;h2=h3;h3=t;}
}
main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    fun(&a,&b,&c);
    printf("da de=%d\nxiao de=%d\n",b,a);
    getch();
}
是把abc中最大和最小的输出。还有别的方法吗?
搜索更多相关主题的帖子: include 
2009-10-08 12:02
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
应该是:
    if(*h1<*h2){t=*h1;*h1=*h2;*h2=t;}
后面的类似,交换指针是没有用的,因为传递的指针是copy的。除非传递的int **。



要练习算法就来http:///!!有挑战哦!!
2009-10-08 12:07
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
错误!
h1,h2,h3都是指针变量,int t; t是整型变量。不能用他们来进行2个值的交换。而且按照你的意思,最后a是最大值,c是最小值。

我可好玩啦...不信你玩玩^_^
2009-10-08 12:11
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
以下是引用pgy在2009-10-8 12:11:23的发言:

错误!
h1,h2,h3都是指针变量,int t; t是整型变量。不能用他们来进行2个值的交换。而且按照你的意思,最后a是最大值,c是最小值。
这个说法有问题,他的代码是进行三个int指针copy值的大小比较,对a,b,c没有任何影响。
也就是fun这个函数其实什么都不做,可以测试。

要练习算法就来http:///!!有挑战哦!!
2009-10-08 12:16
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
至少将指针类型的赋给int型的是不对的,好好改改吧。
2009-10-08 12:20
xiaogu149162
Rank: 2
等 级:论坛游民
帖 子:47
专家分:97
注 册:2009-7-16
收藏
得分:0 
      #include"stdio.h"
void fun(int *h1,int *h2,int *h3)
{
    int t;
    if(h1<h2){t=h1;h1=h2;h2=t;}
    if(h1<h3){t=h1;h1=h3;h3=t;}
    if(h2<h3){t=h2;h2=h3;h3=t;} /*这里H2=T*,没有比,if 语句有问题/
}
main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    fun(&a,&b,&c);
    printf("da de=%d\nxiao de=%d\n",a,b);
    getch();
}
2009-10-08 12:30
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:20 
以下是引用viky2003在2009-10-8 12:16:13的发言:

这个说法有问题,他的代码是进行三个int指针copy值的大小比较,对a,b,c没有任何影响。
也就是fun这个函数其实什么都不做,可以测试。
值传递,地址传递?
单向传递还是双向共享?
楼主的意思是用下列程序来运行:
#include"stdio.h"
void fun(int *h1,int *h2,int *h3)
{
    int t;
    if(*h1<*h2){t=*h1;*h1=*h2;*h2=t;}
    if(*h1<*h3){t=*h1;*h1=*h3;*h3=t;}
    if(*h2<*h3){t=*h2;*h2=*h3;*h3=t;}
}
main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    fun(&a,&b,&c);
    printf("da de=%d\nxiao de=%d\n",a,c);
    getch();
}
你测试下,看看改变没有。
输入1 2 3
输出3 2 1


[ 本帖最后由 pgy 于 2009-10-8 12:39 编辑 ]
收到的鲜花

我可好玩啦...不信你玩玩^_^
2009-10-08 12:33
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
以下是引用pgy在2009-10-8 12:33:51的发言:

值传递,地址传递?
单向传递还是双向共享?
楼主的意思是用下列程序来运行:
#include"stdio.h"
void fun(int *h1,int *h2,int *h3)
{
    int t;
    if(*h1<*h2){t=*h1;*h1=*h2;*h2=t;}
    if(*h1<*h3){t=*h1;*h ...
请看2楼我的回复,我的意思是楼主写的fun什么都不能改变。


要练习算法就来http:///!!有挑战哦!!
2009-10-08 12:42
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
回复 8楼 viky2003
   

我可好玩啦...不信你玩玩^_^
2009-10-08 12:55
快速回复:看看这个对吗?
数据加载中...
 
   



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

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