大数的四则运算(转)
2013-03-24 13:30
211 查看
原文网址:http://www.cnblogs.com/dolphin0520/archive/2011/04/11/2012867.html
在处理大数的运算时,一般采用数组去模拟,下面介绍大数的加、减、乘、除四则运算的实现方法。
1.加法。
如:
Input: 123456789123456789123456789
1
Output:123456789123456789123456790
输入采用字符数组保存,然后将输入存在整形数组里,然后逐位相加即可,同时注意进位处理。
View Code
在处理大数的运算时,一般采用数组去模拟,下面介绍大数的加、减、乘、除四则运算的实现方法。
1.加法。
如:
Input: 123456789123456789123456789
1
Output:123456789123456789123456790
输入采用字符数组保存,然后将输入存在整形数组里,然后逐位相加即可,同时注意进位处理。
View Code
除法模板 #include<stdio.h> #include<string.h> int len1,len2; char s1[905]; char s2[905]; int re[905]; void sub() { int i=0; int j; while(1) { if(s1[i]=='0') i++; else { j=i; break; } } for(;i<len2;i++) { s1[i]=s1[i]-s2[i]+'0'; } for(i=len2-1;i>j;i--) //低位开始检测是否小于0 { if(s1[i]<'0') { s1[i]+=10; s1[i-1]--; } } } int main(void) { int i,p; while(scanf("%s%s",s1,s2)==2) { len1=strlen(s1); len2=strlen(s2); if(len1<len2||(len1==len2&&strncmp(s1,s2,len2)<0)) //如果a<b,直接输出0 { printf("0\n"); continue; } p=0; while(1) { re[p]=0; while(strncmp(s1,s2,len2)>=0) //一直进行减法,直到不能减为止 { sub(); re[p]++; } p++; if(len1==len2) break; for(i=len2-1;i>=0;i--) //在s2前面补0,以便进行减法运算 { s2[i+1]=s2[i]; } s2[0]='0'; len2++; s2[len2]='\0'; } i=0; while(1) { if(re[i]==0) i++; else break; } for(;i<p;i++) printf("%d",re[i]); printf("\n"); } return 0; }
相关文章推荐
- 大数项目:用字符串表示超过内存表示范围的大数据并实现四则运算
- 【大数算法】( 十进制整数四则运算) 十进制运算与二进制比较与思考
- 大数的四则运算及求模
- 高精度(大数)的四则运算与逻辑运算---c++ struct版
- 算法-大数的四则运算
- 大数的四则运算
- 面试100题系列之13大数的四则运算
- 大数字符串的四则运算之加法----Java代码实现
- 大数的四则运算之乘法----Java代码实现
- 【C++】大数的+-*/四则运算
- 大数的四则运算之除法----Java代码实现
- 大数的四则运算
- 面试题13之大数的四则运算(续)
- 面试100题系列之13大数的四则运算
- 20162317-20162315结对编程-四则运算(挑战出题)
- 20162322朱娅霖 结对编程-四则运算(挑战出题)
- 四则运算计算器
- 大数运算(3)——大数减法
- 四则运算测试脚本运行情况
- 7 超长整数运算(大数运算)