#include <stdio.h>
// 加法
int addition(double num1, double num2, double *res);
// 减法
int subtraction(double num1, double num2, double *res);
// 乘法
int multiplication(double num1, double num2, double *res);
// 除法
int division(double num1, double num2, double *res);
int main(void) {
/*
* 定义加、减、乘、除四个函数
* 用户键盘录入三个数字
* 前两个表示参与计算的数字
* 第三个数字表示调用的函数
* */
double num1;
double num2;
int calc;
double answer;
printf("输入需要计算的两个数字:");
scanf("%lf %lf", &num1, &num2);
printf("1) +\t2) -\t3) *\t4) /\t5) quit\n"
"输入需要的计算符号:");
scanf("%d", &calc);
int (*add)(double, double, double *) = addition;
int (*sub)(double, double, double *) = subtraction;
int (*mul)(double, double, double *) = multiplication;
int (*div)(double, double, double *) = division;
switch (calc) {
case 1:
add(num1, num2, &answer);
printf("%lf + %lf = %lf\n", num1, num2, answer);
break;
case 2:
sub(num1, num2, &answer);
printf("%lf - %lf = %lf\n", num1, num2, answer);
break;
case 3:
mul(num1, num2, &answer);
printf("%lf * %lf = %lf\n", num1, num2, answer);
break;
case 4:
if (div(num1, num2, &answer) == 1) {
printf("除数不能为0!\n");
} else {
printf("%lf / %lf = %lf\n", num1, num2, answer);
}
break;
default:
printf("运算符无效!\n");
break;
}
return 0;
}
int addition(double num1, double num2, double *res) {
*res = num1 + num2;
return 0;
}
int subtraction(double num1, double num2, double *res) {
*res = num1 - num2;
return 0;
}
int multiplication(double num1, double num2, double *res) {
*res = num1 * num2;
return 0;
}
int division(double num1, double num2, double *res) {
if (num2 == 0) {
return 1;
}
*res = num1 / num2;
return 0;
}
#include <stdio.h>
// 运算函数
int operate(double number1, double number2, char calc, double *answer);
int main(void) {
/*
* 定义一个运算函数
* */
double num1, num2, answer;
char calc;
printf("输入需要计算的两个数字:");
scanf("%lf %lf", &num1, &num2);
getchar();
printf("1) +\t2) -\t3) *\t4) /\tq) quit\n"
"输入需要的计算符号:");
scanf("%c", &calc);
int flag = operate(num1, num2, calc, &answer);
if (flag == 1) {
printf("除数不能为0!\n");
} else if (flag == -1) {
printf("运算符无效!\n");
} else {
printf("%lf %c %lf = %lf\n", num1, calc, num2, answer);
}
return 0;
}
int operate(double number1, double number2, char calc, double *answer) {
switch (calc) {
case '+':
*answer = number1 + number2;
break;
case '-':
*answer = number1 - number2;
break;
case '*':
*answer = number1 * number2;
break;
case '/':
if (number2 == 0) {
return 1;
}
*answer = number1 / number2;
break;
default:
return -1;
}
return 0;
}
#include <stdio.h>
// 加法
int addition(double num1, double num2, double *res, char *calc);
// 减法
int subtraction(double num1, double num2, double *res, char *calc);
// 乘法
int multiplication(double num1, double num2, double *res, char *calc);
// 除法
int division(double num1, double num2, double *res, char *calc);
int main(void) {
/*
* 定义加、减、乘、除四个函数
* 用户键盘录入三个数字
* 前两个表示参与计算的数字
* 第三个数字表示调用的函数
* */
// 函数指针数组
int (*arr[4])(double, double, double *, char *) = {addition, subtraction,
multiplication, division};
double num1;
double num2;
int choose;
double answer;
char calc;
printf("输入需要计算的两个数字:");
scanf("%lf %lf", &num1, &num2);
printf("1) +\t2) -\t3) *\t4) /\t5) quit\n"
"输入需要的计算符号:");
scanf("%d", &choose);
int flag = (arr[choose - 1])(num1, num2, &answer, &calc);
if (flag == 1) {
printf("除数不能为0!\n");
} else {
printf("%lf %c %lf = %lf\n", num1, calc, num2, answer);
}
return 0;
}
int addition(double num1, double num2, double *res, char *calc) {
*res = num1 + num2;
*calc = '+';
return 0;
}
int subtraction(double num1, double num2, double *res, char *calc) {
*res = num1 - num2;
*calc = '-';
return 0;
}
int multiplication(double num1, double num2, double *res, char *calc) {
*res = num1 * num2;
*calc = '*';
return 0;
}
int division(double num1, double num2, double *res, char *calc) {
if (num2 == 0) {
return 1;
}
*res = num1 / num2;
*calc = '/';
return 0;
}