本题要求实现两个整数的运算,运算符仅有四种:+、-、* 、/ ,但是以字符串的形式输入表达式。注意这里的除数结果是整数,即5/4=1。
函数接口定义:
int cal( char a[] );
其中 a
是用户传入的参数,此处为表达式,表达式。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
int cal( char s[] );
int main()
{
char a[100];
int res;
scanf("%s",a);
res=cal(a);
printf("%d",res);
return 0;
}
/* 请在这里填写答案 */
代码实现:
//丑陋无比的代码
int cal(char a[]) {
int b = 0, d = 0;
char x;
int length = strlen(a);
int c = -1;
for (int i = 0; i < length; i++) {
if (a[i] >= '0' && a[i] <= '9') {
b = b * 10 + (a[i] - '0');
} else if (c == -1 && (a[i] == '+' || a[i] == '-' || a[i] == '*' || a[i] == '/')) {
x = a[i];
c = i + 1;
break;
}
}
for (int j = c; j < length; j++) {
if (a[j] >= '0' && a[j] <= '9') {
d = d * 10 + (a[j] - '0');
} else {
break;
}
}
switch (x) {
case '+':
b += d;
break;
case '-':
b -= d;
break;
case '*':
b *= d;
break;
case '/':
if (d != 0) {
b /= d;
}
break;
}
return b;
}