• 算法笔记-----大整数相乘---数组实现


     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 }
  • 相关阅读:
    第四章
    第二章
    第三章
    第一章
    第十章心得
    第九章心得
    第八章心得
    第七章心得
    第六章心得
    第五章心得
  • 原文地址:https://www.cnblogs.com/alimjan/p/8079413.html
Copyright © 2020-2023  润新知