解题思路注意事项:


找出三个数的最大值,三目运算符可以很简单的做到:

(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;
}


点赞(14)
 

0.0分

40 人评分

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

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

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

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

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

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

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

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

评论列表 共有 13 条评论

奔跑吧C 5年前 回复TA
#define ZUI_DA(a,b,c) a>b?(a>c?a:c):(b>c?b:c)
float Zui_Da(float a, float b, float c)
{
	if (a < b)
	{
		a = b;
	}
	
	if (a < c)
	{
		return c;
	}
	else
		return a;
}
int main()
{
	float a, b, c;
	scanf("%f%f%f", &a, &b, &c);
	printf("%.3f\n",Zui_Da(a, b, c));
	printf("%.3f\n", ZUI_DA(a,b,c));
	return 0;
}
雨一直下NOIP 5年前 回复TA
#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("%1f %1f %1f",&x,&y,&z);
	max1 = max(x,y,z);
	max2 = MAX(x,y,z);
	printf("%.3f\n%.3f\n",max1,max2);
	return 0;
}

是这个,不是上面的
雨一直下NOIP 5年前 回复TA
#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;
}
这个为什么错了?求大佬解答