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 个指针在数组中查找最大值(一个用于数组,一个用于最大值)的主要内容,如果未能解决你的问题,请参考以下文章
ZZNUOJ_用C语言编写程序实现1176:查找最大字符串(指针专题)(附完整源码)