397014622 发表于 2014-9-23 10:18:11

用一个函数通过指针再调用其他函数,然后输出最大,最小,和和值的代码,运行不对~

#include <stdio.h>

int max(int i,int j)
{
      int k;

      if(i>j)
      {
                k=i;
      }
      else
      {
                k=j;
      }
      return k;
}

int mix(int i,int j)
{
      int k;

      if(i<j)
      {
                k=i;
      }
      else
      {
                k=j;
      }
      return k;
}

int add(int i,int j)
{
      int k;

      k=i+j;

      return k;
}




int main()
{
      int i,j;
      
      int max(int ,int );
      int mix(int ,int );
      int add(int ,int );

      void process(int x,int y,int(*p)());

      printf("请输入两个数:\n");
      scanf("%d %d",&i,&j);
      
      printf("最大值是");
      process(i,j,max);
      
      printf("最小值是");
      process(i,j,mix);
      
      printf("两数和是");
      process(i,j,add);

      return 0;
}


恋色天空 发表于 2014-9-23 10:40:41

贴出错误代码看看

397014622 发表于 2014-9-23 19:49:41

恋色天空 发表于 2014-9-23 10:40
贴出错误代码看看

就是没找出来问题

恋色天空 发表于 2014-9-23 20:15:52

本帖最后由 恋色天空 于 2014-9-23 20:16 编辑

397014622 发表于 2014-9-23 19:49
就是没找出来问题
可能是编译器的问题。在我电脑上没问题,press函数写了吗

messilxs 发表于 2014-9-28 15:40:08

其实应该这样做:
#include <stdio.h>
void main()
{
        int max(int a,int b);
        int min(int a,int b);
        int add(int a,int b);
        void process(int a,int b,int (*fun)(int a,int b));
       
        int x,y;
       
        scanf("%d,%d",&x,&y);

        printf("max=");       
        process(x,y,max);

        printf("min=");
        process(x,y,min);
        printf("sum=");
        process(x,y,add);
}


void process(int a,int b,int (*p)(int a,int b) )
{
        int z=(*p)(a,b);
        printf("%d\n",z);
}

int max(int a,int b)
{
        return a>b?a:b;
}

int min(int a,int b)
{
        return a<b?a:b;
}

int add(int a,int b)
{
        return a+b;
}

逍遥 发表于 2014-9-28 16:14:55

是运行不了吧!你函数声明出现错误,
#include <stdio.h>
      int max(int a,int b);
      int min(int a,int b);
      int add(int a,int b);
      void process(int a,int b,int (*fun)(int a,int b));
      
void main()
{

      int x,y;
      
      scanf("%d,%d",&x,&y);

      printf("max=");      
      process(x,y,max);

      printf("min=");
      process(x,y,min);
      printf("sum=");
      process(x,y,add);
}
你去试试

逍遥 发表于 2014-9-28 16:32:01

自定义函数声明要要放在main()函数外,也就是说必须要放在头文件下面,你放在其他地方编译是不通过的,
页: [1]
查看完整版本: 用一个函数通过指针再调用其他函数,然后输出最大,最小,和和值的代码,运行不对~