鱼C论坛

 找回密码
 立即注册
查看: 3580|回复: 4

求老大们帮忙,关于谭浩强C语言程序设计8.24的问题

[复制链接]
发表于 2012-5-29 21:03:11 | 显示全部楼层 |阅读模式
1鱼币
我自己边看边写的代码编译时:error C4716: 'fun' : must return a value。 如果我在fun函数里面加个return result ,则出现error LNK2001: unresolved external symbol "void __cdecl fun(int,int,int (__cdecl*)(int,int))" (?fun@@YAXHHP6AHHH@Z@Z),怎么办啊 求大神指教
#include <stdio.h>
int main()
{   void fun(int x,int y,int (*p)(int,int));
int max(int,int);
    int min(int,int);
int add(int,int);
int a,b,n;
printf("输入两个数字\n");
    scanf("%d%d",&a,&b);
printf("请输入1,2,3\n");
    scanf("%d",&n);
if (1==n)       fun(a,b,max);
else if(2==n)   fun(a,b,min);
else if(3==n) fun(a,b,add);
return 0;
}
int fun(int x,int y,int (*p)(int,int))  
{
int result;
result = (*p)(x,y);
printf("%d\n",result);
}
int max(int x,int y)
{  
  int z;
    if (x>y) z=x;
  else z=y;
  printf("max=");
  return (z);
}

int min(int x,int y)
{
  int z;
  if (x<y) z=x;
  else z=y;
  printf("min=");
  return (z);
}

int add(int x,int y)
{
     int z;
  z=x+y;
  printf("add=");
  return (z);
}

最佳答案

查看完整内容

void fun(int x,int y,int (*p)(int,int)) { int result; result = (*p)(x,y); printf("%d\n",result); } 你这个函数写成void不就好了。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-29 21:03:12 | 显示全部楼层
void fun(int x,int y,int (*p)(int,int))  
{
        int result;
        result = (*p)(x,y);
        printf("%d\n",result);
}
你这个函数写成void不就好了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-5-29 22:10:38 | 显示全部楼层
帮你测试过了,完美通过。只要把fun函数改成类型int改成void就可以了。写程序要细心了,前后类型要一致。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-5-29 22:31:45 | 显示全部楼层
你的声明是:
void fun(int x,int y,int (*p)(int,int));
而你的函数是:
int  fun(int x,int y,int (*p)(int,int)){}
而且  int fun(int x,int y,int (*p)(int,int)){}的返回类型是int需要一个int的返回值

代码如下:#include <stdio.h>
int main()
{   int fun(int x,int y,int (*p)(int,int));
    int max(int,int);
    int min(int,int);
    int add(int,int);

        int a,b,n;
        printf("输入两个数字\n");
    scanf("%d%d",&a,&b);
        printf("请输入1,2,3\n");
    scanf("%d",&n);
        if (1==n)   
                fun(a,b,max);
        else if(2==n)   
                fun(a,b,min);
    else if(3==n)
       fun(a,b,add);
return 0;
}
int fun(int x,int y,int (*p)(int,int))  
{

        int result;
        result = (*p)(x,y);
        printf("%d\n",result);
        return result;
}

int max(int x,int y)
{  
  int z;
    if (x>y) z=x;
  else z=y;
  printf("max=");
  return (z);
}

int min(int x,int y)
{
  int z;
  if (x<y) z=x;
  else z=y;
  printf("min=");
  return (z);
}

int add(int x,int y)
{
     int z;
  z=x+y;
  printf("add=");
  return (z);
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-1 14:02:58 | 显示全部楼层

谢谢哦  , 以后会仔细的 谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-6 02:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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