C语言 从数字中获取最大值和最小值

4sup72z8  于 2023-03-28  发布在  其他
关注(0)|答案(2)|浏览(138)

我需要从数字中打印最大和最小数字。问题是,当我设置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;
}
jobtbby3

jobtbby31#

将两者都设置为输入的第一个值。然后按原样使用当前代码。
system("pause");除外,C不需要它。)

igsr9ssn

igsr9ssn2#

打印数字中的最大和最小数字。
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);
}

相关问题