【发布时间】:2019-03-12 09:55:09
【问题描述】:
我知道这对你来说是很容易的问题,但对我作为初学者来说却很难。去做事情。我必须创建一个程序,该程序将需要尽可能多的数字,然后从中写入最大值和最小值。数字可以有小数,所以这就是为什么要加倍。就我在循环开始之前遇到的麻烦而言,一切都很好。我总是在最小值和最大值的输出上得到 0。有谁知道为什么? 代码:
main() {
int a = 0, b = 0, min = 1000, max = 0;
printf("How many numbers do you want to enter\n");
scanf("%d", & a);
b = a;
double n[b];
printf("Write those numbers\n");
for (b = 0; a > b; b++) {
scanf("%lf", & n[b]);
}
b = 0;
while (1) {
if (n[b] < n[b + 1])
max = n[b + 1];
if (min > n[b])
n[b] = min;
b++;
if (b == a)
break;
}
printf("Minimum: %lf\nMaximum: %lf", min, max);
}
【问题讨论】:
-
为什么是
min和maxint而不是double? -
min = 1000, max = 0是你真正的极限吗?也许你应该使用double min = DOUBLE_MAX, max = DOUBLE_MIN。 -
... 甚至
max = -DOUBLE_MAX -
如果您使用 gcc 或 clang 进行编译,您会收到一条警告,告诉您为什么您的
printf语句打印为零。 -
根本没有注意到,我是不是很笨哈哈...现在可以了,谢谢!祝你有美好的一天!
标签: c while-loop double max minimum