经常会有越界的情况,这是因为不管是int,double,或者longlong都有一定的范围(约2*10^9...10^19)
但当数据非常大的时候就无法整体去计算,我们可以把它看做数组来做。
#include#include char s1[201],s2[201]; int main() { int i,k,carry,ilength_1,ilength_2; int a[500]={0},b[500]={0}; while(scanf("%s %s",s1,s2)) { ilength_1=strlen(s1); ilength_2=strlen(s2); for(i=0;i ilength_2) k=ilength_1; else k=ilength_2; carry=0; for(i=0;i =0;i--) { printf("%d",a[i]); } } return 0; }
这边需要注意一下,进位的情况。并且最后进位需要输出一个‘1’。
加法做后,同理也可以去做减,与相加相似的是减需要借位去减
也可以去想一下乘法,乘法的进位就比较多了,但其最多也是9*9=81。
大家可以去想一下,用代码去实现一下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)