从数字中获取最大和最小

时间:2018-10-02 18:22:40

标签: c ansi

我需要打印数字中的最大和最小数字。 问题是,当我将mn和mx设置为0时,它将无法正常工作,因为当用户写入数字1 2 3 4 5的最小值为0而不是1时,就是这样。

我的代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main() {

    int x, mx = 0, mn = 0;
    int i = 1, n;

    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        printf("Your number %d:", i);
        scanf("%d", &x);
            if (x > mx) {
                mx = x;
            };
            if (x < mn) {
            mn = x;
            };
    };

    printf("minimum is: %d", mn);
    printf("maximum is: %d", mx);
    system("pause");
    return 0;
}

2 个答案:

答案 0 :(得分:3)

将两者都设置为输入的第一个值。然后按原样使用当前代码。

system("pause");除外。C不需要。)

答案 1 :(得分:2)

  

从数字中打印最大和最小数字。

mn,mx初始化为相反的极端,而不是都初始化为0。无需在循环中进行特殊处理。好的代码会努力降低循环的复杂性。

当不存在最大值/最小值(空集)时,这可以轻松,正确地检测到拐角情况。

#include <limits.h>

// int mx = 0, mn = 0;
int mn = INT_MAX;
int mx = INT_MIN;

...  code as before

if (mn > mx) {
  puts("No input encountered");
} else {
  printf("minimum is: %d\n", mn);
  printf("maximum is: %d\n", mx);
}