杭电oj 1002题,我vc好几次都对,老是WA,求指导!代码如下:0
hxehsh2014.04.10浏览66次分享举报
#include
using namespace std;
#include
#include
int main()
{
int i,j,T,k;
char a[1002],b[1002];//大整数转换为字符串处理
char *pa=a;
char *pb=b;
char *p;
cin>>T;//测试组数
if(T>=1&&T<=20){
for(k=1;k<=T;k++){
cin>>a>>b;
if(strlen(a)>1000||strlen(b)>1000){//a,b超过一千位,不符题意return 0结束
return 0;}
else{
char c[1002]={"0"};//a,b相加得到的数位数超过a,b时,最前面补0,作为第1位数
if(atof(a)>0&&atof(b)>0){//atof(字符串转换为浮点数函数,包含在中,atol无法将较长的字符串转换为长整数)判断测试数据是否为正整数,反之return 0
if(strlen(a)>=strlen(b)){
strcat(c,a);}//将大的数前面补一个0
else{
p=pa;
pa=pb;
pb=p;
strcat(c,pa);}//同上
for(i=strlen(c)-1,j=strlen(pb)-1;i>=0,j>=0;){//从两数最后一位开始加
if((c[i]-'0'+pb[j]-'0')>=10){
c[i]=(c[i]-'0')+pb[j]-10;
i--;j--;
c[i]=c[i]+1;}//相加大于10的前面一位数加1
else{
c[i]=c[i]-'0'+pb[j];
i--;j--;}
}
if(c[0]=='0'){
cout<
for(i=0;i
cout<
cout<
else{//如果相加大于10,要把第一位数输出来(肯定是"1")
cout<
cout<
}
else
return 0;}
}
return 0;
}
return 0;
}