📅  最后修改于: 2023-12-03 14:59:38.947000             🧑  作者: Mango
给定三个整数a、b和c,以及运算符op,你需要根据op的值计算出你需要对a和b执行的操作,并将结果与c进行比较。操作可以是加法、减法、乘法或除法。如果描述的操作与以运算符为中心的操作相同,则返回"+/-/×/÷ by zero"或"unknown operator",取决于相应的情况。
下面是需要实现的函数的原型。
const char *calc(int a, int b, int c, char op);
a
:整型,表示第一个操作数;b
:整型,表示第二个操作数;c
:整型,表示第三个操作数;op
:字符,取值为'+'、'-'、'*'、'/',表示操作符。如果操作有效,则返回操作结果是否等于c的布尔值的字符串"true"或"false"。如果操作是非法的,则返回"+/-/×/÷ by zero"或"unknown operator",取决于相应的情况。
以下是计算概述的样例。
calc(1, 2, 3, '+'); // => "false"
calc(10, 2, 5, '/'); // => "true"
calc(10, 0, 5, '/'); // => "/ by zero"
calc(10, 0, 5, 'x'); // => "unknown operator"
下面是一个C语言的参考实现。
#include <stdio.h>
#include <stdlib.h>
const char *calc(int a, int b, int c, char op) {
int result;
char *error;
switch(op) {
case '+': result = a + b; break;
case '-': result = a - b; break;
case '*': result = a * b; break;
case '/': {
if(b == 0) return "/ by zero";
result = a / b;
break;
}
default: return "unknown operator";
}
if(result == c) return "true";
else return "false";
}
int main() {
printf("%s\n", calc(1, 2, 3, '+'));
printf("%s\n", calc(10, 2, 5, '/'));
printf("%s\n", calc(10, 0, 5, '/'));
printf("%s\n", calc(10, 0, 5, 'x'));
return 0;
}
实现的calc函数使用switch语句来根据给定的操作符op计算a和b的值。当操作符是加、减、乘或除运算符时,选择相应的操作。在做除法运算时,需要特别注意:如果除数是0,则返回"/ by zero"。如果操作符是未知的,则返回"unknown operator"。
如果最终的计算结果result等于c,则函数返回"true",否则返回"false"。
下面是上述样例的输出结果。
false
true
/by zero
unknown operator
对于加法、减法和乘法,计算结果的类型为整型,而除法的结果为浮点数,但是本题的描述有所简化,假设除数不为0.
当然,实现中为了防止出现除0的情况,特别进行了处理。