C:使用 2 个指针在数组中查找最大值(一个用于数组,一个用于最大值)

Posted

技术标签:

【中文标题】C:使用 2 个指针在数组中查找最大值(一个用于数组,一个用于最大值)【英文标题】:C : Find max value in array using 2 pointers (one for array, one for maximum) 【发布时间】: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;

【问题讨论】:

【参考方案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;

【讨论】:

以上是关于C:使用 2 个指针在数组中查找最大值(一个用于数组,一个用于最大值)的主要内容,如果未能解决你的问题,请参考以下文章

C 指针数组第二个最大值

ZZNUOJ_用C语言编写程序实现1176:查找最大字符串(指针专题)(附完整源码)

C博客作业--指针

C博客作业--指针

我想要一个c程序来查找我使用数组编写的最大和最小数字有人可以帮助我如何在不使用数组的情况下制作[关闭]

C语言中怎样用指针找出一维数组中的最大值和最小值并输出它们的下标