| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4508 人关注过本帖
标题:求4个数的最大值
只看楼主 加入收藏
JXZJH
Rank: 2
等 级:论坛游民
帖 子:18
专家分:32
注 册:2011-9-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
求4个数的最大值
我这样写合理吗?
#include<stdio.h>
int main()
{
int a,b,c,d,max;
printf("输出a,b,c,d的最大值:");
scanf("%d%d%d%d",&a,&b,&c,&d);
    if(a>b&&a>c&&a>d)
        max=a;
    else
        if(b>c&&b>d)
            max=b;
        else
            if(c>d)
                max=c;
            else
                max=d;
            printf("max=%d",max);
}
搜索更多相关主题的帖子: 最大值 
2011-09-13 11:22
城东古桥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:101
注 册:2010-9-13
收藏
得分:7 
注意一下格式就行了,也可以这样写
#include "stdafx.h"
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int max,a,b,c,d;
    cout<<"请输入4个整数:"<<endl;
    cin>>a>>b>>c>>d;
    max=(((a>b)?a:b)>c?((a>b)?a:b):c)>d?(((a>b)?a:b)>c?((a>b)?a:b):c):d;
    cout<<"max="<<max<<endl;
    system("pause");
    return 0;
}

来此寻求
2011-09-13 11:54
JXZJH
Rank: 2
等 级:论坛游民
帖 子:18
专家分:32
注 册:2011-9-12
收藏
得分:0 
老大我昨天晚上才刚看谭老师的书,你写的我看不懂?能注释下吗?谢谢
2011-09-13 13:03
statics
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:163
专家分:625
注 册:2011-8-29
收藏
得分:7 
你那么写会把一些条件漏掉,
if(a>b&&a>c&&a>d)
这个条件只要其中之一不成立就会走else

惟我独行...
2011-09-13 13:45
JXZJH
Rank: 2
等 级:论坛游民
帖 子:18
专家分:32
注 册:2011-9-12
收藏
得分:0 
但是我读不懂2楼的语句,你能给我讲讲吗?
2011-09-13 15:08
statics
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:163
专家分:625
注 册:2011-8-29
收藏
得分:0 
你说的应该是这句吧?
max=(((a>b)?a:b)>c?((a>b)?a:b):c)>d?(((a>b)?a:b)>c?((a>b)?a:b):c):d;//先不说他的方法对错,只说语法,这是“三目运算符”
看下面的解释:
 <表达式1>?<表达式2>:<表达式3>;
"?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果.   例:   
    int a=2;
  int c=3;   
    int b=(a>c)?2:3;
   输出b;   
这样的结果是b为3
   eg:
   int a=1,b=2,z;
  z=a>b?a:(a>b?a:b);
  cout<<"z:"<<z<<endl;
  这样输出的结果是:2
  eg:
   int a=1,b=2,z;
   z=a>b?a:a>b?a:b;//去了括号   
    cout<<"z:"<<z<<endl;
   这样的输出的结果是:2  
     三目运算中执行方向依次为自右向左。

惟我独行...
2011-09-13 16:21
statics
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:163
专家分:625
注 册:2011-8-29
收藏
得分:0 
简单点说,
int ret =0;
ret=(a>b)?a:b
//这一句可以替换成下面的语句
if(a>b)
{
    ret=a;
}
else
{
    ret=b;
}

惟我独行...
2011-09-13 16:23
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:7 
回复 7楼 statics
?: 就是你理解的这意思。
不过这个问题写成 2楼 那样感觉还不如你的自己写的那个呢(不过你那个确实逻辑有问题)。

这个其实最好就是能把逻辑写清楚,至于怎么描述都可以。
比如我觉得这样写就比较好:
程序代码:
if (a > b)
{
  if (c > d)
    max = (a > c) ? a : c;
  else
    max = (a > d) ? a : d;
}
else
{
  if (c > d)
    max = (b > c) ? b : c;
  else
    max = (b > d) ? b : d;
}

2011-09-13 21:06
城东古桥
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:101
注 册:2010-9-13
收藏
得分:0 
6楼解释非常详细6楼解释非常详细,版主说的也对,我也感觉到那可读性太差

[ 本帖最后由 城东古桥 于 2011-9-13 21:19 编辑 ]

来此寻求
2011-09-13 21:10
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
如果非常愿意写成 2楼 那样也可以,但应该尝试写的更有可读性一些。比如:
程序代码:
  max = (a > b)
    ? ( (c>d) ? ( (c>a)?c:a ) : ( (d>a)?d:a ) )
    : ( (c>d) ? ( (c>b)?c:b ) : ( (d>b)?d:b ) );

不过即使这样也很糟糕。在工程上,一般来说都不允许使用嵌套的三目运算符。就是因为它的逻辑表达不是很直观。
它一般只适用于漂亮的表达一些非常简明的 if-else 结构。如果不是这种情况,都不建议使用。
2011-09-13 21:22
快速回复:求4个数的最大值
数据加载中...
 
   



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

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