小白C语言写高精度算法(加法)
2017-04-15 13:30
169 查看
基本思路
用字符数组获取两个加数,用两个整形数组分别转存两个加数中的每一位,用手算加法的思路处理进位问题(代码中体现)
用字符数组获取两个加数,用两个整形数组分别转存两个加数中的每一位,用手算加法的思路处理进位问题(代码中体现)
#include<stdio.h> #include<string.h> #define N 100 int main() { char cNum1 ,cNum2 ; int iNum1 ,iNum2 ,iSum ; int Num1_legth,Num2_legth,i,Sum_legth=0,temp=0; memset(iNum1,0,sizeof(iNum1)); //数组清零 memset(iNum2,0,sizeof(iNum2)); memset(iSum,0,sizeof(iSum)); gets(cNum1); gets(cNum2); Num1_legth=strlen(cNum1); Num2_legth=strlen(cNum2); for(i=0;i<Num1_legth;i++) iNum1[Num1_legth-i-1]=cNum1[i]-48; //转存 for(i=0;i<Num2_legth;i++) iNum2[Num2_legth-i-1]=cNum2[i]-48; while(Sum_legth<Num1_legth||Sum_legth<Num2_legth)//处理进位 { iSum[Sum_legth]=iNum1[Sum_legth]+iNum2[Sum_legth]+temp; temp=iSum[Sum_legth]/10; iSum[Sum_legth]%=10; Sum_legth++; } iSum[Sum_legth]=temp; if(iSum[Sum_legth]==0)//输出判断最高一位是否为0,是否需要输出 { for(i=Sum_legth-1;i>=0;i--) printf("%d",iSum[i]); } else { for(i=Sum_legth;i>=0;i--) printf("%d",iSum[i]); } return 0; }
相关文章推荐
- C语言学习趣事_之_大数运算_加法
- 小白学习c语言之基本数据类型,运算符,基本语句
- 链表实现多项式加法和乘法(C语言实现)
- 多项式加法(单链表 c语言)
- 汇编调用C语言 实现简单加法计算
- c语言中地址加法与减法
- 关于C语言中加法的实现原理
- C语言 对输入的1位数加法公式求和
- 小白说编译原理-8-简单minus-c语言编译树(支撑类)
- 多项式加法利用链表实现(c语言)
- 十字链表实现矩阵加法(C语言实现)
- C语言小试牛刀两个初级程序练习------1到100的加法运算,两个数大小的比较
- C语言(7)--高精度加法、减法、乘法、今天是星期几、四位平方数、候选人选票问题
- C语言大数加法
- 大数加法(C语言)#include<stdio.h> #include<stdlib.h> #include<string.h> char A[10005]; char B[10005]; int
- 高精度处理大数加法C语言实现
- C语言经典最基础算法题(从小白到大神)
- C语言-大数加法
- 百炼-2792-集合加法-C语言-计数排序
- 小白说编译原理-8-简单minus-c语言编译树(支撑类)