大整数减法
2012-04-23 20:35
148 查看
写了一个大整数减法的代码,有注释,可以参考一下。有不对的地方请高手指点。适用范围是被减数大于减数的情况下。
代码如下:
代码如下:
//s1 > s2时适用 s1被减数,s2减数, t结果 void mysub(char s1[], char s2[], char t[]) { int i, l1, l2; l1 = strlen(s1); l2 = strlen(s2); t[l1] = '\0';l1--;//t最长为s1的长度,把最后一位赋值为结束标记 for(i = l2-1; i >= 0; i--, l1--)//s1与s2逐位相减 { if(s1[l1] >= s2[i])//s1当前位大于s2的当前位 t[l1] = s1[l1] - s2[i] + '0';//直接减 else { //借位减 t[l1] = 10 + s1[l1] - s2[i] + '0'; s1[l1 -1] = s1[l1-1]-1; } } int k = l1; while(s1[k]<0)//如果s1剩下位置上的数小于0了,说明被借位了,要加上10 { s1[k] += 10;//加上10 s1[k - 1] -= 1;//到前一位借位 k--;//指针前移 } while(l1 >= 0)//把多余s2的长度那部分都加入到t结果数组里面 { t[l1] = s1[l1]; l1--; } while (t[0]=='0') //把前导0去掉 { l1=strlen(s1); //每一位依次前移 for (i=0;i<l1-1;i++) t[i]=t[i+1]; t[l1-1]='\0'; } if(strlen(t) == 0) { t[0] = '0'; t[1] = '\0'; } } int main() { char b[1000], j[1000], r[1000]; cin >> b >> j; mysub(b, j, r); cout << r << endl; return 0; }
相关文章推荐
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 大整数减法(高精度)
- 大整数减法
- 百练_2736大整数减法(大数相减)
- 大整数减法
- 11:大整数减法
- 大整数运算模板(减法)
- [原创]10^9进制高精度大整数减法(MMX版本)
- 算法(求对输入的N个数进行加法或减法运算,得到最小的正整数的组合.)
- 大整数减法(模板)
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 大整数减法
- 整数高精度运算的库(加法,减法,乘法,除法,取模)
- 【Java】只允许使用加号,实现整数的减法,乘法,除法
- 面试题目任意位数整数减法
- 华为机试题——整数减法
- 大整数的加法、减法和乘法
- 2749(附大正整数减法)
- 大整数算法[07] 绝对值减法
- 大整数减法模板