高精度计算----加法运算
2009-08-05 09:19
267 查看
处理大数加法:
1.用数组来存储每位数,对每位数进行相加运算,要依加法原则,从低位开始运算。而数组是从高位开始存储的,所以要逆序处理运算。要处理进位和当前位超9处理。
2.这里的加法运算不包括负数计算,可以转换为相关的减法运算。
测试程序效果如下:
一下代码包含相加函数,测试的主函数,相加函数(附带注释)直接可以使用:
1.用数组来存储每位数,对每位数进行相加运算,要依加法原则,从低位开始运算。而数组是从高位开始存储的,所以要逆序处理运算。要处理进位和当前位超9处理。
2.这里的加法运算不包括负数计算,可以转换为相关的减法运算。
测试程序效果如下:
一下代码包含相加函数,测试的主函数,相加函数(附带注释)直接可以使用:
#include "stdio.h" #include "stdlib.h" #include "string.h" /************************************************************************/ /* 高精度加法运算 */ /* a[]被加数,位数不限 */ /* b[]加数,位数不限 */ /* back[]结果,字符串保存 */ /************************************************************************/ void add(char a[],char b[],char back[]) { int i,j,k,up,x,y,z,l; char *c; //存储结果的逆数组 if (strlen(a)>strlen(b)) //判断位数哪个更大吗,取较长的位数,以防进位要多补一位和结束符 { l=strlen(a)+2; } else { l=strlen(b)+2; } c=(char *)malloc(l*sizeof(char)); //动态开辟char类型l长度的字符串 i=strlen(a)-1; //取实际长度 j=strlen(b)-1; k=0;up=0; //k是c数组的下标,up代表进位标志 while (i>=0 || j>=0) { if (i<0) //当被加数位数过少的话,用0前补不足 { x='0'; } else { x=a[i]; } if (j<0) //当加数位数过少的话,用0前补不足 { y='0'; } else { y=b[j]; } z=x-'0'+y-'0'; //加法运算 if (up) //对上一次的进位处理 { z+=1; } if (z>9) //超9处理 { up=1; z%=10; } else { up=0; } c[k++]=z+'0'; //存入c数组 i--; j--; } if (up) //末次进位情况 { c[k++]='1'; } c[k]='/0'; //结束符 for (k-=1,i=0;k>=0;k--) //数组逆序赋给back结果数组 { back[i++]=c[k]; } back[i]='/0'; } int main() { int n; char a[1000],b[1000],c[1000]; printf("%s","计算次数: "); scanf("%d",&n); while (n--) { memset(a,'/0',sizeof(a)); memset(b,'/0',sizeof(b)); memset(c,'/0',sizeof(c)); printf("%s","请输入被加数: "); scanf("%s",&a); printf("%s","请输入加数: "); scanf("%s",&b); add(a,b,c); printf("%s%s/n/n","加法后结果为: ",c); } return 0; }
相关文章推荐
- 高精度计算----加法运算(续)
- Android 应用程序分析之Calculator ----核心计算部分的理解和高精度运算
- HDU 1002 (高精度加法运算)
- 华为机试:无线OSS-高精度整数加法、矩阵乘法计算量估算
- 大数,高精度计算---大数加法
- 【高精度计算 03】 大小数加法
- 【重载运算符】高精度计算——(二)加法
- c语言高精度大整数加法运算
- 高精度计算----减法运算
- 蓝桥杯:基础练习 阶乘计算 高精度加法
- leetcode 224. Basic Calculator 字符串表达式计算 + 仅仅涉及到加法减法括号运算
- Android 应用程序分析之Calculator ----核心计算部分的理解和高精度运算
- (高精度运算4.7.24)UVA 10013 Super long sums(大数加法——某一位的数字可能大于10)
- 4、 大数,高精度计算---大数加法
- 高精度运算 大数加法
- 高精度加法计算
- 【高精度计算 04】 大数加法与树结合
- 蓝桥杯:基础练习 Huffuman树、FJ的字符串、阶乘计算、高精度加法
- 高精度运算-(加法减法乘法)
- POJ 2845 01000001 二进制加法 套用高精度加法运算代码