C语言一行代码没理解意思

来源:百度知道 编辑:UC知道 时间:2024/06/21 14:54:57
源代码如下
============================提问============================
为什么要给函数largest 二个局部变量 count biggest 赋值-12000呢 详细告诉我下 或者帮我解释下代码 分顶送上
==================================================================
#include <stdio.h>

#define MAX 10

int array[MAX], count;

int largest(int num_array[], int length);

int main( void )
{

for (count = 0; count < MAX; count++)
{
printf("Enter an integer value: ");
scanf("%d", &array[count]);
}

printf("\n\nLargest value = %d\n", largest(array, MAX));

return 0;
}

int largest(int num_array[], int length)
{
int count, biggest = -12000;

for ( count = 0; count < length; count++)
{
if (num_array[count] > biggest)
biggest = num_array[count];
}

return big

本程序中,用-12000表示非常小。
也就是说本程序,预计所有的数值,都比这个数大。
这个假设是非常危险的,一旦所有的数都比这个小,本程序就会出错了。
因此,我们可以说,这个程序写的比较烂!

(正确的思路是:先取第一个值,然后逐个比较所有的值!)
正确的写法,应该是这样的:
int largest(int num_array[], int length)
{
int count, biggest = num_array[0];

for ( count = 1; count < length; count++)
{
if (num_array[count] > biggest)
biggest = num_array[count];
}

return biggest;
}

之所以将-12000赋值给biggest,是因为代码的编写者认为用户输入的10个数字不会都小于-12000,或不希望largest函数返回小于-12000的值。假如输入的10个数字都小于-12000,该函数将返回-12000,可想而知,结果并不是用户输入的最大值。可以这样改一下:
int count, biggest = num_array[0];

for ( count = 1; count < length; count++)
{
if (num_array[count] > biggest)
biggest = num_array[count];
}

很简单,-12000表示预设的最大值,如果输入的数有比-12000大的,直接把输入的数赋值给biggest,以此来找到输入的最大的一个数!但是是如果输入的数都小于-12000,那么biggest=-12000.

这种写法其实是不好的,它限制了用户的输入,当所有数字都小于-12000时,程序就不能够给出正确答案,所以用于比较的数字一