This question was migrated from Software Engineering Stack Exchange because it can be answered on Stack Overflow. Migrated四年前。Learn more。
我能知道为什么
如果我输入
但是一个聪明的技巧是将它初始化为数组中的第一个值。
您可以在一张纸上用3个数组值来完成这一切,或者单步执行调试器并查看各个变量得到的值。
我能知道为什么
int count, biggest = -12000;
?为什么一定要-12000
我不明白这句话biggest = -12000
如果我输入
biggest = 10000
,它仍然可以编译。感谢您的建议,因为我目前正在学习c编程。你能尽可能清楚地理解吗?提前谢谢!#include <stdio.h>
#define MAX 10
int array[MAX], count;
int largest(int x[], int y);
int main()
{
/* Input MAX values from the keyboard. */
for (count = 0; count < MAX; count++)
{
printf("\nEnter an integer value:\n ");
scanf_s("&d", &array[count]);
}
/* Call the function and display the return value. */
printf("\n\nLargest value = %d\n", largest(array, MAX));
return 0;
}
/* Function largest() returns the largest value in an integer array */
int largest(int x[], int y)
{
int count, biggest = -12000;
for (count = 0; count < y; count++)
{
if (x[count] > biggest)
biggest = x[count];
}
getchar();
return biggest;
}
最佳答案
如果要在数组中找到最大的数字,可以将所有元素与当前的“最大”值进行比较。每当你发现一个较大的值,你就把它放到biggest
中。
要确保找到正确的值,必须将biggest
初始化为合理的值。
您的代码将biggest
初始化为-12000,因此如果数组中的所有元素的值都小于-12000,它将失败(除非您知道数组中的值,但随后应该在注释中提到这些值,以解释异常的初始化值)。
当然它会编译,但这并不意味着它会正常工作。
您可以将biggest
初始化为尽可能低的整数值(INT_MIN),
int largest(int x[], int y)
{
int count, biggest = INT_MIN; // lowest integer value possible
for (count = 0; count < y; count++)
{
但是一个聪明的技巧是将它初始化为数组中的第一个值。
int largest(int x[], int y)
{
int count, biggest = x[0]; // first value in your array
for (count = 1; count < y; count++) // starting with 2nd element
{
您可以在一张纸上用3个数组值来完成这一切,或者单步执行调试器并查看各个变量得到的值。
关于c - 学习C编程-将数组传递给函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30683731/
10-11 21:59