gpt4 book ai didi

c - 我正在创建一个程序,它接受用户的五个输入并使用另一个函数显示最大的输入

转载 作者:行者123 更新时间:2023-11-30 14:37:02 25 4
gpt4 key购买 nike

我创建了一个程序,它使用 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);
}


我想在获取用户输入后打印元素中的最大值,,,,

谢谢

最佳答案

您的代码中主要存在三个错误。

  1. 您正在使用 get_max(list[size]); 调用该函数而不是get_max(list); 。当你给予 list[size]作为参数,它指向第 6 个元素(list[5] 数组索引从 0 - size-1 开始)。所以它本身就存在两个错误。没有第六个元素,数组将超出范围,这可能导致未定义的行为。另外,即使您的意思是 list[4]那么就会出现逻辑错误,即您正在传递数组最后一个元素的地址。所以它肯定会超出范围并导致函数内出现未定义的行为。 get_max(list);是正确的做法。

  2. 您已使用large=list[size]里面get_max()函数将创建未定义的行为,如第一点中所述。(数组索引从 0 开始,即 0-(size-1) 是有效访问)。
    例如:if(large < list[size])有未定义的行为。应该是list[i]在节目中。您必须遍历所有数组元素才能找到最大的数字。

  3. 变量 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com