题意:就是求a+b (a,b都不超过1000位)
思路:用数组存储
第一道大数的题目,虽然很水,纪念一下!
代码:
#include<cstdio> #include<cstring> int main(){ int t,lena,lenb,i,j,sum,testcase=0; char a[1024],b[1024]; char c[1024];//存 a+b int co;//进位 scanf("%d",&t); int tt=t; while(t--){ co=0; memset(c,'\0',sizeof(c)); testcase++; scanf("%s%s",a,b); lena=strlen(a); lenb=strlen(b); if(lena<lenb){//b长 for(i=lena-1,j=lenb-1;i>=0;i--,j--){ sum=(a[i]-'0')+(b[j]-'0')+co; c[j]='0'+sum%10; co=sum/10; } for(;j>=0;j--){ sum=b[j]-'0'+co; c[j]='0'+sum%10; co=sum/10; } } else{//否则 for(i=lena-1,j=lenb-1;j>=0;i--,j--){ sum=(a[i]-'0')+(b[j]-'0')+co; c[i]='0'+sum%10; co=sum/10; } for(;i>=0;i--){ sum=a[i]-'0'+co; c[i]='0'+sum%10; co=sum/10; } } printf("Case %d:\n",testcase); printf("%s + %s = ",b); if(co!=0) printf("%d",co);//最高位有溢出,则输出最高位的进位 printf("%s\n",c); if(testcase<tt) printf("\n");//注意格式,最后一组没有空行 } return 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。