解题思路:

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

用例子表示

找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.0分

28 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 6 条评论

一生都得酷 2月前 回复TA
666哥们给你秀到了
bolide 11月前 回复TA
秀我一脸
功夫一定要练 2年前 回复TA
好哥哥,太牛了,学到了
鼎食之犬 2年前 回复TA
条件运算符不是从右向左吗,建议解释的时候顺序也这么说
在路上 2年前 回复TA
又遇到你了
mikan 2年前 回复TA
6