用数组名作为函数参数的4种方式实现输出某一维数组的最大值及其所在数组的位置。

用数组名作为函数参数的4种方式(即形参数组名、实参数组名;形参数组名、实参指针变量;形参指针变量、实参数组名;形参指针变量、实参指针变量)实现输出某一维数组的最大值及其所在数组的位置。(该题可在主函数中选择不同的函数调用方式)

 


#include <stdio.h>

#define ARRAY_SIZE 10

int index_of_max_in_array(int a[])
{
    int index = 0, i;
    int max = a[0];
    for (i = 1; i < ARRAY_SIZE; ++i)
    {
        if (a[i] > max)
        {
            max = a[i];
            index = i;
        }
    }
    
    return index;
}

int index_of_max_in_pointer(int *p)
{
    int index = 0, i;
    int max = *p;
    for (i = 1; i < ARRAY_SIZE; ++i)
    {
        if (*(p + i) > max)
        {
            max = *(p + i);
            index = i;
        }
    }
    
    return index;
}

int main()
{   int a[ARRAY_SIZE], index_of_max, i;
    int *p;

    for(i = 0; i < ARRAY_SIZE; ++i) 
    {
        printf("请输入%d个数中的第%d个数:", ARRAY_SIZE, i);
        scanf("%d", &a[i]);
    }
    
    index_of_max = index_of_max_in_array(a);
    printf("Case 1 - 形参数组名、实参数组名:    最大数是:%d,它的下标是:%d;\n", a[index_of_max], index_of_max);
    
    p = a;
    index_of_max = index_of_max_in_array(p);
    printf("Case 2 - 形参数组名、实参指针变量:  最大数是:%d,它的下标是:%d;\n", a[index_of_max], index_of_max);

    index_of_max = index_of_max_in_pointer(a);
    printf("Case 3 - 形参指针变量、实参数组名:  最大数是:%d,它的下标是:%d;\n", a[index_of_max], index_of_max);
    
    index_of_max = index_of_max_in_pointer(p);
    printf("Case 2 - 形参指针变量、实参指针变量:最大数是:%d,它的下标是:%d;\n", a[index_of_max], index_of_max);

    return 0;
}

// Outpuut
请输入10个数中的第0个数:50
请输入10个数中的第1个数:37
请输入10个数中的第2个数:89
请输入10个数中的第3个数:1
请输入10个数中的第4个数:100
请输入10个数中的第5个数:63
请输入10个数中的第6个数:15
请输入10个数中的第7个数:72
请输入10个数中的第8个数:48
请输入10个数中的第9个数:8
Case 1 - 形参数组名、实参数组名:    最大数是:100,它的下标是:4;
Case 2 - 形参数组名、实参指针变量:  最大数是:100,它的下标是:4;
Case 3 - 形参指针变量、实参数组名:  最大数是:100,它的下标是:4;
Case 2 - 形参指针变量、实参指针变量:最大数是:100,它的下标是:4;