簡體   English   中英

C:使用 2 個指針在數組中查找最大值(一個用於數組,一個用於最大值)

[英]C : Find max value in array using 2 pointers (one for array, one for maximum)

我正在嘗試打印在數組中鍵入的最大值,但它一直給我我輸入的最后一個值,即使它不是鍵入的最大值。

這是練習說明:
使用指針來確定由五個類型雙精度組成的數組的最大值。 將一個指針應用於數組元素,將另一個指針應用於保存最大值的輔助變量。

這是我到目前為止所做的..

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

}

您比較指針而不是內容。 比較值的正確方法是取消引用指針,例如

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

但要使其正常工作,您也必須初始化指針pMax

pMax = m;

以下修改后的程序產生 output,

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

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM