为什么这串代码无法实现功能?


//从键盘任意输入10个整数,用指针变量作函数参数编程计算最大值和最小值,并返回它们所在数组中的位置。将程序补充完整。

#include <stdio.h>

void FindMax(int num[], int n, int *pMax, int *pMaxPos);    // 找最大值及其所在下标位置

void FindMin(int num[], int n, int *pMin, int *pMinPos);    // 找最小值及其所在下标位置

int main(void) {

    int num[10], maxValue, maxPos, minValue, minPos, i;

    for (i = 0; i < 10; i++) {

        scanf("%d", &num[i]);

    }

    FindMax(num, 10, &maxValue, &maxPos);

    FindMin(num, 10, &maxValue, &maxPos);

    printf("Max=%d, Position=%d, Min=%d, Position=%d\n", maxValue, maxPos, minValue, minPos);

    return 0;

}

void FindMax(int num[], int n, int *pMax, int *pMaxPos)   // 找最大值及其所在下标位置
{
    static int i;
    static int j, cnt = 0;
    for (j = 0; j < n; j++)
    {
        for (i = 0; i < n; i++)
        {
            if (num[j] >= num[i])
            {
                ++cnt;

            }
            if (cnt == n)
            {
                *pMax = num[j];
                *pMaxPos = j+1;
                printf("%d\n", j);
            }
        }
        cnt = 0;
        //printf("check\n");
    }
}

void FindMin(int num[], int n, int *pMin, int *pMinPos)    // 找最小值及其所在下标位置
{
    static int i;
    static int j, cnt = 0;
    for (j = 0; j < n; j++)
    {
        for (i = 0; i < n; i++)
        {
            if (num[j] <= num[i])
            {
                cnt++;
            }
            if (cnt == n)
            {
                *pMin = num[j];
                *pMinPos = j+1;
            }
        }
        cnt = 0;
    }
}

22行
FindMin(num, 10, &minValue, &minPos);



//从键盘任意输入10个整数,用指针变量作函数参数编程计算最大值和最小值,并返回它们所在数组中的位置。将程序补充完整。
#include <stdio.h>
void FindMax(int num[], int n, int* pMax, int* pMaxPos);    // 找最大值及其所在下标位置
void FindMin(int num[], int n, int* pMin, int* pMinPos);    // 找最小值及其所在下标位置
int main(void) {
    int num[10], maxValue=0, maxPos=0, minValue=0, minPos=0, i;
    for (i = 0; i < 10; i++) {
        scanf("%d", &num[i]);
    }
    FindMax(num, 10, &maxValue, &maxPos);
    FindMin(num, 10, &minValue, &minPos);
    printf("Max=%d, Position=%d, Min=%d, Position=%d\n", maxValue, maxPos, minValue, minPos);
    return 0;
}
void FindMax(int num[], int n, int* pMax, int* pMaxPos)   // 找最大值及其所在下标位置
{
    static int i;
    static int j, cnt = 0;
    for (j = 0; j < n; j++)
    {
        for (i = 0; i < n; i++)
        {
            if (num[j] >= num[i])
            {
                ++cnt;
            }
            if (cnt == n)
            {
                *pMax = num[j];
                *pMaxPos = j + 1;
                return;
            }
        }
        cnt = 0;
        //printf("check\n");
    }
}
void FindMin(int num[], int n, int* pMin, int* pMinPos)    // 找最小值及其所在下标位置
{
    static int i;
    static int j, cnt = 0;
    for (j = 0; j < n; j++)
    {
        for (i = 0; i < n; i++)
        {
            if (num[j] <= num[i])
            {
                cnt++;
            }
            if (cnt == n)
            {
                *pMin = num[j];
                *pMinPos = j + 1;
                return;
            }
        }
        cnt = 0;
    }
}

帮你修改好了

//从键盘任意输入10个整数,用指针变量作函数参数编程计算最大值和最小值,并返回它们所在数组中的位置。将程序补充完整。

#include <stdio.h>
#include <limits.h>

void FindMax(int num[], int n, int *pMax, int *pMaxPos); // 找最大值及其所在下标位置
void FindMin(int num[], int n, int *pMin, int *pMinPos); // 找最小值及其所在下标位置

int main(void)
{
    int num[10], maxValue, maxPos, minValue, minPos, i;
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &num[i]);
    }
    FindMax(num, 10, &maxValue, &maxPos);
    FindMin(num, 10, &minValue, &minPos);
    printf("Max=%d, Position=%d, Min=%d, Position=%d\n", maxValue, maxPos, minValue, minPos);
    return 0;
}
void FindMax(int num[], int n, int *pMax, int *pMaxPos) // 找最大值及其所在下标位置
{
    *pMax = INT_MIN;
    for (int i = 0; i < n; i++)
    {
        if (num[i] > *pMax)
        {
            *pMax = num[i];
            *pMaxPos = i;
        }
    }
}
void FindMin(int num[], int n, int *pMin, int *pMinPos) // 找最小值及其所在下标位置
{
    *pMin = INT_MAX;
    for (int i = 0; i < n; i++)
    {
        if (num[i] < *pMin)
        {
            *pMin = num[i];
            *pMinPos = i;
        }
    }
}

img


//从键盘任意输入10个整数,用指针变量作函数参数编程计算最大值和最小值,并返回它们所在数组中的位置。将程序补充完整。
#include <stdio.h>
void FindMax(int num[], int n, int *pMax, int *pMaxPos);    // 找最大值及其所在下标位置
void FindMin(int num[], int n, int *pMin, int *pMinPos);    // 找最小值及其所在下标位置
int main(void) {
    int num[10], maxValue, maxPos, minValue, minPos, i;
    for (i = 0; i < 10; i++) {
        scanf("%d", &num[i]);
    }
    FindMax(num, 10, &maxValue, &maxPos);
    FindMin(num, 10, &minValue, &minPos);
    printf("Max=%d, Position=%d, Min=%d, Position=%d\n", maxValue, maxPos, minValue, minPos);
    return 0;
}
void FindMax(int num[], int n, int *pMax, int *pMaxPos)   // 找最大值及其所在下标位置
{
    int i;
    int j, cnt = 0;
    int max=num[0];
    for (j = 0; j < n; j++)
    {
        if(num[j]>=max)
        {
            max=num[j];
            *pMaxPos = j+1;
        }
    }
    *pMax = max;
    //printf("max:%d\n",max);
    /*for (j = 0; j < n; j++)
    {
        for (i = 0; i < n; i++)
        {
            if (num[j] >= num[i])
            {
                ++cnt;
            }
            if (cnt == n)
            {
                *pMax = num[j];
                *pMaxPos = j+1;
                printf("%d\n", j);
            }
        }
        cnt = 0;
        //printf("check\n");
    }*/
}
void FindMin(int num[], int n, int *pMin, int *pMinPos)    // 找最小值及其所在下标位置
{
    int i;
    int j, cnt = 0;
    int min=num[0];
    for (j = 0; j < n; j++)
    {
        if(num[j]<=min)
        {
            min=num[j];
            *pMinPos = j+1;
        }
    }
    *pMin = min;
   // printf("min:%d\n",min);
    /*for (i = 0; i < n; i++)
    {
        if (num[j] <= num[i])
        {
            cnt++;
        }
        if (cnt == n)
        {
            *pMin = num[j];
            *pMinPos = j+1;
        }
    }
    cnt = 0;
}*/
}