以下代码打印输入符号的最大和最大负值(如果我们有-10和-5,-5更大)。我的问题是,是否有更好的方法来找到最大的负值(避免使用INT_MIN或其他笨拙的方法)。
#include <stdio.h>
#include <conio.h>
#include <limits.h>
int main()
{
float max=0, n, bnn=INT_MIN;
while(1){
printf("Enter an integer:");
if(scanf("%f", &n)!=1){
break;
}
if (n>max)
max=n;
else if(n>=bnn)
bnn=n;
}
printf("The maximum number of the entered ones is:%0.2f\n", max);
printf("The biggest negative number is:%0.2f", bnn);
getch();
}
答案 0 :(得分:2)
以0.0开始bnn然后
if ((n < 0) && ((bnn == 0.0) || (n > bnn)))
bnn = n;
答案 1 :(得分:1)
与NaN一起玩。
与Not-A-Number相比,始终返回false。
#include <stdio.h>
#include <limits.h>
int main() {
float max = 0.0 / 0.0; // NaN
float bnn = 0.0 / 0.0;
while (1) {
float n;
printf("Enter a number:");
if (scanf("%f", &n) != 1) {
break;
}
if (!(n <= max))
max = n;
// if by "biggest", OP means most negative
// if ((n < 0.0) && (!(n <= bnn)))
// if by "biggest", OP means greatest
if ((n < 0.0) && (!(n >= bnn)))
bnn = n;
}
printf("The maximum number of the entered ones is:%0.2f\n", max);
printf("The biggest negative number is:%0.2f\n", bnn);
return 0;
}