1 // 2 // Created by alim on 2017/12/18. 3 // 4 5 #include "dazs.h" 6 #include<stdio.h> 7 #include<stdlib.h> 8 #include<string.h> 9 #define NUM_LEN 50//数字的最大长度 10 11 int main() 12 { 13 int i, n, temp = 0, p, k; 14 15 char num1[NUM_LEN], num2[NUM_LEN]; 16 puts("Please input the first number:"); 17 gets(num1); 18 puts(" Please input the second number:"); 19 gets(num2); 20 int len1 = strlen(num1); 21 int len2 = strlen(num2); 22 int *arr1 = (int *)malloc(sizeof(int) * len1); 23 int *arr2 = (int *)malloc(sizeof(int) * len2); 24 25 for(i = 0; i < len1; i++) 26 { 27 arr1[i] = (int)num1[i] - 48; //把字符转换成对应的整数 28 } 29 for(i = 0; i < len2; i++) 30 { 31 arr2[i] = (int)num2[i] - 48; 32 } 33 34 int *result = (int *)malloc(sizeof(int) * (len1 + len2)); 35 n = len1 + len2 - 1; 36 for(i = 0; i <= n; i++) 37 { 38 result[i] = 0; //初始化结果数组 39 } 40 41 for(i = len1 - 1; i >= 0; i--) 42 { 43 p = arr1[i]; 44 for(k = len2 - 1; k >= 0; k--) 45 { 46 temp = result[n] + p * arr2[k]; 47 if(temp >= 10) //如果temp>=10,则应该进位 48 { 49 result[n] = temp%10; //取个位 50 result[n - 1] += temp/10; //向前进位 51 } 52 else 53 { 54 result[n] = temp; 55 } 56 n--; 57 } 58 n = n + len2 - 1; //回退 len2 - 1 位 59 } 60 61 //输出计算结果 62 puts(" The calulation results is:"); 63 if(result[0] != 0) 64 { 65 printf("%d",result[0]); 66 } 67 for(i = 1; i <= len1 +len2 -1; i++) 68 { 69 printf("%d", result[i]); 70 } 71 printf(" "); 72 return 0; 73 }