数组元素的位置

时间:2013-12-03 07:52:19

标签: c

我正在研究应该找到数组的最小和最大元素位置的程序。我写的代码找到了最大和最小的元素,但我无法弄清楚如何找到它在数组中的位置。任何提示将不胜感激。

这就是我现在所拥有的:

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;
}

2 个答案:

答案 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]