我正在研究应该找到数组的最小和最大元素位置的程序。我写的代码找到了最大和最小的元素,但我无法弄清楚如何找到它在数组中的位置。任何提示将不胜感激。
这就是我现在所拥有的:
int main ()
{
int i;
float a[8] = {
1.90, 0.75, 3.30, 1.10, 2.00, 4.50, 0.80, 2.50
}; /* array of ints */
printf("\nValues are: \n");
for(i = 0; i < 8; i++)
printf("%.2lf\n", a[i]);
float max = a[0];
float min = a[0];
for (i = 0; i < 8; i++) {
if (a[i] > max) {
max = a[i];
} else if (a[i] < min) {
min = a[i];
}
}
printf ("Maximum element in an array : %.2f\n", max);
printf ("Minimum element in an array : %.2f\n", min);
return 0;
}
答案 0 :(得分:4)
你的程序看起来很不错。您只需要记住min和max元素的索引,如下所示:
int i_min = 0;
int i_max = 0;
if (a[i] > max) {
max = a[i];
i_max = i;
} else if (a[i] < min) {
min = a[i];
i_min = i;
}
然后打印出来。
您可以通过仅存储min和max元素的索引来稍微优化它,但它可能并不重要。
答案 1 :(得分:2)
存储位置,即i
,而不是a[i]
min=max=0;
for (i = 0; i < 8; i++)
{
if (a[i] > a[max])
{
max = i;
}
else if (a[i] < a[min])
{
min = i;
}
如果您要打印最小和最大数字,可以打印a[min]
和a[max]