如果是练习中,可以使用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;
}
该回答引用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;
}