第1个回答 2009-08-02
#include<iostream>
#include<string.h>
using namespace std;
main ()
{
char a[1000];
cin>>a;
int s=0,c=1,b=0;//c是符号,b是当前数字,s是和
for (int i=0;i<=strlen (a);i++)
{if (a[i]>='0' && a[i]<='9'){b*=10;b+=(a[i]-'0')*c;}
if (a[i]=='+'){c=1;s+=b;b=0;}
if (a[i]=='-'){c=-1;s+=b;b=0;}
if (a[i]==';'){s+=b;cout<<s;break;}
}
// cin>>s;
}
//百度上的';'太难看了
第2个回答 2009-08-01
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main(void)
{
int i = 0, j = 0;
int plus = 0;
double value = 0.0;
char s[200];
char s1[200];
gets(s);
while(1)
{
if (s[i] == '+' || s[i] == ';')
{
s1[j] = '\0';
if (plus == 0)
value += atof(s1);
else
value -= atof(s1);
plus = 0;
j = 0;
}
else if (s[i] == '-' || s[i] == ';')
{
s1[j] = '\0';
if (plus == 0)
value += atof(s1);
else
value -= atof(s1);
plus = 1;
j = 0;
}
else
s1[j++] = s[i];
if (s[i] == ';')
break;
i++;
}
printf("%lf", value);
}
这是解析字符串表达式的方法