2

センチネル制御の繰り返しを使用して、最大値と最小値を見つける必要があります。

「最大」が正しく機能していません。コードの何が問題なのか、誰か手がかりを教えてもらえますか?

#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=%d\n",min);
  printf("Maximum=%d\n",max);

  system("pause");

  return 0;
}
4

1 に答える 1

2

初期化されていない変数の値は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 );
于 2012-11-06T19:30:20.273 に答える