爱编程的小笨孩


私信TA

用户名:2119394720

访问量:727

签 名:

我在成长,总有一天我会足够优秀。

等  级
排  名 2155
经  验 1866
参赛次数 2
文章发表 30
年  龄 0
在职情况 学生
学  校 黄河科技学院
专  业 软件工程

  自我简介:

一只想要当凤凰的鸡

解题思路:

用函数求解的方法:
找三个数中的最大数需要进行两两比较,先随便选两个数,然后比较两数的大小,返回两数中较大的一个,然后再拿这个较大的数与剩余的一个数进行比较,返回最大值。

用例子表示

找a,b,c三个数中的最大值,现将啊a和b比较,如果a大,则把a和c比较,找出其中最大值并返回;如果b大,则把b和c比较,找出其中最大值并返回。

用宏定义求解的方法:

直接用有参宏定义来定义一个表达式a>b?(a>c?a:c):(b>c?b:c),这个表达式叫条件表达式,他的一般形式为:   表达式1?表达式2:表达式3 。 他的执行过程是这样的,先计算表达式1,如果表达式1为真,则计算表达式2;如果表达式1为假,则计算表达式3。

下面具体阐述一下a>b?(a>c?a:c):(b>c?b:c)这个式子所表达的意思:

先判断表达式a>b,第一种情况:如果a>b为真,则判断(a>c?a:c),括号里边又是一个条件表达式,所以继续判断,如果a>c为真,则返回a,否则返回c。第二种情况:如果a>b为假,则判断(b>c?b:c),这里的括号里边也是一个条件表达式,因此也继续判断,如果b>c,则返回b,否则返回c。

参考代码:

#include<stdio.h>
#define M(a,b,c) a>b?(a>c?a:c):(b>c?b:c)
float Max(float m,float n)
{
   if(m>n)
   {
       return m;
   }
   else
   {
       return n;
   }
}
int main()
{
    float a,b,c;
    scanf("%f %f %f",&a,&b,&c);
    //调用函数输出三个数中最大的数
    printf("%.3f",Max(a,Max(b,c)));
    printf("\n");
    //使用宏定义输出的三个数中最大的数
    printf("%.3f",M(a,b,c));
    return 0;
}


 

0.0分

1 人评分

  评论区