程序找到最大和最大负数

时间:2014-01-08 20:15:35

标签: c

以下代码打印输入符号的最大和最大负值(如果我们有-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();
}

2 个答案:

答案 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;
}