题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
C语言
大数相加的痛
#include <stdio.h> #include <string.h> void reverse(char str[],int length) { int i; char s[10001]; for(i=0;i<length;i++) s[i]=str[length-i-1]; s[i]='\0'; for(i=0;i<length;i++) str[i]=s[i]; } void add_0(char str1[],int length1,char str2[],int length2) { int i; if(length1<length2) { for(i=length1;i<length2;i++) str1[i]='0'; str1[i]='\0'; } else if(length2<length1) { for(i=length2;i<length1;i++) str2[i]='0'; str2[i]='\0'; } } void add(char str1[],char str2[],int length) { int i,jin=0; for(i=0;i<length;i++) { int sum=0; sum=str1[i]+str2[i]+jin-2*'0'; str1[i]=sum%10+'0'; jin=sum/10; } if(jin==0) str1[i]='\0'; else { str1[i++]=jin+'0'; str1[i]='\0'; } } int main() { char str1[10001],str2[10001]; int length1,length2; scanf("%s",str1); scanf("%s",str2); length1=strlen(str1); length2=strlen(str2); reverse(str1, length1); reverse(str2,length2); add_0(str1, length1, str2, length2); int max=length1; if(max<length2) max=length2; add(str1, str2, max); int length_new=strlen(str1); reverse(str1,length_new); puts(str1); return 0; }
大数相加的痛