首页 > 代码库 > 高精度加法
高精度加法
1 #include <stdio.h> 2 #include <string.h> 3 #define MAX 200 //大数最长位数 4 int main() 5 { 6 char str1[MAX]; 7 char str2[MAX]; 8 char ans[MAX+MAX+1]; //用char型节省空间 9 int len1,len2,bit,i,flag; 10 memset(ans,0,sizeof(ans)); 11 printf("Please input a big number:"); 12 scanf("%s",str1); 13 printf("Please input another big number:"); 14 scanf("%s",str2); 15 len1=strlen(str1)-1; 16 len2=strlen(str2)-1; 17 bit=0; 18 while(len1 >= 0 && len2 >= 0) //相同位数相加 19 ans[bit++]=str1[len1--]-‘0‘+str2[len2--]-‘0‘; 20 while(len1 >= 0) //str1多出的位放在结果里面 21 ans[bit++]=str1[len1--]-‘0‘; 22 while(len2 >= 0) //str2多出的位放在结果里面 23 ans[bit++]=str2[len2--]-‘0‘; 24 //deal jinwei 25 len1=strlen(str1); 26 len2=strlen(str2); 27 for(i=0;i<(len1>len2?len1:len2)+1;i++) //处理进位,结果最长不会超过最长的数字位数+1 28 if(ans[i]>=10) 29 { 30 ans[i+1]+=ans[i]/10; 31 ans[i]%=10; 32 } 33 //print 34 printf("%s + %s = ",str1,str2); 35 if(str1[0]=str2[0]==48) //处理 0+0=0 36 { 37 printf("0 \n"); 38 return 0; 39 } 40 flag=0; 41 for(bit=len1+len2-1;bit>=0;bit--) //倒找第一位,即第一个非 \0 42 { 43 if(ans[bit] != ‘\0‘) flag=1; 44 if(flag) printf("%d",ans[bit]); 45 } 46 putchar(‘\n‘); 47 return 0; 48 } 49 50
高精度加法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。