使用函数优化数组中的代码 - 最大元素

时间:2016-05-22 04:11:58

标签: c++ c arrays function

我在这里发布问题很新,但长期以来一直在寻找答案。我已创建此代码以返回数组x []中的最大元素。我确实得到了结果,但并未通过所有测试用例。我已经多次检查过,但没有弄清楚要做些什么来纠正它。 我在部分在线培训中执行此操作,因此测试用例值不会公开显示。该代码产生了85.71%的积极结果。请帮我做100%。谢谢。
问题是创建一个函数findMax(int n,int * a)来返回最大元素。 WHERE
第一个参数对应于数组中元素的数量 第二个参数对应于指向数组的指针。

<style>
        body {
            margin: 150px;
        }

        .semi-circle-1 {
            display: flex;
        }

        .semi-circle-2 {
            display: flex;
        }

        #topleft {
            height: 0px;
            width: 0px;
            border: 90px solid red;
            border-top-left-radius: 180px;
        }

        #topright {
            height: 0px;
            width: 0px;
            border: 90px solid blue;
            border-top-right-radius: 180px;
        }

        #bottomleft {
            height: 0px;
            width: 0px;
            border: 90px solid green;
            border-bottom-left-radius: 180px;
        }

        #bottomright {
            height: 0px;
            width: 0px;
            border: 90px solid yellow;
            border-bottom-right-radius: 180px;
        }

    </style>

</head>

<body>

    <div class="semi-circle-1">
        <div id="topleft"></div>
        <div id="topright"></div>
    </div>
    <div class="semi-circle-2">
        <div id="bottomleft"></div>
        <div id="bottomright"></div>
    </div>

我是编码的初学者,所以更简单的解释可能有所帮助。再次感谢

3 个答案:

答案 0 :(得分:4)

max=a[0]=0;

这会将a[0]max都设为0。

main()中的循环从索引1开始填充数组。将a[0]设置为0这里绝对没有任何结果。这本身并不是问题,但将max设置为0是。这是因为如果main()初始化的数组中的所有元素都是负数,那么因为max最初设置为0,所以返回的最大值将为0而不是数组中的最高负值。 / p>

您应该进行以下更改。

1)x[1]中的循环应该填充x[k]main(),而不是填充x[0]x[k-1]。传统上,C和C ++中的数组是基于0的。

2)你的函数中的循环也应该相应调整,当然不应该将a[0]设置为0。它应该只设置max=a[0]

答案 1 :(得分:0)

#include<stdio.h>
int findMax(int i,int *a)
{
     max=a[0]; // you were setting a[0] to zero
     for(i=1;i<n;i++) // there are n numbers beginning from position 0 
     {
       if(a[i]>max)
       max=a[i];
      }
    return(max);
 }
int main()
{
  int i,x[16],k,max;
  printf("Enter the number of elements in the array\n");
  scanf("%d",&k);
  printf("Enter the elements in the array\n");
  for(i=0;i<k;i++)
  {
  scanf("%d",&x[i]);
  }
  max=findMax(k,x);
  printf("The maximum element in the array is %d",max);
  return 0;
}

答案 2 :(得分:0)

在您的代码中,您设置了max = 0。考虑所有数字为负数的测试用例,那么你的代码将返回0,这是不正确的。

正确的方法: 将max分配给数组的第一个元素,并检查剩余元素的条件。         如果第一个元素是最大值,那么它将被返回,否则返回更新的最大值(在通过循环检查之后)。