【发布时间】:2018-10-03 03:11:05
【问题描述】:
我需要从数字中打印最大和最小数字。 问题是,当我将 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;
}
【问题讨论】:
-
在
for- 和if之后不需要;使用花括号的语句:};应该只是} -
尽快取消学习
for (i = 1; i <= n; i++),改用for (i = 0; i < n; i++)。当您要使用数组时,您将需要它(这可能是您书中的下一个)。 -
那是我们大学老师的话 :D 但在这种情况下,使用 1 而不是 0 来获得更好的用户体验确实更好。
-
我明白了——提示。但是你可以在那里打印
i+1。相信我:坚持从 1 开始会咬你一口。仅针对提示解决它是完全正常的事情。 -
if (x < mn)第一次为真,就像if (x < 0)。用大数初始化mn更有意义。int mn = INT_MAX; int mx = INT_MIN;.