大数加法,然后解决int型a+b的范围问题
在一个普通的程序中类似于:
int main()
{
int a ,b ;
scanf("%d%d",&a,&b);
printf("%d",a+b);
return 0 ;
}
会因为int型数据类型范围的约束,在值过大时会产生溢出
这个问题或许对于普通应用的程序没有多大影响,但是对于进行大规模计算,精度计算之类的程序(计算器也是...)有着非常大的意义
这里我会讲解如何解决这类问题(分别涉及大数的加减乘除)
这里有一个写好的程序,他可以计算10000位(电脑配置再高一点可以位数更大)
这里先对加法略作讲解
需要了解的几点知识 :
1 . 通过数组来对每一位进行处理
2 . 这个数组需要倒过来 ,从后向前处理
例如 1234 + 3944
那就是4321 + 4493
分解为 4+4 = 8
3+4 = 7
2+9 = 11
1+3 = 4
然后再对大于10的位数做处理 分别是 此位减10 ,下一位加1
2+9 =11 ------> 11-10 = 1
1+3 = 4 ------> 4+ 1 = 5
然后再判断最后一位是否大于10 ,如果是,长度加1
然后再把数组倒过来输出就可以了
关键是这里面每一步的实现 ,
还有就是留下一个问题 如果是 1234+ 321 这种不同位数的相加 ,怎么在数组按为相加进位时保持同步?
答案留在源代码里面了
**** Hidden Message *****
楼上是大数的效果图,至于普通版本的,大家可以自己去试试,有效位数只有8位
页:
[1]