判断a,b,c三数值最大值,为什么我这样写结果为0
#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
int a = 0;
int b = 0;
int c = 0;
int m = 0;
scanf("%d,%d,%d", &a, &b, &c);
if ((a > b > c) || (a > c > b))
m = a;
else if ((b > a > c) || (b > c > a))
m = b;
else if ((c > a > b) || (c > b > a))
m = c;
printf("%d", m);
return 0;
}
a>b>c
->
a>b&&b>c
别的类似
参考GPT和自己的思路:
您的代码有一个语法错误。 在C语言中,不能使用“a>b>c”之类的形式来比较三个值。 您应该使用“(a > b && a > c)”之类的形式来进行这种比较。 修改您的代码如下所示:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int m = 0;
scanf("%d,%d,%d", &a, &b, &c);
if ((a > b && a > c) )
m = a;
else if ((b > a && b > c) )
m = b;
else if ((c > a && c > b) )
m = c;
printf("%d", m);
return 0;
}
这个代码应该可以正确地找到给定三个数的最大值。
由于三个if语句都存在问题,导致三个if语句都没有执行,因此m的初始值为0,所以打印出来的结果为0;
程序修改如下所示:
#define _CRT_SECURE_NO_WARNINGS 这个宏定义实际是可以取消的,没什么用处
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int m = 0;
scanf("%d,%d,%d", &a, &b, &c);
if ((a > b)&&(a > c) )
m = a;
else if ((b > a ) && (b > c )
m = b;
else if ((c > a ) && (c > b))
m = c;
printf("%d", m);
return 0;
}
该回答引用GPTᴼᴾᴱᴺᴬᴵ
您的代码中 if ((a > b > c) || (a > c > b)) 这样的写法是错误的。在 C 语言中,比较运算符 > 的优先级低于逻辑运算符 ||,因此这个表达式会被解析成 (a > b) > c,即先判断 a > b 的值是否大于 c 的值,而不是判断 a 是否大于 b 且 b 是否大于 c。
正确的写法应该是:
if ((a > b && a > c) || (b > a && b > c))
m = (a > b) ? a : b;
else
m = c;
这里使用了逻辑运算符 && 进行判断,表示同时满足两个条件。最后的求最大值使用了条件运算符 ?:,根据条件判断返回两个不同的值。
不知道你这个问题是否已经解决, 如果还没有解决的话: