寻找最小值和最大值

JAc*_*Ace 0 c logic loops for-loop

我需要编写一个重复程序来获取5个数字并显示最大值和最小值.我暂时得到了这个,但是没有用.

#include <stdio.h>
#include <conio.h>
int main()
{
    int i,maximum, minimum, number;
    int count=0;
    const int n = 5;
    for(i = 0 ; i < n; i++)
    {
        printf("enter number %d :",i+1) ;
        scanf("%d",&number) ;
        maximum=(number>maximum);
        minimum=(number<minimum);
    }
    printf("\n maximum is :%d ,& minimum is :%d ",maximum, minimum) ;
    getch();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这只是将1ans 显示0为max和min.我的逻辑背后的问题是什么?

Jac*_*ack 7

包括以下头文件:

#include <limits.h>
Run Code Online (Sandbox Code Playgroud)

...然后更改以下内容:

int i, maximum, minimum, number;
Run Code Online (Sandbox Code Playgroud)

... 至:

int i, maximum, minimum, number;

maximum = INT_MIN;
minimum = INT_MAX;
Run Code Online (Sandbox Code Playgroud)

...并更改以下内容:

maximum = ( number > maximum );
minimum = ( number < minimum );
Run Code Online (Sandbox Code Playgroud)

... 至:

maximum = (number > maximum) ? number : maximum;
minimum = (number < minimum) ? number : maximum;
Run Code Online (Sandbox Code Playgroud)

......整个程序可以写成如下:

#include <limits.h>
#include <stdio.h>

int main( void ) {
  int maximum = INT_MIN, 
      minimum = INT_MAX,
      number;

  int const inputs_upperbound = 5;

  for ( int i = 0; i < inputs_upperbound; i++ ) {
    printf( "Enter number %d: ", i );
    scanf( "%d", &number );

    if ( number > maximum ) maximum = number;
    if ( number < minimum ) minimum = number;
  }

  printf( "The minimum number was %d, and the maximum number was %d.\n", minimum, maximum );

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

备注:

逻辑运算符><返回truefalse(因此任何非零整数,1表示true或0表示false).您打算做的是改变与该结果相关的值maximumminimum值,因此需要?:运算符.或者,您可以使用控制流语句if,如下所示:

if ( number > maximum ) maximum = number;
if ( minimum < minimum ) minimum = number;
Run Code Online (Sandbox Code Playgroud)

您还main应该使用特殊void参数指定不应将任何参数传递给它的函数,如下所示:

int main( void ) {
  // ... code.
}
Run Code Online (Sandbox Code Playgroud)

...... 来自C11规范6:11:6(第179页)

使用功能与空括号声明符(未原型格式参数类型说明符)是一个过时特征.

  • @zubergu对于像这样的算法,初始化max为INT_MIN,min为INT_MAX是很常见的做法. (2认同)