一道题目给了我疑惑

矫情狗_____ 2012-02-14 09:20:54
题目: (在线等...)
设计一个函数process,调用它时,每次实现不同的功能。(类似多态)
输入one和two两个数,第一个调用process时找出one和two的最大值,第二次找出最小值,第三次求和.

以下是我写的代码,process设计不出来...而且这个寻找函数首址的寻址方式有点头疼,求解释一下

#include <stdio.h>

void main()
{
int Max(int one, int two);
int Min(int one, int two);
int Add(int one, int two);

void process(int one, int two, int(*fan)());

int one, two;
scanf("%d%d", &one, &two);
printf("Max = ");
process(one, two, Max);
printf("\nMin = ");
process(one, two, Min);
printf("\nAdd = ");
process(one, two, Add);
printf("\n");
}
int Max(int one, int two)
{
int sum;
if (one < two)
{
sum = two;
}
else
{
sum = one;
}
return sum;
}
int Min(int one, int two)
{
int sum;
if (one < two)
{
sum = one;
}
else
{
sum = two;
}
return sum;
}
int Add(int one, int two)
{
int sum;
sum = one + two;
return sum;
}

void process(int one, int two, int(*fan)())
{
int p1, p2, p3;

p1 = (*fan)(one, two);


p2 = (*fan)(one, two);


p3 = (*fan)(one, two);
}
...全文
100 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ncjobs2dick 2013-04-29
  • 打赏
  • 举报
回复
感谢hili210 !
hili210 2012-02-14
  • 打赏
  • 举报
回复



#include <stdio.h>

void main()
{
int Max(int one, int two);
int Min(int one, int two);
int Add(int one, int two);

int process(int one, int two, int(*fan)() );
int one, two;


scanf("%d%d", &one, &two);


printf("Max = %d", process(one, two, Max) );
printf("\nMin = %d", process(one, two, Min) );
printf("\nAdd = %d", process(one, two, Add) );


printf("\n");
}


int Max(int one, int two)
{
int sum;
if (one < two)
{
sum = two;
}
else
{
sum = one;
}
return sum;
}
int Min(int one, int two)
{
int sum;
if (one < two)
{
sum = one;
}
else
{
sum = two;
}
return sum;
}
int Add(int one, int two)
{
int sum;
sum = one + two;
return sum;
}


int process(int one, int two, int(*fan)())
{
return (*fan)(one, two);
}


矫情狗_____ 2012-02-14
  • 打赏
  • 举报
回复
有题目限制....
矫情狗_____ 2012-02-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bluewanderer 的回复:]
C/C++ code
int process(int one, int two)
{
static int s = 0;

int r = 0;

switch (s)
{
case 0: r = one > two ? one : two; break;
case 1: r = one < two ? one : two; br……
[/Quote]
我不确定是不是这个,题目就这么给我的...要求我做,但是写不明白。可是又没有答案,跟猫抓似的
taoyh2002 2012-02-14
  • 打赏
  • 举报
回复
int process(int one, int two)
{
static int nCount = 0;
++nCount;

if (1 == nCount % 3)
{
return Max(one, two);
}
else if (2 == nCount % 3)
{
return Min(one, two);
}
else
{
return Add(one, two);
}
}
bluewanderer 2012-02-14
  • 打赏
  • 举报
回复
int process(int one, int two)
{
static int s = 0;

int r = 0;

switch (s)
{
case 0: r = one > two ? one : two; break;
case 1: r = one < two ? one : two; break;
case 2: r = one + two; break;
}

++s;

return r;
}


为什么你给出的描述让人感觉是这种东西 +_+|||

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧