我在这里发布问题很新,但长期以来一直在寻找答案。我已创建此代码以返回数组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>
我是编码的初学者,所以更简单的解释可能有所帮助。再次感谢
答案 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分配给数组的第一个元素,并检查剩余元素的条件。 如果第一个元素是最大值,那么它将被返回,否则返回更新的最大值(在通过循环检查之后)。