鱼C论坛

 找回密码
 立即注册
查看: 2179|回复: 6

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

[复制链接]
发表于 2014-9-23 10:18:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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;
}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-9-23 10:40:41 | 显示全部楼层
贴出错误代码看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-23 19:49:41 From FishC Mobile | 显示全部楼层
恋色天空 发表于 2014-9-23 10:40
贴出错误代码看看

就是没找出来问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-9-23 20:15:52 | 显示全部楼层
本帖最后由 恋色天空 于 2014-9-23 20:16 编辑
397014622 发表于 2014-9-23 19:49
就是没找出来问题

可能是编译器的问题。在我电脑上没问题,press函数写了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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);
}
你去试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-9-28 16:32:01 | 显示全部楼层
自定义函数声明要要放在main()函数外,也就是说必须要放在头文件下面,你放在其他地方编译是不通过的,  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 02:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表