原题链接:[编程入门]宏定义之找最大数
解题思路注意事项:
找出三个数的最大值,三目运算符可以很简单的做到:
(x>y?x:y)>z?(x>y?x:y):z
首先x和y比较,接着x和y间的最大值和z比较,如果大于z则输出x和y之间较大的指,如果x和y之间的较大值小于z,则输出z。
参考代码:
#include<stdio.h>
#define MAX(x,y,z) (x>y?x:y)>z?(x>y?x:y):z
double max(double x,double y,double z)
{
return (x>y?x:y)>z?(x>y?x:y):z;
}
int main()
{
double x,y,z,max1,max2;
scanf("%lf%lf%lf",&x,&y,&z);
max1 = MAX(x,y,z);
max2 = max(x,y,z);
printf("%.3lf\n%.3lf\n",max1,max2);
return 0;
}0.0分
40 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> #include<math.h> #define maxabc(m,n,p) (m>n?m:n)>p?(m>n?m:n):p int main() { float a,b,c,max1; scanf("%f %f %f",&a,&b,&c); max1 = fmaxf(fmaxf(a,b),c); printf("%.3f\n",max1); printf("%.3f",maxabc(a,b,c)); return 0; }#include<stdio.h> #define maxNum1(a,b,c) (a>b?(a>c?a:c):(b>c?b:c)) float maxNum2(float a,float b,float c); int main() { float a,b,c; scanf("%f %f %f",&a,&b,&c); printf("%.3f\n%.3f\n",maxNum2(a,b,c),maxNum1(a,b,c)); return 0; } float maxNum2(float a,float b,float c){ return (a>b?(a>c?a:c):(b>c?b:c)); }#include<stdio.h> double max(double x,double y,double z); #define MAX(x,y) x>y ? x:y //如果x>y,那么MAX(x,y)的值就是x,否则就是y int main() { double a,b,c,maxi,maxj; scanf("%lf %lf %lf",&a,&b,&c); max(a,b,c); //依次比较 // printf("%.3lf",maxj); return 0; } double max(double a,double b,double c) { double maxa,maxb; maxa=MAX(a,b); maxb=MAX(maxa,c); printf("%.3lf",maxb); //return maxa; }#include<stdio.h> #define MAX(a,b,c) max1=a,((max1<b?:max1=b)>c?:max1=c); int main() { double max2(double a,double b,double c); double a,b,c,max1; scanf("%lf%lf%lf",&a,&b,&c); max2(a,b,c); MAX(a,b,c); printf("%.3lf\n",max1); } double max2(double a,double b,double c) { double max=a; if(max<b) { max=b; } if(max<c) { max=c; } printf("%.3lf\n",max); return 0; } 哪里错误了呢,这个典型的问题有助于提高大家C语言编程能力