View Code of Problem 3855

#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.


Back to problem 3855