zoukankan      html  css  js  c++  java
  • 大数相加

    先将两串数字字符串逆序,然后按位计算求和,注意进位问题,最后把计算结果字符串逆序!

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 
     5 //字符串翻转
     6 void reverse(char *str)
     7 {
     8     char tmp;
     9     char *p0= str ,*p = str;
    10     while(*p != '')
    11         p++;
    12     p--;
    13     while(p0 < p)
    14     {
    15         tmp = *p0;
    16         *p0 = *p;
    17         *p = tmp;
    18         p0++, p--;
    19     }
    20 }
    21 
    22 
    23 char *Add_Num(char *a, char *b)
    24 {
    25     int len0 = strlen(a);
    26     int len1 = strlen(b);
    27     int m, n, in = 0; 
    28     int max = len0 > len1 ? len0 : len1; 
    29     char *c = (char *)malloc(sizeof(char)*(max+2));
    30     int i = 0, j = 0;
    31     memset(c, 0, max+2);//清空数组C
    32     reverse(a);//翻转数组
    33     reverse(b);
    34     
    35     for(i = 0; i < max ;i++)
    36     {
    37         if(*(a+i) != '' && i < len0)
    38             m = a[i] - '0';
    39         else
    40             m = 0;
    41         if(*(b+i) != '' && i < len1)
    42             n = b[i] - '0';
    43         else
    44             n = 0;
    45 
    46         c[j++] = (m + n + in) % 10 + '0';
    47         in  = (m + n + in) / 10;
    48     }
    49     if(in)
    50         c[j] = in + '0';
    51     
    52     reverse(c);
    53     return c;
    54 }
    55 int main()
    56 {
    57     char a[] = "333333333333333333333333333333333";
    58     char b[] = "1133333333333333333333333333333333";
    59     int i;
    60     char *c = Add_Num(a, b);
    61     printf("%s
    ", c);
    62 
    63     return 0;
    64 }
  • 相关阅读:
    解决CHM文件不能浏览的问题
    SAS宏功能(下)
    python一句话求素数
    SAS与DBMS系统(SqlServer)通信
    CSS3圆角
    水平居中和垂直居中
    滚动条的控制
    快来给你的桌面加一只可爱的蟑螂吧 那个人
    自己用的PHP缓存类
    jquery 全反选
  • 原文地址:https://www.cnblogs.com/xuyh/p/3261041.html
Copyright © 2011-2022 走看看