【问题标题】:C : Find max value in array using 2 pointers (one for array, one for maximum)C:使用 2 个指针在数组中查找最大值(一个用于数组,一个用于最大值)
【发布时间】:2022-01-17 00:00:05
【问题描述】:

我正在尝试打印在数组中输入的最大值,但它一直给我最后输入的值,即使它不是输入的最大值。

这是练习说明:
使用指针来确定由五个类型双精度组成的数组的最大值。将一个指针应用于数组元素,将另一个指针应用于保存最大值的辅助变量。

这是我到目前为止所做的......

#include <stdio.h>
#include <stdlib.h>
#define array_double 5

int main() {
double m[array_double];
int c;
double *pArray;
double *pMax = 0;

printf("\nType values:\n");
for(c = 0; c < array_double; c++)
{
    scanf("%lf", &m[c]);
}


pArray = m;

for(c = 0; c < array_double; c++)
{
    if(pArray>pMax)
    {
        pMax = pArray;
    }
    pArray++;
}

printf("\nMax value: %.2lf", *pMax);
return 0;

}

【问题讨论】:

    标签: arrays c pointers


    【解决方案1】:

    你比较的是指针而不是内容。比较值的正确方法是取消引用指针,例如

    if (*pArray > *pMax) {
    ...
    }
    

    但要让它工作,你也必须初始化指针pMax

    pMax = m;
    

    【讨论】:

      【解决方案2】:

      以下修改后的程序产生输出,

          #include <stdio.h>
      #include <stdlib.h>
      #define array_double 5
      
      int main() {
      double m[array_double];
      int c;
      double *pArray;
      double *pMax = m;
      
      printf("\nType values:\n");
      for(c = 0; c < array_double; c++)
      {
          scanf("%lf", &m[c]);
      }
      
      
      pArray = m;
      
      
      for(c = 0; c < array_double; c++)
      {
          if(*pArray>*pMax)
          {
              pMax = pArray;
          }
          pArray++;
      }
      
      printf("\nMax value: %.2lf", *pMax);
      return 0;
      }
      

      【讨论】:

        猜你喜欢
        • 2022-01-22
        • 1970-01-01
        • 2017-07-02
        • 2015-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多