宅在家 发表于 2020-11-22 23:10:25

小白求助

为什么会报错float类型的实参和float*的形参类型不符呢?
<#include<stdio.h>

float max( float array);
float min( float array);
float calc(float(*p)(float), float array);

int main()
{
        float array = { 1,5,6,7,9,10,35,51,23,13 };
        printf("The max of array is %f", calc(max, array));//就是这里
        printf("The max of array is %f", calc(min, array));
        return 0;
}

float max(float array)//下面是简单的求最小
{
        float max = 0;
        for (int i = 0; i < 10; i++)
        {
                if(array > max)
                {
                        max = array;
                }
        }
        return max;
}
float min(float array)//这个是求最小
{
        float min = 0;
        for (int i = 0; i < 10; i++)
        {
                if (array < min)
                {
                        min = array;
                }
        }
        return min;
}
float calc(float (*p)(float), float array)
{
        return (*p)(array);
}>

jackz007 发表于 2020-11-22 23:36:47

本帖最后由 jackz007 于 2020-11-23 00:07 编辑

#include<stdio.h>

float max(float array[])                                          ;
float min(float array[])                                          ;
float calc(float(*)(float *) , float array[])                     ;

int main()
{
      float array[] = {1 , 5 , 6 , 7 , 9 , 10 , 35 , 51 , 23 ,13} ;
      printf("The max of array is %f\n", calc(max, array))      ;
      printf("The min of array is %f\n", calc(min, array))      ;
      return 0                                                    ;
}

float max(float array[])
{
      float max = array         ;// 这个地方不可以给 max 随便赋 0 值,因为,如果 array[] 中所有的元素都比 0 值小,那就会得到一个错误的结果
      for (int i = 1 ; i < 10 ; i ++)
      {
                if(array > max)
                {
                        max = array ;
                }
      }
      return max                     ;
}

float min(float array[]) //这个是求最小
{
      float min = array         ;// 这个地方不可以给 min 随便赋 0 值,因为,如果 array[] 中所有的元素都比 0 值大,那就会得到一个错误的结果
      for (int i = 1 ; i < 10; i ++)
      {
                if (array < min)
                {
                        min = array ;
                }
      }
      return min                     ;
}

float calc(float (* p)(float*) , float array[])
{
      return (* p)(array)            ;
}

youxiaoyaooo 发表于 2020-11-23 17:13:09

你的太乱了,这样吧
calc完全没必要
#include<stdio.h>

int max(int *array)
{
      int max = array;
      for (int i = 0; i < 10; i++)
      {
                if(array > max)
                {
                        max = array;
                }
      }
      return max;
}
int min(int *array)
{
      int min = array;
      for (int i = 0; i < 10; i++)
      {
                if (array < min)
                {
                        min = array;
                }
      }
      return min;
}

int main()
{
        int array = { 1,5,6,7,9,10,35,51,23,13 };
        max(array);
        min(array);
        printf("The max of array is %d\n", max(array));
        printf("The max of array is %d\n", min(array));
        return 0;
}


风过无痕1989 发表于 2020-11-23 17:43:20

youxiaoyaooo 发表于 2020-11-23 17:13
你的太乱了,这样吧
calc完全没必要
#include


还是兄弟你敢做! 我也是这么改的,怕他不接受,就没有发出来了,哈 哈~~
页: [1]
查看完整版本: 小白求助