C语言遇到问题,求高手解答

在MSDEV中执行编写计算程序如下:#include<stdio.h>voidmain(){inta,b,add(int,int),dif(int,int),pro(in... 在MSDEV中执行
编写计算程序如下:
#include<stdio.h>
void main()
{int a,b,add(int,int),dif(int,int),pro(int,int),quo(int,int);
void process(int,int,int (*fun)());
scanf("%d,%d",&a,&b);
process(a,b,add);
process(a,b,dif);
process(a,b,pro);
process(a,b,quo);
}
void process(int x,int y,int(*fun)())
{
int result;
result=(*fun)(x,y);
printf("%d\n",result);

}
add(int x,int y)
{
printf("add=");
return(x+y);
}
dif(int x,int y)
{
printf("dif=");
return(x>y?x-y:y-x);
}
pro(int x,int y)
{
printf("pro=");
return(x*y);
}
quo(int x,int y)
{
printf("quo=");
return(x>y?x/y:y/x);

}

错误如下:--------------------Configuration: jh - Win32 Debug--------------------
Compiling...
sdf.cpp
G:\工作软件\Microsoft Visual Studio\MyProjects\jh\sdf.cpp(6) : error C2664: 'process' : cannot convert parameter 3 from 'int (int,int)' to 'int (__cdecl *)(void)'
None of the functions with this name in scope match the target type
G:\工作软件\Microsoft Visual Studio\MyProjects\jh\sdf.cpp(7) : error C2664: 'process' : cannot convert parameter 3 from 'int (int,int)' to 'int (__cdecl *)(void)'
None of the functions with this name in scope match the target type
G:\工作软件\Microsoft Visual Studio\MyProjects\jh\sdf.cpp(8) : error C2664: 'process' : cannot convert parameter 3 from 'int (int,int)' to 'int (__cdecl *)(void)'
None of the functions with this name in scope match the target type
G:\工作软件\Microsoft Visual Studio\MyProjects\jh\sdf.cpp(9) : error C2664: 'process' : cannot convert parameter 3 from 'int (int,int)' to 'int (__cdecl *)(void)'
None of the functions with this name in scope match the target type
G:\工作软件\Microsoft Visual Studio\MyProjects\jh\sdf.cpp(14) : error C2197: 'int (__cdecl *)(void)' : too many actual parameters
执行 cl.exe 时出错.

jh.exe - 1 error(s), 0 warning(s)
展开
 我来答
silvernii
2009-07-26 · TA获得超过3638个赞
知道大有可为答主
回答量:1667
采纳率:0%
帮助的人:1625万
展开全部
main中的声明部分
void process(int,int,int (*fun)());//这里最后一个参数写成int(*fun)(int,int)
因为这个参数是指向add(int,int),dif(int,int),pro(int,int),quo(int,int)这些函数的指针
定义部分
void process(int x,int y,int(*fun)())//这里相应的最后一个参数应该写成int(*fun)(int,int)
{
int result;
result=(*fun)(x,y);
printf("%d\n",result);
}

没有使用过MSDEV,这个编译器应该可以接受省略返回类型的写法(不写的话是默认返回int吧),但是最好不要省略掉,这样代码移植性和可读性要好些
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linyuanhui1989
2009-07-26 · TA获得超过368个赞
知道小有建树答主
回答量:334
采纳率:0%
帮助的人:324万
展开全部
#include<stdio.h>

void main()
{int a,b,add(int,int),dif(int,int),pro(int,int),quo(int,int);
void process(int,int,int(*fun)(int x,int y));/*改了这!!!!!*/
scanf("%d,%d",&a,&b);
process(a,b,add);
process(a,b,dif);
process(a,b,pro);
process(a,b,quo);
}
void process(int x,int y,int (*fun)(int x,int y))/*改了这!!!!!*/
{
int result;
result=(*fun)(x,y);
printf("%d\n",result);
}

add(int x,int y)
{
printf("add=");
return(x+y);
}
dif(int x,int y)
{
printf("dif=");
return(x>y?x-y:y-x);
}
pro(int x,int y)
{
printf("pro=");
return(x*y);
}
quo(int x,int y)
{
printf("quo=");
return(x>y?x/y:y/x);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式