实现计算器功能(指针)


#include 
#include 

/********** Begin **********/
int calc(int x,int y,int (*p)(int,int)){
    //实现两个数之间的计算
    
}
int add(int x,int y){
    //加法
    
} 
int sub(int x,int y){
    //减法
    
} 
int mult(int x,int y){
    //乘法
    
} 
int divi(int x,int y){
    //除法
    
} 
/********** End **********/

int main()
{
    //本题主要是实现一个计算器的功能 
    int a,b,result;
    char c;
    scanf("%d%c%d",&a,&c,&b);
    //利用函数指针实现加减乘除 
    switch(c){
        case '+':result=calc(a,b,add);break;     //加法 
        case '-':result=calc(a,b,sub);break;     //减法 
        case '*':result=calc(a,b,mult);break;    //乘法 
        case '/':result=calc(a,b,divi);break;     //除法 
        default:printf("系统不能识别的运算符");exit(1);     //退出 
    } 
    printf("%d",result);     //输出结果 
    return 0;
}


img

img


下面图片是题目以及要测试输出的结果,问一下中间空缺的绿色中间的该怎么填写呢



int calc(int x,int y,int (*p)(int,int)){
    //实现两个数之间的计算
    return p(x,y);
}
int add(int x,int y){
    //加法
    return x+y;
} 
int sub(int x,int y){
    //减法
    return x-y;
} 
int mult(int x,int y){
    //乘法
    return x*y;
} 
int divi(int x,int y){
    //除法
    return x/y;
} 

直接return a+b这样啊

int calc(int x,int y,int (*p)(int,int)){
    //实现两个数之间的计算
    return p(x,y);
}
int add(int x,int y){
    //加法
    return x+y;
} 
int sub(int x,int y){
    //减法
   return x-y;  
} 
int mult(int x,int y){
    //乘法
   return x*y; 
} 
int divi(int x,int y){
    //除法
    return x/y;
}