题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
#include<stdio.h> #include<string.h> int main(void) { char str1[10010]={0}; char str2[10010]={0}; char str3[10001]={0}; scanf("%s%s",&str1,&str2); int len1=strlen(str1); int len2=strlen(str2); int jin=0; if(len1<len2) { char temp[10001]; strcpy(temp,str1); strcpy(str1,str2); strcpy(str2,temp); int t; t=len1; len1=len2; len2=t; }//保证len>1=len2 if(len1>len2) { for(int i=len2-1;i>=0;i--) { str2[i+len1-len2]=str2[i]; } for(int i=0;i<len1-len2;i++) { str2[i]='0'; } }//保持后对齐 //printf("%s\n",str1); //printf("%s\n",str2); for(int i=len1-1;i>=0;i--) { int num=str1[i]-'0'+str2[i]-'0'+jin; if(num<=9) { str3[i]=str1[i]-'0'+str2[i]+jin; jin=0; } else if(num>9) { str3[i]=str1[i]-'0'+str2[i]-'0'+jin-10+'0'; jin=1; } /*if(jin==1&&i==0) { str3[i]='1'; }*/ } if(jin==1) { printf("1"); printf("%s",str3); } else { //printf("1"); printf("%s\n",str3); } return 0; }