寻找最小值和最大值

时间:2013-08-16 11:01:00

标签: c loops for-loop logic

我需要编写一个重复程序,它可以获得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;
}

这只会将1 ans 0显示为最大值和最小值。我的逻辑背后的问题是什么?

3 个答案:

答案 0 :(得分:7)

包含以下头文件:

#include <limits.h>

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

int i, maximum, minimum, number;

......来:

int i, maximum, minimum, number;

maximum = INT_MIN;
minimum = INT_MAX;

...并更改以下内容:

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

......来:

maximum = (number > maximum) ? number : maximum;
minimum = (number < minimum) ? number : maximum;

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

#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;
}

<强>注:

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

if

您还应该使用if ( number > maximum ) maximum = number; if ( minimum < minimum ) minimum = number; 函数指定不应使用特殊main参数向其传递任何参数,如下所示:

void

... from C11 specification 6:11:6(第179页)

  

使用带空括号的函数声明符(不是   prototype-format参数类型声明符)是一个过时的   特征

答案 1 :(得分:1)

(数字&gt;最大值)等于1(布尔值为真),当它是真的时,它是0,当它不是时。与minumum相同。您不能在任何地方将数字分配到最大值或最小值,仅进行最大值分配,然后进行比较时最小值为布尔值0和1(&lt;,&gt;)。如果要获得最大数量,则必须指定maximum = number,如果number> gt; maximum。希望能帮助到你。

哦,其他的事情是你没有初始化(给出起始值)最大和最小变量。因此,当您比较数字&gt;最大值时,此时您的最大值是多少?想一想。

答案 2 :(得分:0)

您不需要limits.h。

使用以下代码。

#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)? number : maximum;
        minimum=(number<minimum)? number : minimum;
    }
    printf("\n maximum is :%d ,& minimum is :%d ",maximum, minimum) ;
    getch();   
    return 0;
}

这很有效。