首页 > 代码库 > 大数加法
大数加法
http://blog.csdn.net/u010258605/article/details/44308149
参考自以上博客。
/** Description: Arguments: Returns: (1) 数据的输入 (2) 数据的存储 (3)数据的运算:进位和借位 (4)结果的输出:小数点的位置和处于多余的0 */ #include <cstdio> #include <cstring> int main() { char a[500],b[500]; scanf("%s %s",a,b); int lena=strlen(a),lenb=strlen(b); int aa[500],bb[500],cc[500]; memset(aa,0,sizeof(aa)); memset(bb,0,sizeof(bb)); memset(cc,0,sizeof(cc)); //将字符串转换成数组 for(int i=0;i<=lena-1;i++) { aa[lena-i]=a[i]-48;//倒着储存数字a[]={1,2,3},aa[]={3,2,1};从1开始的, } for(int i=0;i<=lenb-1;i++) { bb[lenb-i]=b[i]-48;//倒着储存数字a[]={1,2,3},aa[]={3,2,1};从1开始的, } // 运算 进位和借位 int th=1,x=0;//竖式运算时个位对齐,一位一位往前加; //x为进位的数字,th为第几位; while(th<=lena||th<=lenb) { cc[th]=aa[th]+bb[th]+x; x=cc[th]/10;//进位是几; cc[th]%=10;//本位是几; th++;//位数加一 } cc[th]=x; if(cc[th]==0)//如果最高位为零就不输出,所以位数减一; { th--; } for(int i=th;i>=1;i--) { printf("%d",cc[i]); } printf("\n"); }
大数加法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。