我需要打印数字中的最大和最小数字。 问题是,当我将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;
}
答案 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);
}