| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4379 人关注过本帖
标题:请教 3个数字比大小,怎么找出第二大的数
只看楼主 加入收藏
二子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-3-5
收藏
 问题点数:0 回复次数:17 
请教 3个数字比大小,怎么找出第二大的数

我的确是,新人。。。

[此贴子已经被作者于2006-3-5 20:51:42编辑过]

搜索更多相关主题的帖子: 数字 
2006-03-05 15:26
rolox
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-3-10
收藏
得分:0 
^_^,这个问题我能回答也,我也是newer!
设置一个max,然后设置3个数分别为a,b,c。
第一步:a和b比较,大的给max;
第二步:max和c比较,大的给max;
ok!:)
2006-03-05 16:48
二子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用rolox在2006-3-5 16:48:00的发言:
^_^,这个问题我能回答也,我也是newer!
设置一个max,然后设置3个数分别为a,b,c。
第一步:a和b比较,大的给max;
第二步:max和c比较,大的给max;
ok!:)


怪小弟没说清楚,是第二大的数 ^^

2006-03-05 20:52
leileiguo
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-3-5
收藏
得分:0 

先把第一大的求出来,再求第二个不就可以了吗

2006-03-05 20:56
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
我给你个算法,假设你有3个数,你要找第二大的数,也就是找中间的那个数,那么如果a 是那个中间的数,那么 (a>=b && a<=c) || (a>=c && a<=b) return a;
否则的话, a 肯定不是那个第二大的数,也就是说,那个第二大的数存在于 b, c 中,我们还是用上面这个式子来确定b 是不是那个第二大的数,如果还不是, 那么那个中间大的数必然为 c

下面为代码实现:

#include <iostream>
#include <cstdlib>

using namespace std;

template <class T>
T findMiddleFromThreeNum(T a, T b, T c)
{
if((a>=b && a<=c) || (a>=c && a<=b))
return a;
else if ((b>=a && b<=c) || (b>=c && b<=a))
return b;
else
return c;
}

int main()
{
int a = -20;
int b = 9;
int c = 6;
int middle = findMiddleFromThreeNum(a, b, c);
cout<<middle<<endl; // to see the result;
system(\"pause\");
return 0;
}



自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-03-05 21:44
二子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-3-5
收藏
得分:0 
楼上的大哥
好复杂,小弟新人,看8懂哈

用最简单的 3数两两做比较

可以轻松找出最大的和最小的

那么还是用3数 两两做比较,怎么找出中间大的呢?

2006-03-06 22:48
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 
以下是引用kai在2006-3-5 21:44:00的发言:
我给你个算法,假设你有3个数,你要找第二大的数,也就是找中间的那个数,那么如果a 是那个中间的数,那么 (a>=b && a<=c) || (a>=c && a<=b) return a;
否则的话, a 肯定不是那个第二大的数,也就是说,那个第二大的数存在于 b, c 中,我们还是用上面这个式子来确定b 是不是那个第二大的数,如果还不是, 那么那个中间大的数必然为 c

下面为代码实现:

#include <iostream>
#include <cstdlib>

using namespace std;

template <class T>
T findMiddleFromThreeNum(T a, T b, T c)
{
if((a>=b && a<=c) || (a>=c && a<=b))
return a;
else if ((b>=a && b<=c) || (b>=c && b<=a))
return b;
else
return c;
}

int main()
{
int a = -20;
int b = 9;
int c = 6;
int middle = findMiddleFromThreeNum(a, b, c);
cout<<middle<<endl; // to see the result;
system(\"pause\");
return 0;
}


好经典的了
简单明了
怎么看不懂啊


自强不息:)
2006-03-06 22:54
Hareche
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-3-12
收藏
得分:0 

用引用来传递参数,应该可以实现


2006-03-12 22:54
shifeng2799
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-9-23
收藏
得分:0 
template <class T>
是什么东东,新手看不懂!

2006-03-12 23:17
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
template是模板,看看C++入门后几章就知道了

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-03-13 08:52
快速回复:请教 3个数字比大小,怎么找出第二大的数
数据加载中...
 
   



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

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