问一下大家,这个哪里错了?正确的是怎样的?(下面这个是用扫描文字来的,请看图片)#include<stdio.h>
main()
{ int add (int, int);
int sub(int,int)
int mul (int, int)
irt fmod(int, int):
void arithmetic(int, int,int (*fun) (int,int)): int a,b
printf("input a and b:");
scanf ("%d,%d",&a,&b):
printf'"sum=");arithmetic(a,b, add);
printf("difference="):arithmetic(a,b,sub); printf("product="): arithmetic(a,b,mul): printf("remaindern=");arithmetic(a,b, fmod): int add(int x,int y)
antz;
Z=xty:
rerturn(z)
int sub(int x,int y) {intz
Z=X一F
return (z)
int mul(int x,int y) [intz:
z=x*y;
return(z)
Eint fmod(int x,int y)
{intz:
z=x%y:
return(z):
avoid arithmetic(int x, int y,int (*fun) (int,int)) { int result
reslt=(*fun) (x,y):
printf("%d\n", result):
#include<stdio.h>
int main()
{
int add(int, int);
int sub(int, int);
int mul(int, int);
int fmod(int, int);
void arithmetic(int, int, int (*fun) (int, int));
int a, b;
printf("input a and b:");
scanf("%d,%d", &a, &b);
printf("sum="); arithmetic(a, b, add);
printf("difference="); arithmetic(a, b, sub); printf("product=");
arithmetic(a, b, mul); printf("remaindern="); arithmetic(a, b, fmod);
}
int add(int x, int y) {
int z;
z = x + y;
return(z);
}
int sub(int x, int y) {
int z;
z = x - y;
return (z);
}
int mul(int x, int y) {
int z;
z = x * y;
return(z);
}
int fmod(int x, int y)
{
int z;
z = x % y;
return(z);
}
void arithmetic(int x, int y, int (*fun) (int, int)) {
int result;
result = (*fun) (x, y);
printf("%d\n", result);
}
参数要求传的是指针,指针直接指向的是地址,你这里是传入的数字参数
#include<stdio.h>
typedef int (*fun_t)(int, int);
int calculate(int a, int b, fun_t operation)
{
int result;
result = operation(a, b); // 运算
return result;
}
int add2(int a, int b)
{
return a + b;
}
int sub2(int a, int b)
{
return a - b;
}
int mul2(int a, int b)
{
return a * b;
}
int div2(int a, int b)
{
return a / b;
}
int main()
{
int result;
int a = 192, b = 48;
/* 两个数相加的操作 */
result = calculate(a, b, add2);
printf("加法运算: %d+%d = %d\n", a, b, result);
/* 两个数相减的操作 */
result = calculate(a, b, sub2);
printf("减法运算: %d-%d = %d\n", a, b, result);
/* 两个数相乘的操作 */
result = calculate(a, b, mul2);
printf("乘法运算: %d*%d = %d\n", a, b, result);
/* 两个数相除的操作 */
result = calculate(a, b, div2);
printf("除法运算: %d/%d = %d\n", a, b, result);
return 0;
}