- #include <stdio.h>
- #include <string.h>
- #define jindu 222
- main()
- {
- char a[jindu],b[jindu],s[jindu];
- gets(a);gets(b);
- int alen=strlen(a),blen=strlen(b),slen=0;
- if(blen>alen) //保证a[]比b[]长度长
- {
- s[1]=alen; alen=blen; blen=s[1];
- strcpy(s,a);strcpy(a,b);strcpy(b,s);
- }
- //将a[]和b[]右端对齐,从个位开始相加
- for(int i=alen-1,bpd=0,yi,er;i>=0;i--) //将i定位于a[]末尾端
- {
- yi=a[i]-'0';
- if(bpd==1) //b[]是否完结
- er=0;
- else if(i==alen-blen-1) //若此时已指向b[-1]位
- {
- bpd=1;
- er=0;
- }
- else
- er=b[i-(alen-blen)]-'0';
- //printf("a=%d b=%d\\n",yi,er);
- if(yi+er>=10)
- {
- s[slen]=yi+er-10; //进位
- if(i==0) //若a[i-1]不存在,则直接使下一位s[]=1
- {
- s[slen+1]=1;
- slen++;
- }
- else
- a[i-1]++;
- }
- else
- s[slen]=yi+er;
- slen++;
- }
- for(slen--;slen>=0;slen--) //将s[]倒置输出
- printf("%d",s[slen]);
- }
- //该片段来自于http://www.codesnippet.cn/detail/280620134360.html
来源: http://www.codesnippet.cn/detail/280620134360.html