虽然我可以写一个代码的问题。我不认为这是很短和适当的。
#include <stdio.h>
void main()
{
float a, b, c;
printf("Enter ");
printf("\na: ");
scanf("%f", &a);
printf("b: ");
scanf("%f", &b);
printf("c: ");
scanf("%f", &c);
if (a == b && a == c) {
printf("All are equal");
}
else if (a == b & a > c) {
printf("%f is greatest", a);
}
else if (a == b & a < c) {
printf("%f is greatest",c);
}
else if (a == c & a < b) {
printf("%f is greatest", b);
}
else if (a == c & a > b) {
printf("%f is greatest", a);
}
else if (b == c & b < a) {
printf("%f is greatest", a);
}
else if (b == c & b > a) {
printf("%f is greatest", b);
}
else if (a > b && a >= c) {
printf("%f is the greatest", a);
}
else if (b > a && b > c) {
printf("%f is the greatest", b);
}
else if (c > a && c > b) {
printf("%f is the greatest", c);
}
}
字符串
我怎样才能缩短代码,使其更具可读性,只使用条件。
3条答案
按热度按时间mhd8tkvw1#
@klutt关闭了重复的问题。
Maximum of three numbers in C
但是我看了一下提供的类似问题的参考资料,并不满意。
首先,在提供的参考中,对类似问题的回答完全忽略了所有三个数字彼此相等的情况。例如,在某些回答中,使用了确定最大值的函数或宏,但两者都不适合确定所有三个数字彼此相等。但在这种情况下,原始问题必须输出适当的消息。
同样有趣的是,指出确切的数字a,b或c的名称比其他的大。例如,如果a等于b,并且两者都大于c,那么在原始问题中输出数字a。为了清楚起见,变量a的名称应该出现在输出中。
我可以提出以下建议。
字符串
当然,最好增加一个检查,以确保输入的三个数字是正确的。
yk9xbfzb2#
如果你只创建一个额外的函数,这会变得简单得多:
字符串
现在:
型
其中,这相当于:
型
或者避免使用三元表达式:
型
pzfprimi3#
给出3个数字并尝试查找:
1.如果全部相等,则报告全部相等。
1.否则打印最大值。
如何缩短代码...?
OP的方法,在最坏的情况下,做了许多比较。甚至其他答案执行多达4个比较。
我Assert它最多需要在
a,b,c
之间进行3次比较(假设没有一个是NAN)。字符串