我创建了一个程序,它使用 int 类型的数组从用户那里获取输入,并且我想使用用户定义函数来显示数组中的最大元素, 问题是我通过函数传递了数组,但它没有显示最大的元素
#include <stdio.h>
#define size 5
void get_max(int list[size]);
int main()
{
int list[size];
printf("Enter five numbers : ");
int i;
for (i=0;i<5;i++)
{
scanf("%d",&list[i]);
}
printf("\n");
for(i=0;i<5;i++)
{
printf("Element in array list[%d] = %d\n",i,list[i]);
}
get_max(list[size]);
}
void get_max(int list[size])
{
int large,i;
for (i=0;i<5;i++)
{
if(large < list[size])
{
large=list[size];
}
}
printf("\nLargest element in array list %d",large);
}
我想在获取用户输入后打印元素中的最大值,,,,
谢谢
最佳答案
您的代码中主要存在三个错误。
您正在使用
get_max(list[size]);
调用该函数而不是get_max(list);
。当你给予list[size]
作为参数,它指向第 6 个元素(list[5] 数组索引从 0 - size-1 开始)。所以它本身就存在两个错误。没有第六个元素,数组将超出范围,这可能导致未定义的行为。另外,即使您的意思是list[4]
那么就会出现逻辑错误,即您正在传递数组最后一个元素的地址。所以它肯定会超出范围并导致函数内出现未定义的行为。get_max(list);
是正确的做法。您已使用
large=list[size]
里面get_max()
函数将创建未定义的行为,如第一点中所述。(数组索引从 0 开始,即 0-(size-1) 是有效访问)。
例如:if(large < list[size])
有未定义的行为。应该是list[i]
在节目中。您必须遍历所有数组元素才能找到最大的数字。变量
large
未定义。您应该将其设置在if(large < list[size])
之前否则可能会导致应用程序中出现未定义的行为。所以设置large=list[0]
.
另一个提示是,当您尝试查找最大(或最小)数字时,您应该设置 large=list[0]
(或输入数组中的任何元素),如下面的代码所示。否则,如果您设置 large=0
最初,如果所有输入的数字都是负数,那么程序将输出错误的结果。
修复上述错误将使您的代码运行。见下文:
#include <stdio.h>
#define size 5
void get_max(int list[size]);
int main()
{
int list[size];
printf("Enter five numbers : ");
int i;
for (i=0;i<5;i++)
{
scanf("%d",&list[i]);
}
printf("\n");
for(i=0;i<5;i++)
{
printf("Element in array list[%d] = %d\n",i,list[i]);
}
get_max(list);
}
void get_max(int list[size])
{
int large,i;
large=list[0];
for (i=1;i<5;i++)
{
if(large < list[i])
{
large=list[i];
}
}
printf("\nLargest element in array list %d",large);
}
关于c - 我正在创建一个程序,它接受用户的五个输入并使用另一个函数显示最大的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57648731/