zoukankan      html  css  js  c++  java
  • 一维数组进行多位数算数运算-加减乘

    现实中,进行数值很大的数据(超过默认数据类型范围)运算时,可以用数组来完成。

    例1:利用一维数组完成三位数加法(N位数加法类似;非最简解法,后同)

     1 int[] a = {0,9,2,3}, b = {0,7,0,9}, c = new int[4];
     2             int jinwei = 0,t;
     3             for (int i = a.Length-1; i >=1; i--)
     4             {
     5                 t = a[i] + b[i];
     6                 c[i] = t % 10+jinwei;
     7                 jinwei = t / 10;
     8             }
     9             c[0] = jinwei;
    10             for (int i = 0; i < a.Length; i++)
    11             {
    12                 Console.Write(a[i]);
    13             }
    14             Console.Write("+");
    15             for (int i = 0; i < b.Length; i++)
    16             {
    17                 Console.Write(b[i]);
    18             }
    19             Console.Write("=");
    20             for (int i = 0; i < c.Length; i++)
    21             {
    22                 Console.Write(c[i]);
    23             }
    24             Console.ReadKey();

    运行结果:

      

     三位数减法:

     1 int[] a = { 4, 5, 6 }, b = { 1, 4, 7 }, c= new int[3];
     2             int jw=0,t;
     3             for (int i = a.Length-1; i >=0; i--)
     4             {
     5                 t = a[i] - jw - b[i];
     6                 if (t<0)
     7                 {
     8                     t += 10;
     9                     jw = 1;
    10                 }
    11                 else
    12                 {
    13                     jw = 0;
    14                 }
    15                 c[i] = t;
    16             }
    17             for (int i = 0; i < c.Length; i++)
    18             {
    19                 Console.Write(c[i]);
    20             }
    21             Console.ReadKey();

    结果:

     

    例2:三位数乘法

     1 int[] a = { 9, 2, 3 }, b = { 7, 0, 9 }, c = new int[4], d = { 0, 0, 0, 0, 0, 0 };
     2             int jinwei, t;
     3             for (int i = 0; i < b.Length; i++)
     4             {
     5                 jinwei = 0;
     6                 for (int j = 0; j < c.Length; j++)
     7                 {
     8                     c[j] = 0;
     9                 }
    10                 for (int j = 0; j < a.Length; j++)
    11                 {
    12                     t = a[a.Length - 1 - j] * b[b.Length - 1 - i];
    13                     c[c.Length - 1 - j] += t % 10;
    14                     jinwei = t / 10 + c[c.Length - 1 - j]/10;
    15                     c[c.Length - 1 - j] %= 10;
    16                     if (jinwei > 0)
    17                     {
    18                         c[c.Length - 1 - j-1] +=jinwei;
    19                     }
    20                 }
    21                 //测试中间累加的数字
    22                 //for (int j = 0; j < c.Length; j++)
    23                 //{
    24                 //    Console.Write(c[j]);
    25                 //}
    26                 //Console.WriteLine();
    27                 //测试结束
    28                 jinwei = 0;
    29                 for (int j = 0; j < c.Length; j++)
    30                 {
    31                     t = d[d.Length - 1 - i - j] + c[c.Length - 1 - j];
    32                     d[d.Length - 1 - i - j] = t % 10;
    33                     jinwei = t / 10;
    34                     jinwei += d[d.Length - 1 - i - j] / 10;
    35                     d[d.Length - 1 - i - j] %= 10;
    36                     if (jinwei > 0)
    37                     {
    38                         d[d.Length - 1 - i - j - 1] += jinwei;
    39                     }
    40                 }
    41             }
    42             for (int i = 0; i < a.Length; i++)
    43             {
    44                 Console.Write(a[i]);
    45             }
    46             Console.Write("*");
    47             for (int i = 0; i < b.Length; i++)
    48             {
    49                 Console.Write(b[i]);
    50             }
    51             Console.Write("=");
    52             for (int i = 0; i < d.Length; i++)
    53             {
    54                 Console.Write(d[i]);
    55             }
    56             Console.ReadKey();

     运行结果:

     利用二位数组完成,会简单一些:

     1 int[] a = { 9, 4, 7 }, b = { 3, 6, 9 };
     2             //M位数和N位数相乘,最多有M+N位数,N位中间结果
     3             int[,] c = new int[b.Length + 1, a.Length + b.Length];
     4             //初始化
     5             for (int i = 0; i < c.GetLength(0); i++)
     6             {
     7                 for (int j = 0; j < c.GetLength(1); j++)
     8                 {
     9                     c[i, j] = 0;
    10                 }
    11             }
    12             //分位乘
    13             for (int i = b.Length - 1; i >= 0; i--)
    14             {
    15                 for (int j = a.Length - 1; j >= 0; j--)
    16                 {
    17                     c[i, c.GetLength(1) - 1 - (b.Length - 1 - i) - (a.Length - 1 - j)] = a[j] * b[i];
    18                 }
    19             }
    20             //中间结果累加
    21             for (int i = 0; i <= c.GetLength(0) - 2; i++)
    22             {
    23                 for (int j = c.GetLength(1) - 1; j >= 0; j--)
    24                 {
    25                     c[c.GetLength(0) - 1, j] += c[i, j];
    26                 }
    27             }
    28             //对累加结果的进位部分进行处理
    29             for (int i = c.GetLength(1) - 1; i >= 0; i--)
    30             {
    31                 if (c[c.GetLength(0) - 1, i] >= 10)
    32                 {
    33                     c[c.GetLength(0) - 1, i - 1] += c[c.GetLength(0) - 1, i] / 10;
    34                     c[c.GetLength(0) - 1, i] %= 10;
    35                 }
    36             }
    37             //输出结果
    38             for (int i = 0; i < c.GetLength(1); i++)
    39             {
    40                 Console.Write(c[c.GetLength(0) - 1, i]);
    41             }
    42             Console.ReadKey();

    运行结果:

  • 相关阅读:
    enum
    爬虫实战2:爬头条网美图--Ajax图片加载处理
    爬虫实战1:使用requests和正则爬取电影信息
    爬虫7:selenium
    爬虫6:pyquery库
    爬虫5:beautifulsoup
    爬虫4:re库
    爬虫3:requests库
    爬虫2:urllib
    爬虫1:概述
  • 原文地址:https://www.cnblogs.com/wanjinliu/p/12009670.html
Copyright © 2011-2022 走看看