#include <stdio.h>
#include <string.h>
/*
高精度大数相加,未判断输入负数情况 位数(1000以内)
*/
int main()
{
char a[1000],b[1000];
int c[1002]={0};
int n[1000]={0},m[1000]={0};//这三个数组必须初始化为0;
int p=0;
int i,j,k=0;
scanf ("%s%s",a,b);
if (a[0]=='0'&&b[0]=='0')
{printf ("0"); //判断输入为0时
return 0;}
else
{
int x=strlen(a),y=strlen(b);//计算输入的数字长度
for (i=0,j=x-1;i<x;i++,j--)
n[i]=a[j]-'0';
for (i=0,j=y-1;i<y;i++,j--)
m[i]=b[j]-'0';//逆序排序
k=x>y?x:y; //判断输入的那个位数长
for (i=0;i<=k;i++)//进位处理 ,相比于i<=2000,优化效率
{
c[i]+=n[i]+m[i];
if (c[i]>=10)
{
c[i+1]++;
c[i]%=10;
}
}
for (j =1001;; j--) //去除未用到的位,即去 0
if (c[j] != 0)
{
p=j;
break;
}
for (i = p; i >= 0; i--)
printf("%d", c[i]);//逆序输出
printf("\n");
return 0;
}
}
高精度数相加,俗称大整数相加
原创
©著作权归作者所有:来自51CTO博客作者Petterpx的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:通过属性选择器获取表单对象
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
大数(相加,高精度)模板
试试。 给出一些让你测试的数据。如果,答
acm 大数模板 git i++ #include -
poj1503(高精度运算之大数相加)
题目意思很容易懂,明显的大数相加,但是需要注意程序会输入类似0035这样有前导0的
高精度运算 水题 poj i++ 数组 倒序 -
大整数高精度加减乘除
#include#includestruct bign{ int d[1000];
c语言 算法 i++ 高精度 #include -
高精度、大整数幂取模
格式为:cha^chb%ccha、chb均为字符串/* * FZU1759.cpp * * Created on: 2011-10-11 * Author: bjfuwangzhu */#include#include#include#include#define LL long long#define nnum 1000005#define nmax 31625int flag[nmax], prime[nmax];int plen;void mkprime() { int i, j; memset(flag, -1, sizeof(flag)); for (i...
i++ #include #define #ifndef #endif