标题:最大数求法
只看楼主
big_apple
Rank: 2
等 级:论坛游民
帖 子:6
专家分:21
注 册:2009-11-16
 问题点数:0 回复次数:3 
最大数求法
谁能给段代码
要求输入三个数,输出最大数,用指针完成,不要用数组.谢谢啦.
搜索更多相关主题的帖子: 求法 大数 
2009-11-16 10:09
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
得分:0 
用指针不用数组?
 int *p1,*p2,*p3,a,b,c,min;
 scanf("%d,%d,%d",&a,&b,&c)
 p1=&a;
 p2=&b;
 p3=&c;
 if(*p1<*p)
 {min=*p1;
  *p1=*p2;
  *p2=min;}
 if(*p2<*P3)
 {min=*p2;
  *p2=*p3;
  *p3=min;}
 if(*p1<*p3)
 {min=*P1;
  *p1=*p3;
  *p3=min;}
 printf("%d,%d,%d\n"*p1,*p2,*p3);
这个是最笨的方法,就是直接把a,b,c用指针的形式表达。然后相互比较再交换。
想把程序精简一点的话你就用调用函数的形式。不过你要注意,函数调用的返回值只能是一个数,为什么这里可以一次改变两个值?那是因为这里调用函数中改变的是指针指向的地址里面的内容即令a,b发生改变,但在主函数中p1依然指向&a,a的值发生了改变,所以才引起*p1的改变。
{ int *p1,*p2,*p3,a,b,c;
 void max(int *p1,int *p2)
 scanf("%d,%d,%d",&a,&b,&c)
 p1=&a;
 p2=&b;
 p3=&c;
 if(a<b)max(p1,p2);
 if(b<c)max(p2,p3)
 if(a<c)max(p1,p3)
 printf("%d,%d,%d\n",*p1,*p2,*p3)
}
void max(int *p1,int *p2)
{int min;
 min=*p1;
 *p1=*p2;
 *p2=min;
}
2009-11-16 11:03
d7d7
Rank: 4
等 级:业余侠客
帖 子:91
专家分:210
注 册:2008-9-29
得分:0 
这里只求最大值,用指针有点多余了.也不能很好的表现指针的功能.
2009-11-16 12:51
big_apple
Rank: 2
等 级:论坛游民
帖 子:6
专家分:21
注 册:2009-11-16
得分:0 
呵呵,书上这么要求的
2009-11-17 05:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-292443-1-1.html




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

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