白开心

  IT博客 :: 首页 ::  :: 联系 :: 聚合  :: 管理 ::
  9 随笔 :: 76 文章 :: 28 评论 :: 0 Trackbacks

 

  /// <summary>
  
/// 得到两个数字字符串的和
  
/// </summary>
  
/// <param name="num1">数字字符串一</param>
  
/// <param name="num2">数字字符串二</param>
  
/// <returns></returns>

  private string ZergAdd(string num1,string num2)
  
{
   
string newStr = "";;
   
int addTimes = 0;
   
int a,b;
   
if(num1.Length > num2.Length)
    addTimes 
= num2.Length;
   
else
    addTimes 
= num1.Length;

   
int upNum = 0;

   
//先进行两个数都有数字情况下的相加
   for(int i=0;i<addTimes;i++)
   
{
    a 
= Convert.ToInt16(num1.Substring(num1.Length-1-i,1));
    b 
= Convert.ToInt16(num2.Substring(num2.Length-1-i,1));
    newStr 
= Convert.ToString((a + b + upNum) % 10+ newStr;

    upNum 
=( a + b + upNum ) / 10 ;   //求进位由三部分组成
   }


   
//上面加完后,继续把较长字符的数字加入新的字符串中
   if(num1.Length > addTimes)
   
{
    
for(int i=addTimes;i<num1.Length;i++)
    
{
     a 
= Convert.ToInt16(num1.Substring(num1.Length-1-i,1)) + upNum;
     newStr 
= Convert.ToString(a % 10+ newStr;
     upNum 
= a / 10;
    }

   }

   
else
   
{
    
for(int i=addTimes;i<num2.Length;i++)
    
{
     a 
= Convert.ToInt16(num2.Substring(num2.Length-1-i,1)) + upNum;
     newStr 
= Convert.ToString(a % 10+ newStr;
     upNum 
= a / 10;
    }

   }


   
//如果 upNum 还不为 0 则加上 upNum
   if(upNum != 0)
    newStr 
= upNum.ToString() + newStr;

   
return newStr;
  }


  
/// <summary>
  
/// 返回两个字符串数字的乘积
  
/// </summary>
  
/// <param name="num1">数字字符串一</param>
  
/// <param name="num2">数字字符串二</param>
  
/// <returns></returns>

  private string ZergRide(string num1,string num2)
  
{
   
string newStr = "";
   
string str = "";
   
for(int i = 0;i<num1.Length;i++)
   
{
    str 
= ZergSingleRideNum(Convert.ToInt16(num1.Substring(num1.Length-1-i,1)),num2);  //得到 num1 每个数字与 num2的乘积
    for(int j = 0;j<i;j++)
    
{
     str 
+= "0";   // 反应位数
    }


    newStr 
= ZergAdd(newStr,str);
   }

   
return newStr;
  }


  
/// <summary>
  
/// 返回一个一位数和一个数字字符串的乘积
  
/// </summary>
  
/// <param name="a">一位数的数字</param>
  
/// <param name="num">数字字符串</param>
  
/// <returns></returns>

  private string ZergSingleRideNum(int a,string num)
  
{
   
string newStr = "";
   
int upNum = 0;
   
int b = 0;

   
if(a == 0)
    
return "0";

   
for(int i=0;i<num.Length;i++)
   
{
    b 
= Convert.ToInt16(num.Substring(num.Length-i-1,1)) * a + upNum;
    newStr 
= Convert.ToString(b % 10+ newStr;
    upNum 
= b / 10;
   }


   
if(upNum != 0)
    newStr 
= upNum.ToString() + newStr;

   
return newStr;
  }


posted on 2006-11-03 16:26 白开心 阅读(1580) 评论(0)  编辑 收藏 引用 所属分类: .Net(学习ing...)
只有注册用户登录后才能发表评论。