我知道为什么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;
}
答案 0 :(得分:6)
如果要查找数组中的最大数字,请将所有元素与当前“最大”值进行比较。每当您找到更大的值时,请将其放入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个数组值,或者逐步调试调试器并查看相应变量的值。
答案 1 :(得分:0)
您可以比较数组的两个元素,并在比较它之后将数据存储在最大值中,然后在交换数字后,如果更大,这将是一个好的方法。 如果您使用喜欢:
if(x[count]>x[count+1])
biggest=x[count];
x[count]=x[count+1];
x[count+1]=biggest;
循环中的代码。
您尝试将最高价值分配给最大值。这不是一个值得的想法。