C语言计算器指针问题

img


用c语言指针实现一个简单的计算器功能,不知道主函数怎么书写,其他函数知道怎么写

如果是练习中,可以使用scanf()来读取整数a和b,以及运算字符,然后使用这个参数来调用calc()函数,最后打印这个结果就可以了;

但是这个题目中,main函数已经给出了,所以不需要写main函数;

如果是个人练习,可以使用下面这种方式进行测试。

测试代码如下:


#include <stdio.h>

// 计算函数,用于调用相应计算函数来进行计算,并返回计算结果 
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 mul(int x, int y){
    
    return x*y;
}

// 除法运算 
int div(int x,int y){
    
    return x/y;
} 

// 如果是个人练习,可以使用下面的这种方式来进行测试 ,如果是答题,可以不用写这个main函数
int main(void){
    
    int a,b;
    char sym;
    
    printf("请输入运算式:\n");
    // 从输入获取运算式 
    scanf("%d %c %d",&a,&sym,&b);
    
    if(sym=='+'){  // 加法 
        printf("%d",calc(a,b,add));
    }else     if(sym=='-'){  // 减法 
        printf("%d",calc(a,b,sub));
    }else     if(sym=='*'){  // 乘法 
        printf("%d",calc(a,b,mul));
    }else     if(sym=='/'){  // 除法 
        printf("%d",calc(a,b,div));
    }
    
    return 0;
    
    
}

img

该回答引用GPT

#include<iostream>
using namespace std;

int add(int x, int y) {
    return x + y;
}

int sub(int x, int y) {
    return x - y;
}

int mul(int x, int y) {
    return x * y;
}

int div(int x, int y) {
    if (y == 0) {
        cout << "Error: division by zero!" << endl;
        return 0;
    } else {
        return x / y;
    }
}

int calc(int x, int y, int (*p)(int,int)) {
    return p(x, y);
}

int main() {
    int a, b;
    char op;
    cout << "Please input two integers a and b: ";
    cin >> a >> b;
    cout << "Please input an operation (+, -, *, /): ";
    cin >> op;
    int result = 0;
    switch(op) {
        case '+':
            result = calc(a, b, add);
            break;
        case '-':
            result = calc(a, b, sub);
            break;
        case '*':
            result = calc(a, b, mul);
            break;
        case '/':
            result = calc(a, b, div);
            break;
        default:
            cout << "Error: unknown operation!" << endl;
            break;
    }
    if (result != 0) {
        cout << "The result is: " << result << endl;
    }
    return 0;
}