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

标签 c arrays function

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

相关文章:

在可执行文件中找不到 C++ 动态链接库

arrays - 如何将图像从另一个类传输到 UIImage 数组?

R:查找数据框列中特定字符的位置

c++ - 不正确的成员构造函数定义

c - 一个简单的 x86 反汇编器开源内核使用

c - 确定树是否有序的函数(即 BST)

在 Linux 中创建守护进程

c++ - 指向不同大小的成员数组的指针

java - 需要写一定的方法

javascript - 满足条件时从数组中提取值