| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
不用字符串函数,直接两字符串加,遍历顺序正好是从前往后。附代码int main(){
int n;
char a[90],b[90],e[90],c,d,*p,*q,*r;
scanf("%d",&n);
while(n--){
scanf("%s %s",a,b);
p=a;q=b;r=e;d=0;
memset(e,0,90);
// 两个指针一起走,直到其中一个到字符串结尾
// d保存每次加法的进位
while(*p){
if(0==*q)break;
c = *p+*q+d-48;
if(c>57){c-=10;d=1;}
else d=0;
*r=c;
p++;q++;r++;
}
// 长的串还剩余字符,继续遍历。统一让p指向剩下的字符串
if(*q)p=q;
while(*p){
c=*p+d;
if(c>57){c-=10;d=1;}
else d=0;
*r=c;
p++;r++;
}
// 处理类似999+1这种情形,加完之后还有进位
if(d)*r++=49;*r=0;
// 去掉最终和前的0
r=e;while(*r==48)r++;
printf("%s\n",r);
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator