0基础入门C语言第八章第七课-指向函数的指针?
第七课练习题:设一个函数process,在调用它的时候 每次实现不同功能,(类似多态),输入A和B,第一次找最大数,第二次找最小数,第三次求两个数的和。要求自己思考process函数写法;
我的代码如下:请牛兄指点更厉害的招数
int max(int, int);
int min(int, int);
int add(int, int);
int main()
{
void process(int x, int y, int(*function)());
int a, b;
printf("input two numbers:\n");
scanf_s("%d,%d", &a, &b);
printf("max=");
process(a, b, max);
printf("min=");
process(a, b, min);
printf("add=");
process(a, b, add);
}
void process(int x,int y,int(*function)())
{
int fruit,(*a)();
a = function;
if (a == max)
{
fruit=max(x, y);
printf("%d\n", fruit);
}
else if (a == min)
{
fruit=min(x, y);
printf("%d\n", fruit);
}
else if (a == add)
{
fruit=add(x, y);
printf("%d\n", fruit);
}
}
int max(int x, int y)
{
int z;
z = x > y ? x : y;
return z;
}
int min(int x, int y)
{
int z;
z = x < y ? x : y;
return z;
}
int add(int x, int y)
{
int z;
z = x+y;
return z;
} 本帖最后由 Croper 于 2019-1-23 19:51 编辑
int max(int, int);
int min(int, int);
int add(int, int);
int (*process)(int,int)=&max;
int max(int x, int y)
{
process=&min;
return (x>y)?x:y;
}
int min(int x, int y)
{
process=&add;
return (x<y)?x:y;
}
int add(int x, int y)
{
process=&max;
return x+y;
}
int main()
{
int a, b,c;
printf("input two numbers:\n");
scanf_s("%d %d", &a, &b);
c=process(a,b);
printf("max=%d",c);
c=process(a,b);
printf("min=%d",c);
c=process(a,b);
printf("add=%d",c);
}
Croper 发表于 2019-1-23 19:50
VS2015下编译min和add函数返回不对 我vs2017下和dev C下都是对的,你怎么调试的? Croper 发表于 2019-1-24 19:22
我vs2017下和dev C下都是对的,你怎么调试的?
scanf两个数字这里的问题,我的是加了个逗号,你的是空格,没注意造成的
页:
[1]