gpt4 book ai didi

c - 如何在 while 循环中找到最大值和最小值 - c

转载 作者:太空宇宙 更新时间:2023-11-04 05:22:52 25 4
gpt4 key购买 nike

我知道这对你来说很容易,但对我这个初学者来说很难。开始做事。我必须创建一个程序,它可以获取任意数量的数字,然后从中写入最大值和最小值。数字可以有小数,所以这就是为什么加倍。就我的故障排除而言,一切都很顺利,直到循环开始。我总是在最小值和最大值的输出上得到 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);
}

最佳答案

存在多个问题:

  1. 您将 min 定义为 1000,如果输入的所有数字都大于该值怎么办?
  2. minmax 也应该是双数
  3. 通过使用 n[b + 1]b == a 时你正在寻找数组边界

解决这个问题的最佳方法是在一个循环中计算最小值/最大值,如下所示:

main() {
int i, len;
double tmp, min = NAN, max = NAN; // its better to initialize values to NAN to cover case when len is 0
printf("How many numbers do you want to enter\n");
scanf("%d", & len);
for (i = 0; i < len; ++i) {
scanf("%lf", & tmp);
if ((i == 0) || (tmp < min)) min = tmp;
if ((i == 0) || (tmp > max)) max = tmp;
}
printf("Minimum: %lf\nMaximum: %lf\n", min, max);
}

关于c - 如何在 while 循环中找到最大值和最小值 - c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52690216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com