计算一个字符串,字符串包含数字和加减符号,返回整数。请用C语言实现,不要使用栈
时间: 2023-12-10 20:40:43 浏览: 38
可以使用一个变量来记录当前累加的结果,每次遍历字符串时根据遇到的符号更新这个变量即可。具体实现如下:
```c
#include <stdio.h>
#include <ctype.h>
int calculate(char* s) {
int result = 0; // 记录当前的结果
int num = 0; // 临时记录当前遍历到的数字
char sign = '+'; // 记录当前的符号,默认为加号
while (*s) {
if (isdigit(*s)) {
num = num * 10 + (*s - '0'); // 如果遇到数字,累加到num中
}
if (!isdigit(*s) && !isspace(*s) || !*(s+1)) { // 如果遇到符号或者字符串结束,更新result
switch (sign) {
case '+':
result += num;
break;
case '-':
result -= num;
break;
}
sign = *s; // 更新当前符号
num = 0; // 重置num
}
s++; // 遍历下一个字符
}
return result;
}
int main() {
char s[] = "1 + 2 - 3 + 4";
int result = calculate(s);
printf("%d\n", result); // 输出4
return 0;
}
```
在这个实现中,我们遍历整个字符串,遇到数字就累加到num中,遇到符号就根据之前的符号更新result。当字符串遍历完时,最后一个数字还没有加到result中,因此需要在循环结束后再更新一次。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)