C 用于查找最大负数和最大负数的程序

C 用于查找最大负数和最大负数的程序,c,C,下面的代码打印在达到符号时输入的数字的最大值和最大负值(如果我们有-10和-5,-5更大)。我的问题是,是否有更好的方法找到最大的负值(避免INT_MIN或其他此类笨拙的方法) #包括 #包括 #包括 int main() { 浮点最大值=0,n,bnn=INT_最小值; 而(1){ printf(“输入一个整数:”); 如果(scanf(“%f”,&n)!=1){ 打破 } 如果(n>最大值) max=n; 否则,如果(n>=bnn) bnn=n; } printf(“输入的最大数量为:%0.

下面的代码打印在达到符号时输入的数字的最大值和最大负值(如果我们有-10和-5,-5更大)。我的问题是,是否有更好的方法找到最大的负值(避免INT_MIN或其他此类笨拙的方法)

#包括
#包括
#包括
int main()
{
浮点最大值=0,n,bnn=INT_最小值;
而(1){
printf(“输入一个整数:”);
如果(scanf(“%f”,&n)!=1){
打破
}
如果(n>最大值)
max=n;
否则,如果(n>=bnn)
bnn=n;
}
printf(“输入的最大数量为:%0.2f\n”,max);
printf(“最大负数为:%0.2f”,bnn);
getch();
}
在0.0启动bnn,然后

if ((n < 0) && ((bnn == 0.0) || (n > bnn)))
  bnn = n;
if((n<0)和&((bnn==0.0)| |(n>bnn)))
bnn=n;
与NaN一起玩得很开心

与比较总是返回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;
}
#包括
#包括
int main(){
浮点最大值=0.0/0.0;//NaN
浮动bnn=0.0/0.0;
而(1){
浮动n;
printf(“输入一个数字:”);
如果(scanf(“%f”,&n)!=1){
打破
}

如果(!(n)
INT\u MIN
,调用最大负值“MIN”有什么笨拙之处是一个糟糕的选择。至于实现它的方法,这是很常见的。如果你只对最大的负数感兴趣,那么在与之前的值进行比较之前,你不应该先检查
n
是否为负数吗?但是,是的,你需要从一些大的负数开始,所以
INT\u MIN
似乎很合理。你的“MIN”没有被限制为负数为什么要混合浮点和int?我的编译器在前两个浮点行上给出错误:错误2错误C2124:除以或模乘零。如果没有除法,程序将找到负数中最小的一个,而不是最大的一个。是否有必要使用| |(n>bnn))),我认为没有它它它会正常运行。不,因为那样bnn将只是第一个负数,而不是最大的。
#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;
}