int main() {
int a, b, c, d, e, f;
scanf("%d %d %d %d %d %d", &a, &b, &c, &d, &e, &f);
int max = (a < 0 ? a : 0);
int mmin = (a > 0 ? a : 0);
max = (b < 0 && b > max ? b : max);
max = (c < 0 && c > max ? c : max);
max = (d < 0 && d > max ? d : max);
max = (e < 0 && e > max ? e : max);
max = (f < 0 && f > max ? f : max);
mmin = (b > 0 && b < mmin ? b :mmin);
mmin = (c > 0 && c < mmin ? c :mmin);
mmin = (d > 0 && d < mmin ? d :mmin);
mmin = (e > 0 && e < mmin ? e :mmin);
mmin = (f > 0 && f < mmin ? f :mmin);
printf("The max negative number is: %d\n", max);
printf("The min positive number is: %d\n", mmin);
}
所以..这是我的代码,当我尝试运行它时,它的输出有问题,例如“ 1 -2 3 -4 5 -6 ”,它给我的最大负数是 1,最小正数是0(但不是-2),有人知道为什么吗?
您的代码最多只能为您提供您正在寻找的两件事之一。如果第一个数字为正数,您将获得最小的正值,而另一个数字为零。如果第一个数字为负数,则反之亦然。问题在于将第一个数字 (
max
) 的 mmin
、a
或两者都设置为零。一旦其中一个为零,无论其余值如何,它都将保持为零。
不要从零开始。将
max
初始设置为 INT_MIN
,并将 mmin
设置为 INT_MAX
,两者均来自 #include <limits.h>
。然后处理 a
, b
, ...