四则运算表达式由运算数(必定包含数字,可能包含正或负符号、小数点)、运算符(包括+、-、*、/)以及小括号((和))组成,每个运算数、运算符和括号都是一个token(标记)。现在,对于给定的一个四则运算表达式,请把她的每个token切分出来。题目保证给定的表达式是正确的,不需要做有效性检查。 输入格式: 在一行中给出长度不超过40个字符的表达式,其中没有空格,仅由上文中token的字符组成 输出格式: 依次输出表达式中的tokens,每个token占一行。用c语言写出代码
时间: 2024-02-21 10:02:19 浏览: 101
Java版计算器支持四则混合运算.+-*/()
5星 · 资源好评率100%
好的,以下是一份C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s[41]; // 存储输入表达式的字符数组
scanf("%s", s);
int len = strlen(s); // 表达式长度
char token[41] = ""; // 当前正在处理的token
for (int i = 0; i < len; i++) {
if (s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/' || s[i] == '(' || s[i] == ')') {
if (strlen(token) > 0) { // 当前正在处理的token不为空
printf("%s\n", token); // 输出当前的token
token[0] = '\0'; // 重置token
}
printf("%c\n", s[i]); // 输出当前的运算符或括号作为一个单独的token
} else { // 当前字符属于数字或小数点
strncat(token, &s[i], 1); // 将当前字符加入当前正在处理的token中
}
}
if (strlen(token) > 0) { // 最后一个token还未输出
printf("%s\n", token); // 输出最后一个token
}
return 0;
}
```
与Python代码类似,这份C代码也是遍历字符串并判断每个字符所属的token类型。不同之处在于,C语言中需要使用字符串函数来操作字符串,如`strlen`、`strncat`等。同时,在输出时需要注意格式,如在输出字符串时需要使用`%s`格式化字符串。
阅读全文