我写了一段代码,试图告诉三个用户输入的数字中哪一个是最大的。但是,我无法理解为什么我的代码会针对输入3, 1, 2
而中断,并且适用于输入55, 54, 56
。
我的代码:
main()
{
int a,b,c;
printf("enter three numbers");
scanf("%d %d %d",&a,&b,&c);
if(a>b && a>c)
printf("%d is greatest",a);
if(b>a && b>c)
printf("%d is greatest",b);
else printf("%d is greatest",c);
getch();
}
我在做什么导致此错误,我该怎么做才能修复它?
答案 0 :(得分:2)
你错过了“其他如果”,这是肯定的。
main()
{
int a,b,c;
printf("enter three numbers: ");
scanf("%d %d %d",&a,&b,&c);
if(a>b && a>c)
printf("%d is greatest",a);
else if(b>a && b>c)
printf("%d is greatest",b);
else
printf("%d is greatest",c);
}
答案 1 :(得分:1)
您需要在第else
行之前添加if(b>a && b>c)
。
即。
if(b>a && b>c)
应该是
else if(b>a && b>c)
答案 2 :(得分:1)
人们在这里说的是真的,但为了最佳实践,我会减少ifs中的检查:
main()
{
int a,b,c;
printf("enter three numbers: ");
scanf("%d %d %d",&a,&b,&c);
if(a>=b) //it's not b.
{
if(a>=c)
{
printf("%d is greatest",a);
}
else
{
printf("%d is greatest",c);
}
}
else // here you know that b > a, then it's not a.
{
if(b>=c)
{
printf("%d is greatest",b);
}
else
{
printf("%d is greatest",c);
}
}
}
答案 3 :(得分:1)
试试这个
<强>条件? exp1:exp2;
评估为
如果条件为真,则返回 exp1 否则返回 exp2
int main(){
int a,b,c;
printf("enter three numbers");
scanf("%d %d %d",&a,&b,&c);
int d = (a >= b)? a: b;
d = (d >= c)? d: c;
printf("%d is greatest", d);
}
答案 4 :(得分:0)
如果
,你的第二个if语句应该是答案 5 :(得分:0)
只需在代码中添加一个简单的else if语句,它就可以正常工作:
main()的 {
int a,b,c;
printf("enter three numbers");
scanf("%d %d %d",&a,&b,&c);
if(a>b && a>c)
printf("%d is greatest\n",a);
else if(b>a && b>c)
printf("%d is greatest\n",b);
else printf("%d is greatest\n",c);
//getch();
}
答案 6 :(得分:0)
你为什么不尝试这个。整洁。你的代码的问题在于你错过了一个可以与if一起使用的其他内容。
main() {
int a,b,c;
printf("enter three numbers");
scanf("%d %d %d",&a,&b,&c);
if(a>b && a>c)
printf("%d is greatest\n",a);
else if(b>c)
printf("%d is greatest\n",b);
else printf("%d is greatest\n",c);
//getch();
}
答案 7 :(得分:0)
#define MAX(a,b) (((a)>=(b))?(a):(b))
#define MAX3(a,b,c) MAX(MAX(a,b),c)