资源限制
时间限制:1.0s 内存限制:256.0MB
编写一个字符串表达式求解函数int expression(char* s); 输入一个字符串表达式,返回它的结果。表达式长度不会超过100。表达式最少有一项,且以等号=结束。表达式中只包含加法和减法,且运算均在整数范围之内。
编写main函数测试该函数的正确性。
输入:
2+2345+913-3=
输出:
3257
思路:
1.把字符串中的整数用临时字符串读出,并转化为int存入数组中
2.把遇到的+,-字符也存入一个字符串中
3.别分访问进行计算
注意:在字符串与字符数组转化为int时,使用atoi()函数使,要使用str.c_str()函数把字符串准换为字符数组,并且注意头文件的使用
#include<iostream>
#include<string>
#include<stdlib.h>//将字符串转化为int型
#include<cstring>//使用starlen()计算字符串长度
using namespace std;
int expression(char* s)
{
int sum = 0;//求和
string tem = "";//临时储存一个整数
string fuhao = "";//储存字符串的+-符号
int a[100];//把提取的每个整数存入数组
int count=0;//计算存入的个数
for (int i = 0; i<strlen(s); i++)
{
if(s[i]>=48&&s[i]<=57)//连续在区间0-9之间
tem = tem + s[i];
else//遇到符号位置
{
fuhao += s[i];//把符号存进去
a[count] = atoi(tem.c_str());//使用函数转化为整型
count++;//数目增加
tem = "";//临时清空
}
}
sum = a[0];
for (int i = 0; i < count; i++)
{
if (fuhao[i] == '+')
sum = sum + a[i + 1];
if(fuhao[i]=='-')
sum = sum - a[i + 1];
if (fuhao[i] == '=')
return sum;
}
}
int main()
{
char s[100];
cin >> s;
cout << expression(s);
return 0;
}