gpt4 book ai didi

c - 如何确定3个整数中的最大和最小

转载 作者:行者123 更新时间:2023-11-30 18:16:47 25 4
gpt4 key购买 nike

我正在为大学做工作,我必须确定三个输入数字中哪一个是最大的、最小的和中间的一个。但不是某些值(例如 2 5 4),我真的不知道我正在经历什么。

我认为我在 else if 中遗漏了一些条件。

#include<stdio.h>

int main()
{
puts("Enter three numbers separated by a space to determine what is the greatest, what is the one in the middle and what is the lowest.\n");

unsigned int a, b, c;
scanf("%d %d %d", &a, &b, &c);
char z[] = "The three numbers are equal.\n";
char x1[] = "is greater than the two equal numbers you entered."; char x2[] = "Is less than the two equal numbers you entered.";
char y1[] = "is the largest,"; char y2[] = "is in the middle"; char y3[] = "is the lowest.";

if (a==b && b==c && c==a) printf("%s\n",z);
else if (a>b && b==c) printf("%d %s (%d)\n",a,x1,b); else if (a<b && b==c) printf("%d %s (%d)\n",a,x2,b);
else if (a>c && c==b) printf("%d %s (%d)\n",a,x1,c); else if (a<c && c==b) printf("%d %s (%d)\n",a,x2,c);
else if (b>a && a==c) printf("%d %s (%d)\n",b,x1,a); else if (b<a && a==c) printf("%d %s (%d)\n",b,x2,a);
else if (b>c && c==a) printf("%d %s (%d)\n",b,x1,c); else if (b<c && c==a) printf("%d %s (%d)\n",b,x2,c);
else if (c>a && a==b) printf("%d %s (%d)\n",c,x1,a); else if (c<a && a==b) printf("%d %s (%d)\n",c,x2,a);
else if (c>b && b==a) printf("%d %s (%d)\n",c,x1,b); else if (c<b && b==a) printf("%d %s (%d)\n",c,x2,b);

else if (a>b>c) printf("%d %s %d %s %d %s\n",a,y1,b,y2,c,y3);
else if (a<b<c) printf("%d %s %d %s %d %s\n",c,y1,b,y2,a,y3);
else if (b>a>c) printf("%d %s %d %s %d %s\n",b,y1,a,y2,c,y3);
else if (b<a<c) printf("%d %s %d %s %d %s\n",c,y1,a,y2,b,y3);
else if (c>a>b) printf("%d %s %d %s %d %s\n",c,y1,a,y1,b,y3);
else if (c>b>a) printf("%d %s %d %s %d %s\n",c,y1,b,y2,c,y3);
else if (a<b>c && c<a) printf("%d %s %d %s %d %s\n",b,y1,a,y2,c,y3); // b a c
else if (a<b>c && a<c && c<b) printf("%d %s %d %s %d %s\n",b,y1,c,y2,a,y3); // b c a
else if (a<c>b && b<a) printf("%d %s %d %s %d %s\n",c,y1,a,y2,b,y3); // c a b
else if (a<c>b && a<b) printf("%d %s %d %s %d %s\n",c,y1,b,y2,a,y3); // c b a
else if (b<a>c && c<b) printf("%d %s %d %s %d %s\n",a,y1,b,y2,c,y3); // a b c
else if (b<a>c && b<c) printf("%d %s %d %s %d %s\n",a,y1,c,y2,b,y3); // a c b



else {
printf("There's no valid data");}
}

我还想询问优化代码的建议。我们的想法是尽可能优化。

最佳答案

if (a>b>c)

这并不像你想象的那样。 C 不支持“链式条件”(很少有常见语言支持)。您需要明确检查 a > b && b > c 。否则,您将比较 a 与 b,如果产生“真”结果,即 C 中的 1,则您将比较 1 与 c,否则比较 0 与 c。当然,这不是您想要的。

编辑:至于优化,忘了吧。首先专注于让你的程序清晰简洁。所以你知道,任何正常的程序都不应该有像你现在这样的 if/else 子句墙。我会首先解决这个问题,因为这是一个突出的问题。

关于c - 如何确定3个整数中的最大和最小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9856463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com