大数相加
发布时间:2020-12-14 04:07:23 所属栏目:大数据 来源:网络整理
导读:#include stdio.h#include malloc.h#include string.h#define N 100int main(){int i;bool flag = false;char s1[N],s2[N];printf("输入被加数:n");scanf("%s",s1);printf("输入加数:n");scanf("%s",s2);int len1 = strlen(s1);int len2 = strlen(s2);int
#include <stdio.h> #include <malloc.h> #include <string.h> #define N 100 int main() { int i; bool flag = false; char s1[N],s2[N]; printf("输入被加数:n"); scanf("%s",s1); printf("输入加数:n"); scanf("%s",s2); int len1 = strlen(s1); int len2 = strlen(s2); int len = (len1>len2 ? len1:len2)+1; char *a = (char*)malloc(sizeof(char)*len1); char *b = (char*)malloc(sizeof(char)*len2); char *c = (char*)malloc(sizeof(char)*len); memset(c,len); for(i=0;i<len1;i++) a[i] = s1[len1-1-i]-'0'; for(i=0;i<len2;i++) b[i] = s2[len2-1-i]-'0'; if(len1>=len2) { for(i=0;i<len2;i++) c[i] = a[i]+b[i]; for(i=len2;i<len1;i++) c[i] = a[i]; } else { for(i=0;i<len1;i++) c[i] = a[i]+b[i]; for(i=len1;i<len2;i++) c[i] = b[i]; } for(i=0;i<len;i++) { if(c[i]>9) { c[i+1] += c[i]/10; c[i] = c[i]%10; } } printf("大数相加结果为:n"); for(i=len-1;i>=0;i--) { if(flag) { c[i]+='0'; printf("%c",c[i]); } else if(c[i]!=0) { flag = true; c[i]+='0'; printf("%c",c[i]); } } printf("n"); free(a); free(b); free(c); a=NULL; b=NULL; c=NULL; return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |