Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

不用字符串函数,直接两字符串加,遍历顺序正好是从前往后。附代码

Posted by Eov_Second at 2016-12-08 00:11:55 on Problem 1504
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator