我需要从数字中打印最大和最小数字。问题是,当我设置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条答案
按热度按时间jobtbby31#
将两者都设置为输入的第一个值。然后按原样使用当前代码。
(
system("pause");
除外,C不需要它。)igsr9ssn2#
打印数字中的最大和最小数字。
将
mn,mx
初始化为相反的两个极端,而不是同时初始化为0。在循环中不需要特殊情况。好的代码会努力降低循环的复杂性。当不存在最小值/最大值(空集)时,这容易且正确地检测到拐角情况。