| #include<iostream> #include<cstdlib> #include<cstring> using namespace std; int sum[1000],num1[1000]; void GetLargenum(int *num1,char *str,int k,int p)//分解表达式中的大数(从k到p) { int n=0,m; if(k==0) m=k;//刚开始的时候m=0; else m=k+1;//随后m为加号后面的数开始 for(int i=p-1;i>=m;i--) num1[n++]=str[i]-'0'; } void Calc(int *sum,int *num1)//利用sum数组进行累加 { for(int i=0;i<1000;i++) { sum[i]=sum[i]+num1[i]; if(sum[i]>=10) { sum[i]=sum[i]-10; sum[i+1]+=1; } } } int main() { char str[1500]; cin>>str; memset(sum,0,sizeof(sum)); int k=0,p=0; for(int i=0;str[i]!='/0';i++) { if(str[i]=='+') { k=p;p=i;//利用k,p保存数的开头和结尾 memset(num1,0,sizeof(num1)); GetLargenum(num1,str,k,p); Calc(sum,num1); } } int len=strlen(str); memset(num1,0,sizeof(num1));//最后一个数以'/0'结尾,单独处理 GetLargenum(num1,str,p,len); Calc(sum,num1); bool beStartOutput=false; for(int i=999;i>=0;i--) { if(beStartOutput||sum[i]) { cout<<sum[i]; beStartOutput=true; } } if(!beStartOutput) cout<<'0'; cout<<endl; return 0; } |