您的位置:首页 > 编程语言 > Lua

327 - Evaluating Simple C Expressions

2014-11-04 14:25 127 查看
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
int atoz[26],flag[26],i,result,operand,opersign;
char expressions[150];
while(fgets(expressions,150,stdin)!=NULL)
{
printf("Expression: %s",expressions);
for(int j=0;j<26;j++)
atoz[j]=j;
memset(flag,0,sizeof(flag));
i=result=opersign=0;
int len=strlen(expressions);
for(int j=0;j<len;j++)
{
if(expressions[j]==' ')
{
for(int k=j;k<strlen(expressions);k++)
{
expressions[k]=expressions[k+1];
}
j--;
}
}
while(i<strlen(expressions))
{
if(islower(expressions[i]))
{
operand=expressions[i]-'a'+1;
flag[operand-1]=1;
if(expressions[i+1]=='+' && expressions[i+2]=='+')
{
atoz[operand-1]++;
i=i+2;
}
if(expressions[i+1]=='-' && expressions[i+2]=='-')
{
atoz[operand-1]--;
i=i+2;
}
}
else if(expressions[i]=='+')
{
operand=expressions[i+2]-'a'+2;
atoz[operand-2]++;
flag[operand-2]=1;
i=i+2;
}
else
{
operand=expressions[i+2]-'a';
atoz[operand]--;
flag[operand]=1;
i=i+2;
}
if(opersign==0)
result+=operand;
else
result-=operand;
if(expressions[++i]=='+')
opersign=0;
else
opersign=1;
i++;
}
printf("    value = %d\n",result);
for(int j=0;j<26;j++)
{
if(flag[j]==1)
printf("    %c = %d\n",j+'a',atoz[j]+1);
}
}
return 0;
}

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=104&page=show_problem&problem=263
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  acm uva 编程