| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1449 人关注过本帖
标题:谭浩强书中的3个数输出最大数算法问题
只看楼主 加入收藏
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:1 
程序代码:
#include <stdio.h>
#define max(x, y)    ((x) > (y) ? (x) : (y))

int main(void) {
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    printf("最大值:%d\n", max(max(a, b), c));
    return 0;
}
这样做思路更清晰吧!!!


My life is brilliant
2011-07-27 23:10
_改变自己_
Rank: 2
等 级:论坛游民
帖 子:21
专家分:39
注 册:2011-7-26
收藏
得分:1 
程序代码:
#include<stdio.h>
int MAX(int a,int b) 
{
    if((a) > (b))    
    {
        return a;
    }
    else
    {
        return b;
    }
}
             
        
void main()
{
    int a,b,c;
    printf("input three number:");
    scanf("%d,%d,%d",&a,&b,&c);
    printf("the max num is %d\n",MAX(a,MAX(b,c)));
}
2011-07-28 00:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
怎麽改都不及原來那個清晰呀

授人以渔,不授人以鱼。
2011-07-28 00:54
为我留住记忆
Rank: 4
来 自:北京
等 级:业余侠客
帖 子:130
专家分:226
注 册:2011-4-30
收藏
得分:1 

学习c是为了自己更强大。。。
2011-07-28 09:23
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
// test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

// 错误返回代码
#define INVALID_ARRAY    0
#define INVALID_START    -1
#define INVALID_END        -2

// 函数原型声明
// 目标: 求一堆整数的最大值
// 参数: iData  -- 储存整数的一维数组
//       iStart -- 开始的序号(从1计起)
//       iEnd   -- 结束的序号(从1计起)
// 返回: 最大值的序號(<1表示出错)
int max(int *iData, int iStart, int iEnd);

// 程序入口
int _tmain(void)
{
    int iData[] = {16, -9, 2, 21, 0, -4, -1};
    int index;

    index = max(iData, 2, 5);
    if (index > 0)
    {
        printf_s("具有最大值的是数组中第%d个元素, 其值为%d\n", index+1, iData[index]);
    }
    else
    {
        printf_s("参数传递错误: %d\n", index);
    }
    getchar();

    return index;
}

int max(int *iData, int iStart, int iEnd)
{
    int max_value;
    int i;
    int ret_value;

    ret_value = 0;
    if (iStart < 0)
    {
        ret_value += INVALID_START;
    }
    if (iEnd < 0)
    {
        ret_value += INVALID_END;
    }
    if (ret_value != 0)
    {
        return ret_value;
    }

    if (iEnd - iStart < 1)
    {
        return INVALID_ARRAY;
    }

    iStart--;
    iEnd--;
    max_value = iData[iStart];
    ret_value = iStart;
    for(i = iStart + 1; i <= iEnd; i++)
    {
        if (iData[i] > max_value)
        {
            ret_value = i;
            max_value = iData[i];
        }
    }
    return ret_value;
}


[ 本帖最后由 TonyDeng 于 2011-7-28 11:15 编辑 ]

授人以渔,不授人以鱼。
2011-07-28 10:38
cxs365
Rank: 2
等 级:论坛游民
帖 子:32
专家分:30
注 册:2011-5-6
收藏
得分:1 
1、d = a,首先你将 a 的值给了 d;
2、如果 d > b,则不执行第一个 if 语句,此时 d 比 b 大,也就是 a > b;
3、如果 d > c,则不执行第二个 if 语句,此时 d 比 c 大,也就是 a > c;
4、a > b && a > c,那么 a 就是三者中最大的一个数.

每天前进一小步!
2011-07-28 12:54
helios1996
Rank: 1
等 级:新手上路
帖 子:1
专家分:1
注 册:2011-7-28
收藏
得分:1 
如果d的值即大于b又大于c,那if (d<b), if (d<c)都不会执行,直接输出d。

2011-07-28 13:05
正电子
Rank: 3Rank: 3
来 自:江苏常州
等 级:论坛游侠
帖 子:30
专家分:112
注 册:2011-7-26
收藏
得分:1 
都不执行,直接执行printf
2011-07-28 14:11
落叶深蓝色
Rank: 8Rank: 8
来 自:山东
等 级:蝙蝠侠
帖 子:319
专家分:807
注 册:2010-12-8
收藏
得分:1 
(x>y?x:y)>z?(x>y?x:y):z
2011-07-28 17:36
c51986
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:4
专家分:1
注 册:2010-8-10
收藏
得分:1 
用三元运算符也很简单
a=a>b?a:b;//a大于b取a值,反之取b值
a=a>c?a:c;  //a大于c取a值,反之取c值

printf("最大值:%d\n", a);

机会是留给有准备的人
2011-07-28 18:09
快速回复:谭浩强书中的3个数输出最大数算法问题
数据加载中...
 
   



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

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