C语言-----回调函数(新手写题望多指教)

<span style="font-size:18px;">/*动态函数调用实现下列操作,输入2个数以及操作符计算结果。
@ 是求最大公约数    $是求最小公倍数
- 是求差      + 是求和
 */
int Dvalue(int x ,int y);   //求差值
int Dvalue(int x ,int y)
{
    return x - y;
    
}
int Sum(int x ,int y);     //求和值
int Sum(int x ,int y)
{
    return x + y;
}
int GCD(int x,int y);
int GCD(int x,int y)        //最大公约数
{
    int min = x < y ? x : y;
    for (int i = min; i >= 1; i--) {
        if (x % i == 0 && y % i == 0) {
            return i;
            break;
        }
    }
    return 0;
}
int LEC(int x , int y );    //最小公倍数
int LEC(int x , int y )
{
    int max = x > y ? x : y;
    for (int i = max; i <= x * y; i ++) {
        if (i % x == 0 && i % y == 0) {
            return i;
        }
    }
    return 0;
}
typedef int(*PHT)(int x, int y);

typedef struct operationOperator//对应运算符与函数
{
    char a;
    PHT p;
    
}OP;
PHT getfounctionName(OP *oper,int count,char a);
PHT getfounctionName(OP *oper,int count,char a)
{
    for (int i = 0; i < count; i ++) {
        if (a == (oper + i)->a) {
           return (oper + i)->p;        //寻找用户输入符号和运算符相同的字符
        }
    }
    return NULL;
}
void qiu(OP *oper,int count ,char a,int x ,int y);
void qiu(OP *oper,int count ,char a ,int x,int y)
{
    PHT founction = getfounctionName(oper, count, a);
//    printf("%d\n",founction(x,y));
    int b = (founction(x,y));
    printf("%d",b);                                      //输出运算结果
}
int main(int argc, const char * argv[])
{
    char a = 0 ;
    
    OP oper[4] = {
        {'-',Dvalue},
        {'+',Sum},
        {'@',GCD},
        {'$',LEC}
    };

    printf("请输入要操作的运算(求差-),(求和+),(求最小公倍数$),(求最大公约数@)");
    scanf("%c",&a);
    qiu(oper,4 ,a,3,6);
</span>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值