#include<stdio.h> #include<string.h> #include<math.h> //负数开头的话,就全部往后移,然后前面加'0' //可能不止一位 int main() { int t; scanf("%d",&t); for(int z=0;z<t;z++) { char a[1100]; int b[1000]; char c[1000]; int p=0,q=0; int flag=0,count=0,sum=0; scanf("%s",a); if(a[0]=='-') { for(int i=strlen(a)-1;i>=0;i--) { a[i+1]=a[i]; } a[0]='0'; } for(int i=0;i<strlen(a);i++) { if(a[i]=='+'||a[i]=='-') { count=i-flag; for(int j=count;j>0;j--) { sum=sum*10+(int)(a[i-j]-'0');//sum要置0 } b[p++]=sum; // printf("%d ",sum); c[q++]=a[i]; sum=0; flag=i+1; } } // 添加最后一个数字 count=strlen(a)-flag; for(int j=count;j>0;j--) { sum=sum*10+(int)(a[strlen(a)-j]-'0');//sum要置0 } b[p++]=sum; //数字和运算符已经采集完毕 // printf("%d\n",p); // for(int i=0;i<p;i++) // printf("%d ",b[i]); // printf("\n"); // for(int i=0;i<q;i++) // printf("%c ",c[i]); // printf("\n"); int num=b[0]; for(int i=1;i<p;i++) { if(c[i-1]=='-') num=num-b[i]; else if(c[i-1]=='+') num+=b[i]; } printf("%d\n",num); } } |
Double click to view unformatted code.