### 高精度加法 ```c #include #include int main(){ char str1[200], str2[200], result[201] = {0}; int i, j, k = 0, t = 0; scanf("%s %s", str1, str2); i=strlen(str1)-1; j=strlen(str2)-1; while(i >= 0 || j >= 0){ if(i >= 0) t+=str1[i--]-48; if(j >= 0) t+=str2[j--]-48; result[k++] = t%10+48; t /= 10; } if(t != 0){ result[k++] = t+48; } for(i=k-1;i>=0;i--){ putchar(result[i]); } puts(""); return 0; } ``` ### 高精度乘法 ```c #include int main(){ char str1[200], str2[200], result[400]={0}; int i, j, k, t = 0; scanf("%s %s", str1, str2); j=strlen(str2)-1;//下面的数的从个位开始的每一位的下标 while(j>=0){ i=strlen(str1)-1;//上面的数的每一位的下标 k=0;//上面数字的 0:个位 1:十位 t=strlen(str2)-j-1;//下面数字乘法的偏移量 while(i>=0){ result[k+t] += (str1[i]-48)*(str2[j]-48); result[k+t+1] += result[k+t]/10; result[k+t] %=10; k++; i--; } j--; } k+=strlen(str2); while(result[k] == 0) k--; while(k>=0){ putchar(result[k--]+48); } printf("\n"); return 0; } ```