标题:请问这个程序可以简化点吗,请各位高手指点~~
只看楼主
小茫
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-9-30
 问题点数:0 回复次数:12 
请问这个程序可以简化点吗,请各位高手指点~~
编写一个程序,用来求两个整数或3个整数中的最大数。如果输入两个整数,程序就输出这两个整数中的最大数,如果输入3个整数,程序就输出这3个整数中的最大数(利用重载函数)。
下面这个是我自己写的,程序正确执行了,可是好像太繁琐了?
本人是菜鸟一只,不要笑话。。
#include<iostream>
using namespace std;

int  largest(int num1,int num2)
{
    if(num1>num2)
        return num1;
    else
        return num2;
}

int  largest(int num3,int num4,int num5)
{
    int  temp;

    if(num3>num4)
        temp=num3;
    else
        temp=num4;
   
    if(temp>num5)
        return temp;
    else
        return num5;
}

void main()
{
    cout<<"how many intergers to compare:";
   
    int  lar;
    int  times;
    cin>>times;
    if(times==2)
    {
        int  num1,num2;
        cin>>num1>>num2;
        lar=largest(num1,num2);
    }
    else
    {
        int  num3,num4,num5;
        cin>>num3>>num4>>num5;
        lar=largest(num3,num4,num5);
    }
   
    cout<<"\n";
    cout<<lar<<endl;
}
搜索更多相关主题的帖子: include return using 笑话 
2010-10-12 17:45
myth_feng
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:59
注 册:2010-8-11
得分:0 
int  largest(int num3,int num4,int num5)
{
   return largest(largest(num3,num4),num5);
}
//调用第一个函数会简单一点。。。。
2010-10-12 17:58
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:0 
up
2010-10-12 18:12
lscalin
Rank: 6Rank: 6
来 自:周总理故乡
等 级:侠之大者
威 望:1
帖 子:91
专家分:405
注 册:2010-5-10
得分:0 
程序代码:
int  largest(int x, int y )
{

    return x>y?x:y;
}

int  largest(int x, int y, int z)
{

    return  largest(largest(x,y),z);
}我也来试试
借用了2楼兄弟的法子

[ 本帖最后由 lscalin 于 2010-10-12 19:46 编辑 ]

灵感不是曹操,说来就来。
2010-10-12 19:44
tornador
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:34
专家分:118
注 册:2010-10-4
得分:0 
#include<iostream>
using namespace std;
float com(float a,float b)
{
    return a>b?a:b;
}
float com(float a,float b,float c)
{
    return (a>b?a:b)>c?(a>b?a:b):c;
}
void main()
{
    float a,b,c;
    int n=0;
    cout<<"input the number you want to compare"<<endl;
    cin>>n;
    cout<<"input the numbers"<<endl;
    if(n==2)
    {
        cin>>a>>b;
        cout<<com(a,b)<<" is larger"<<endl;
    }
    else if(n==3)
    {
        cin>>a>>b>>c;
        cout<<com(a,b,c)<<" is largest"<<endl;
    }
    else
        cout<<"error  check the number"<<endl;
}
这个怎么样?
2010-10-12 21:25
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
得分:0 
程序代码:
int GetLargest(int a,int b,int c= 1<<(sizeof(int)*8-1))
{
    if(a>b)
        return (a>c?a:c);
    return (b>c?b:c);
}

How are you 怎么是你?
How old are you   怎么老是你?
2010-10-12 21:45
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
6楼的漂亮~
2010-10-12 22:29
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:0 
主函数用三个变量就可以
2010-10-13 01:26
lscalin
Rank: 6Rank: 6
来 自:周总理故乡
等 级:侠之大者
威 望:1
帖 子:91
专家分:405
注 册:2010-5-10
得分:0 
6楼的说实在没看懂,能否讲解下

灵感不是曹操,说来就来。
2010-10-13 10:04
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:605
专家分:2489
注 册:2009-4-8
得分:0 
回复 9楼 lscalin
int c= 1<<(sizeof(int)*8-1) //获取类型为int的数的最小的值。
sizeof(int)*8获取int占用的位的大小。

迭代的是人,递归的是神。
2010-10-13 11:50



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




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

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