C-最大和最小值 - 哨兵控制的重复



我必须使用前哨控制的重复找到最大和最小值。

"最大值"无法正常工作。有人可以帮助我了解我的代码中有什么问题吗?

#include<stdio.h>
int main() { 
  int number;
  int min;
  int max;
  do {
    printf("Enter a number (-1 to quit): ");
    scanf("%d",&number);
    if( number >= 0 ) {
      if(number < min )
        min = number;
      if( number > max )
        max = number;
    }
    else if( number < 1 )
      printf("the number is not valid n");
  } 
  while( number != -1 );
  printf("Minimum=%dn",min);
  printf("Maximum=%dn",max);
  system("pause");
  return 0;
}

未初始化的变量的值为2674276,所有数字较小

但没有数字大于这个,所以这是您的最大值

您需要使用第一个数字初始化最小和最大的初始化

我会做

之类的事情
max = -1
min = -1
do {
    printf("Enter a number (-1 to quit): ");
    scanf("%d",&number);
    if( number >= 0 ) {
      if(max == -1)
      {
         max = number //Means it's the first time so your max and min are the first number
         min = number
      }
      else
      {
         if(number < min )
            min = number;
         if( number > max )
          max = number;
      }
    }
    else if( number < 1 )
      printf("the number is not valid n");
  } 
  while( number != -1 );

最新更新