Duš*_*háč 0 c double max minimum while-loop
我知道这对你来说非常简单,但对我来说,作为初学者非常努力.为了得到的东西.我必须创建程序,它将获取我想要的数量,然后从它们写入最大值和最小值.数字可以有小数,所以这就是为什么加倍.就我的故障而言,一切都很顺利,直到周期开始.最小和最大值的输出总是为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);
}
Run Code Online (Sandbox Code Playgroud)
有很多问题:
min
为1000,如果输入的所有数字都大于那么?min
也max
应该是双打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);
}
Run Code Online (Sandbox Code Playgroud)