写代码之前曾经看过好几种不同风格的代码,也简单研究并分析了各种大数加法版本,最后还是选定了一个代码风格比较适合我的一段代码,然后按照这个风格敲了段两个大数相加的代码。
大数的运算基本上都是用c语言写的,输入输出的话,用c++确实不知道怎么整
首先,分析一下大数运算的原理吧。
1.输入,定义char数组,不妨设为char a[NM]然后scanf("%s",a);,另一个就命名为char b[NM] scanf("%s",b);
放在一起输入就可以了。另外由于需要用一个数组存放两个大数相加的和,所以这个数组就稍稍开大一点,命名为char sum[NM+1]={0};
这就是输入了,为了后面相加的需要,肯定要求出长度,la=strlen(a);lb=strlen(b);
2.中间写程序的思路,原理就是小学的列式相加了,不再废话,关键是如何实现。
按照这个思路:
for(j=la-1,k=0;j>=0;j--)//由于输入的时候,a[0]存的是最高位,所以这儿按照倒序重新存,为了计算需要。
sum[k++]=a[j]-'0';
for(j=lb-1,k=0;j>=0;j--)
sum[k++]+=b[j]-'0';
l=la>lb?la:lb;
for(j=0;j<l;j++)
if(sum[j]>10)
{
}
if(sum[j])l++;
for(j=l-1;j>=0;j--)
printf("%d",sum[j]);
printf("\n");
这就是我对整个大数计算的全部解剖了,纠结了一天多的时间彻底懂了大数加法
具体见自己的另一博文:http://blog.sina.com.cn/s/blog_8a24b3a3010123es.html