解题思路:
用函数求解的方法:
找三个数中的最大数需要进行两两比较,先随便选两个数,然后比较两数的大小,返回两数中较大的一个,然后再拿这个较大的数与剩余的一个数进行比较,返回最大值。
用例子表示
找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分
28 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复