四则运算表达式由运算数(必定包含数字,可能包含正或负符号、小数点)、运算符(包括+、-、*、/)以及小括号((和))组成,每个运算数、运算符和括号都是一个token(标记)。现在,对于给定的一个四则运算表达式,请把她的每个token切分出来。题目保证给定的表达式是正确的,不需要做有效性检查。用c语言
时间: 2023-11-08 13:17:58 浏览: 197
vc++ 简易的计算器四则运算
4星 · 用户满意度95%
可以使用C语言中的字符串处理函数来完成这个任务,具体步骤如下:
1. 定义一个字符串变量存储表达式。
2. 使用 fgets() 函数从标准输入(键盘)读入表达式。
3. 定义一个字符指针变量,初始化为表达式字符串的起始地址。
4. 使用 while 循环遍历表达式字符串,逐个判断每个字符的类型,将每个token切分出来,并输出到控制台。
下面是示例代码:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX_LEN 100
int main() {
char expr[MAX_LEN];
fgets(expr, MAX_LEN, stdin); // 从标准输入读入表达式
char* p = expr; // p指向表达式字符串的起始地址
while (*p != '\0') { // 遍历表达式字符串
if (isdigit(*p) || *p == '.' || (*p == '-' && isdigit(*(p+1)))) {
// 如果当前字符是数字或小数点或负号(但不是减号),说明是一个运算数
printf("运算数:%s\n", p);
while (isdigit(*p) || *p == '.') {
// 继续往后遍历,直到遇到非数字或非小数点的字符为止
p++;
}
} else if (*p == '(' || *p == ')') {
// 如果当前字符是左括号或右括号,说明是一个括号
printf("括号:%c\n", *p);
p++;
} else if (*p == '+' || *p == '-' || *p == '*' || *p == '/') {
// 如果当前字符是加号、减号、乘号或除号,说明是一个运算符
printf("运算符:%c\n", *p);
p++;
} else {
// 如果当前字符是空格、制表符或换行符,直接跳过
p++;
}
}
return 0;
}
```
注意,上面的代码没有考虑表达式中的空格、制表符和换行符,如果要考虑这些情况,可以使用 isspace() 函数判断。
阅读全文