标题:c语言代码
只看楼主
小文子09
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-2-27
结帖率:0
已结贴  问题点数:20 回复次数:7 
c语言代码
#include <stdio.h>
void main()
{
    int max(int x,int y);
    int min(int x,int y);
    int add(int x,int y);
    void poe(int x,int y,int(*fun)(int,int));
    int a,b;
    printf("请输入值:");
    scanf("%d %d",&a,&b);
    printf("max=");
    poe(a,b,max);
    printf("min=");
    poe(a,b,min);
    printf("add=");
    poe(a,b,add);
   
}
int max(int x,int y)
{
    int temp;
    temp=x>y?x:y;
    return temp;
}
int min(int x,int y)
{
    int temp;
    temp=x<y?x:y;
    return temp;
}
int add(int x,int y)
{
    return x+y;
}
void poe(int x,int y ,int(*fun)(int,int))
{
    int result;
    result=(*fun)(x,y);
    printf("%2d\n",result);

}
上面的代码如果把int(*fun)(int,int)改成无参数就出错了总提示这个:error C2664: 'poe' : cannot convert parameter 3 from 'int (int,int)' to 'int (__cdecl *)(void)'
哪位大佬可以解释为什么,怎么解决???
搜索更多相关主题的帖子: int printf max temp add 
2020-02-28 10:10
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:7 
解决啥?为啥要改?


对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-02-28 16:40
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:7 
程序代码:
#include <stdio.h>
void main()
{
    int max(int x,int y);
    int min(int x,int y);
    int add(int x,int y);
    void poe(int result);//zhe
    int a,b;
    printf("请输入值:");
    scanf("%d %d",&a,&b);
    printf("max=");
    poe(max(a,b));//
    printf("min=");
    poe(min(a,b));//
    printf("add=");
    poe(add(a,b));//
   
}
int max(int x,int y)
{
    int temp;
    temp=x>y?x:y;
    return temp;
}
int min(int x,int y)
{
    int temp;
    temp=x<y?x:y;
    return temp;
}
int add(int x,int y)
{
    return x+y;
}
void poe(int result)//
{
printf("%d\n",result);

    }




把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-28 17:07
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
你那个代码在我的编译器报错的
修改一下,楼主的问题是为什么不能用void,当然不能啊,因为void是被调用者,可以结收参数,但是不向调用方返回任何值

[此贴子已经被作者于2020-2-28 17:27编辑过]


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-28 17:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:7 
#include <stdio.h>

typedef int(*FUN)(int, int);

void main()
{
    int max(int x,int y);
    int min(int x,int y);
    int add(int x,int y);
    void poe(int x,int y, FUN fun);
    int a,b;
    printf("请输入值:");
    scanf("%d %d",&a,&b);
    printf("max=");
    poe(a,b,max);
    printf("min=");
    poe(a,b,min);
    printf("add=");
    poe(a,b,add);

}
int max(int x,int y)
{
    int temp;
    temp=x>y?x:y;
    return temp;
}
int min(int x,int y)
{
    int temp;
    temp=x<y?x:y;
    return temp;
}
int add(int x,int y)
{
    return x+y;
}
void poe(int x,int y, FUN fun)
{
    int result;
    result=fun(x,y);
    printf("%2d\n",result);

}
2020-02-28 17:24
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
都用指针表达
#include <stdio.h>

typedef int(*FUN)(int, int);

int max(int x,int y)
{
    return x>y?x:y;
}
int min(int x,int y)
{
    return x<y?x:y;
}
int add(int x,int y)
{
    return x+y;
}
void poe(int x,int y, FUN fun)
{
    printf("%2d\n",fun(x,y));
}

void main()
{
    int a,b;
    printf("请输入值:");
    scanf("%d %d",&a,&b);
    FUN f[3] = {max, min, add};
    char *s[3] = {"max=","min=","add="};
    int i;
    for (i=0; i<3; ++i)
    {
        printf(s[i]);
        poe(a,b,f[i]);
    }
}




[此贴子已经被作者于2020-2-28 17:46编辑过]

2020-02-28 17:43
小文子09
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-2-27
得分:0 
回复 4楼 叶纤
对代码编译是错误。我就是想知道提示错误的内容大概什么意思
2020-02-29 16:31
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
以下是引用小文子09在2020-2-28 10:10:11的发言:

#include <stdio.h>
void main()
{
    int max(int x,int y);
    int min(int x,int y);
    int add(int x,int y);
    void poe(int x,int y,int(*fun)(int,int));//中文的逗号?!没有中文的符号
    int a,b;
    printf("请输入值:");
    scanf("%d %d",&a,&b);
    printf("max=");
    poe(a,b,max);
    printf("min=");
    poe(a,b,min);
    printf("add=");
    poe(a,b,add);
   
}
int max(int x,int y)
{
    int temp;
    temp=x>y?x:y;
    return temp;
}
int min(int x,int y)
{
    int temp;
    temp=x<y?x:y;
    return temp;
}
int add(int x,int y)
{
    return x+y;
}
void poe(int x,int y ,int(*fun)(int,int))//中文的逗号?
{
    int result;
    result=(*fun)(x,y);
    printf("%2d\n",result);

}
上面的代码如果把int(*fun)(int,int)改成无参数就出错了总提示这个:error C2664: 'poe' : cannot convert parameter 3 from 'int (int,int)' to 'int (__cdecl *)(void)'
哪位大佬可以解释为什么,怎么解决???

把标点符号改了就可以啦,细心点

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-29 16:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499448-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.350082 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved