这里是ACM机器编译不通过的代码,求指教为何错误了??VC++6.0运行成功
<pre class="cpp" name="code">#include <iostream> #include<string> using namespace std; int main() { int t,s[1002]={0}; string a,b; int L1,L2,LS,LS1=0,n,m,k; /* *t储存实例的样例数1-20 *s[1002]储存数组 *a,b分别储存输入的数字 *L1储存A数字的长度最后一个元素的下标 *L2储存B数字的长度最后一个元素的下标 *LS储存结果数字的最后一个元素的下标 *LS1储存结果长度,如果进位的话,除了第一位没包括 *n,m是分别对应位数的数字用于相加 *k储存数字结果 */ cin>>t; bool flag=false;//判断是否进位 for(int i=1;i<=t;i++) { cin>>a>>b; L1 = a.length()-1; L2 = b.length()-1; if(L1 == L2) { if((a[0]+b[0]-'0'-'0') >= 10) { LS = (L1>L2)?L1:L2; LS++; } else { LS = (L1>L2)?L1:L2; } } else if(L1 > L2) { LS = L1; } else { LS = L2; } while(L1 >= 0 && L2 >=0) { n=a[L1]-'0'; m=b[L2]-'0'; if((n+m) >= 10) flag=true; else flag=false; if(flag) { k=(n+m)-10; s[LS]+=k; s[--LS]=1; LS1++; if((L1==L2) && L1==0)LS1++; L1--; L2--; } else { k=(n+m); s[LS]+=k; if(s[LS] == 10) { s[LS]=0; s[--LS]=1; } else { s[--LS]=0; } L1--; L2--; LS1++; } } int temp=0; if(L1 < 0) { while(L2 >= 0) { s[LS]+=b[L2]-'0'; if(s[LS] >=10) { if(LS == 0) { temp=1; s[LS]=0; } else { temp=0; s[LS] = 0; s[--LS] = 1; LS++; } } LS--; L2--; LS1++; } } if(L2 < 0) { while(L1 >= 0) { s[LS]+=a[L1]-'0'; if(s[LS] >=10) { if(LS == 0) { temp=1; s[LS]=0; } else { temp=0; s[LS] = 0; s[--LS] = 1; LS++; } } LS1++; LS--; L1--; } } cout<<"Case "<<i<<":"<<endl; cout<<a<<" + "<<b<<" = "; if(temp==1) { cout<<temp; } for(int e=0;e<LS1;e++) { cout<<s[e]; s[e]=0; } cout<<"\n"; if(i == t){} else cout<<"\n"; LS1=0; } return 0; }
这里是编译通过的代码
#include<iostream> #include<string> using namespace std; int main() { string a,b; int num,sum[1000]; cin>>num; for(int l=0;l<num;l++) { cin>>a>>b; int m=0,n=0,temp=0,i,k; int q=0;//用于记录sum数组的长度!! i=a.length(); k=b.length(); i=i-1; k=k-1; while(i>=0 && k>=0) { m=a[i]-'0'; n=b[k]-'0'; sum[q++]=(temp+m+n)%10; temp=(temp+m+n)/10; i--; k--; } if(i>k) { while(i>=0) { m=a[i]-'0'; sum[q++]=(temp+m)%10; temp=(temp+m)/10; i--; } } if(k>i) { while(k>=0) { m=b[k]-'0'; sum[q++]=(temp+m)%10; temp=(temp+m)/10; k--; } } sum[q]=temp; cout<<"Case "<<l+1<<":"<<endl; cout<<a<<" + "<<b<<" = "; if(sum[q]!=0) cout<<sum[q]; for(--q;q>=0;q--) cout<<sum[q]; cout<<endl; if(l<num-1) cout<<endl; } return 0; }
</pre><pre class="cpp" name="code" snippet_file_name="blog_20141120_5_1564528" code_snippet_id="525913">
求告诉第一个代码为何不能AC
而第二个代码可以AC
两张都运行正确,而且我运行时结果也都没见错误。