问答详情
源自:6-4 数组作为函数参数

结果怎么出来的,为什么是10

结果怎么出来的,为什么是10,,,,能不能对其中的一个结果的由来举个例子

提问者:missyou012 2016-06-16 22:38

个回答

  • 阿斯arth
    2016-07-15 10:12:48

    #include <stdio.h>

    void replaceMax(int arr[],int value)

    {

        int max = arr[0];     /*max=10*/

        int index = 0;

        int i;

        for(i=1;i<5;i++)

        {

            if(arr[i]>max)  /*41>10? ,3>41? , 12>41? , 22>41?*/

            {

                 max=arr[i];    //将数组中较大的数赋值给max,   max=41

                index = i;  //记录当前索引,   index=1

            }                

        }  

        arr[index] = value;   /*arr[1]=1,将1赋值给arr[1]*/

    }


    int main()

    {

        int arr1[] = {10,41,3,12,22};

        int arr2[] = {1,2,3,4,5};

        int i;

        replaceMax(arr1 ,arr2[0] ); //将数组arr1和数组arr2的第一个元素传入函数中

        for(i=0;i<5;i++)            /*将数组arr1[i]输出,其中arr[1]被替换,arr[1]=10*/

        {

            printf("%d ",arr1[i]);                

        }

        return 0;    

    }


  • zhuangzhou
    2016-06-19 21:49:55

    #include <stdio.h>

    void replaceMax(int arr[],int value)

    {

        int max = arr[0];

        int index = 0;

        int i;

        for(i=1;i<5;i++)

        {

            if(arr[i]>max)

            {

                max = arr[i];        //将数组中较大的数赋值给max

                index = i;  //记录当前索引

            }                

        }  

        arr[index] = value;

    }

    int main()

    {

        int arr1[] = {10,41,3,12,22};

        int arr2[] = {1,2,3,4,5};

        int i;

        replaceMax(arr1, arr2[0]); //将数组arr1和数组arr2的第一个元素传入函数中

        for(i=0;i<5;i++)

        {

            printf("%d ",arr1[i]);                

        }

        return 0;    

    }

    因为arr1[]中最大值是arr[1] = 41,所以max = arr[1]; 但是最后又将arr2[0] = 1,即是value的值赋给了arr[1].    arr[index] = value;  所以最终输出结果为10 , 1, 3, 12 ,22.相当于将arr1[]数组中的最大数换成了arr2[0],然后再将arr1[]输出。希望能够帮助到你。