考虑以下计划。该程序编译并运行时没有错误指示,但其输出不正确。它有一个错误。必须更改哪一行才能使程序生成正确的输出?
1 #include <stdio.h>
2 /* Find the minimum value in an array of doubles. */
3 double array_min (double x[], int length )
4 {
5 int i;
6 double min = 0.0;
7
8 for (i = 0; i < length; i++)
9 {
10 if (x[i] < min)
11 {
12 min = x[i];
13 }
14 }
15 return min;
16 }
17
18 int main( void )
19 {
20 double n[] = {12.5, 17.2, 11.4, 8.1};
21 double min;
22
23 min = array_min (n, 4);
24 printf("The minimum value is %lf\n", min );
25 return 0;
26 }
编辑:我搞砸了格式化,但现在已修复了。我保留了行号以供参考,它们是问题的一部分。
答案 0 :(得分:2)
将分钟更改为 min = 1000000.0; 而不是min = 0.0; (大量的) 为了轻松获得min,ic中数组中的最小数字是2,如果min已经小于它,你将无法检测到它,但如果min更大,它可以获得比巨大数字更小的任何值。在初始化中是理想的。
答案 1 :(得分:1)
double min = n > 0? x[0] : -1; // '-1' or whatever invalid number
答案 2 :(得分:0)
本地变量min
正在初始化为0:
double min = 0
n[]
中的每个输入值都更大大于。
您需要更改min
的初始化值才能使此功能正常工作。
您有 2 < / strong>选项见下文:
min = 1.7976931331348623157E308;
min
初始化为x[0]
的值,如下所示:min = x[0];
我会更快选择选项2,因为它是比较数组中的实际值而不是使用近似值。