1:将数字变成中文: 如: 10变成 一十   1587 变成一千五百八十七2:两个大位数的数字如何进行加法运算,如:数A(80)位 和数B(70位) ,请用程序来写

解决方案 »

  1.   

    1
    /// <summary>
            /// 将四位阿拉伯数字转化成汉字大写数字,比如'1234' 转化成 '壹仟贰佰叁拾肆'
            /// </summary>
            /// <param name="num">阿拉伯数字</param>
            /// <returns>汉字大写字符</returns>
            private static string convertfournumber(string num)
            {
                int length = num.Length;
                //判断是否阿拉伯数字组成的字符串
                if (!JudgeNumber(num))
                    return "";
                //字符串长度超过4个,或者为空,都不处理。
                if (num.Length > 4 || num.Length < 1)
                    return "";
                //不足四位的前面补零
                if (num.Length < 4)
                {
                    num = "0000" + num;
                    num = num.Substring(num.Length - 4, 4);
                }
                //特殊情况
                if (num == "0000")
                    return "零";
                //临时变量
                string result = "";
                string temp = "";
                string temp1, temp2, temp3;
                //处理四位阿拉伯数字
                //保留各位字符
                temp = num.Substring(0, 1);
                temp1 = num.Substring(1, 1);
                temp2 = num.Substring(2, 1);
                temp3 = num.Substring(3, 1);
                //处理千位,为零不处理
                if (temp != "0")
                    result = convertnumtochs(temp) + "仟";
                //一起出来十位,百位
                if (temp1 != "0" && temp2 != "0")    //百位,十位都是非零数字
                    result = result + convertnumtochs(temp1) + "佰" + convertnumtochs(temp2) + "拾";
                else
                {
                    if (temp1 == "0" && temp2 == "0")   //百位,十位都为零,但是千位,个位都不为零
                    {
                        if (temp != "0" && temp3 != "0")
                        {
                            result = result + "零";//补个零
                        }
                        if (temp == "0" && temp3 != "0")
                        {
                            if (length == 4)
                            {
                                result = result + "零";
                            }
                        }                }
                    else
                    {
                        if (temp1 == "0") //百位为零,十位不为零,千位不为零
                        {
                            if (temp != "0")
                                result = result + "零" + convertnumtochs(temp2) + "拾"; //千位和十位间补零
                            else
                                result = result + convertnumtochs(temp2) + "拾"; //千位和十位间补零
                        }
                        else//百位不为零,十位为零
                        {
                            if (temp3 != "0")//个位不为零
                                result = result + convertnumtochs(temp1) + "佰" + "零"; //百位和个位间补零
                            else
                                result = result + convertnumtochs(temp1) + "佰"; //百位和个位间补零
                        }
                    }
                }
                //处理个位,为零不处理
                temp = num.Substring(3, 1);
                if (temp != "0")
                    result = result + convertnumtochs(temp);
                //返回值
                return result;        }
      

  2.   

    2
    using System;
    using System.Collections.Generic;
    using System.Text;namespace temp
    {
        class Program
        {
            static void Main(string[] args)
            {
                string a = BigAddition("2545123654125874589656584552565468","3214569874566985521455688758966522322145587");
                
            }        private static string BigAddition(string numberA, string numberB)
            {
                int groupTerm = 4;//默认4位
                List<string> jieguo = GetresultList(numberA, numberB, groupTerm);
                string ResultString = "";
                for (int i = 0; i < jieguo.Count; i++)
                {
                    ResultString += jieguo[jieguo.Count-1 - i];
                }
                return ResultString;
            }        private static List<string> GetresultList(string numberA, string numberB, int groupTerm)
            {
                string[] numberAlist = listisok(numberA, groupTerm);
                string[] numberBlist = listisok(numberB, groupTerm);
                List<string> jieguo = jisuan(numberAlist, numberBlist);
                List<string> zuihoujieguoji = new List<string>();
                for (int i = 0; i < jieguo.Count; i++)
                {
                    if (int.Parse(jieguo[i].ToString()) > groupTerm)
                    {
                        string fanzhunjieguo = Fanzhuan(jieguo[i].ToString());
                        string jieguo1;
                        string shengyujieguo = "0";
                        if (fanzhunjieguo.Length < groupTerm)
                        {
                            jieguo1 = Fanzhuan(fanzhunjieguo.Substring(0));
                        }
                        else
                        {
                            jieguo1 = Fanzhuan(fanzhunjieguo.Substring(0, groupTerm));
                            shengyujieguo = Fanzhuan(fanzhunjieguo.Substring(groupTerm));
                            if (shengyujieguo != null || shengyujieguo == "0")
                            {
                                jieguo[i + 1] = (int.Parse(jieguo[i + 1]) + int.Parse(shengyujieguo)).ToString();
                            }
                        }                    zuihoujieguoji.Add(jieguo1);
                    }
                }
                return zuihoujieguoji;
            } 
            //计算结果
            private static List<string> jisuan(string[] numberAlist, string[] numberBlist)
            {
                List<string> jieguo = new List<string>();
                if (numberAlist.Length > numberBlist.Length)
                {
                    for (int i = 0; i < numberAlist.Length; i++)
                    {
                        if (i > numberBlist.Length - 1)
                        {
                            jieguo.Add(numberAlist[i].ToString());
                        }
                        else
                        {
                            int temp = int.Parse(numberAlist[i].ToString()) + int.Parse(numberBlist[i].ToString());
                            jieguo.Add(temp.ToString());
                        }
                    }            }
                else
                {
                    for (int i = 0; i < numberBlist.Length; i++)
                    {
                        if (i > numberAlist.Length - 1)
                        {
                            jieguo.Add(numberBlist[i].ToString());
                        }
                        else
                        {
                            int temp = int.Parse(numberAlist[i].ToString()) + int.Parse(numberBlist[i].ToString());
                            jieguo.Add(temp.ToString());
                        }
                    }            }
                return jieguo;
            }        private static string[] listisok(string numberA, int groupTerm)
            {
                string[] numberAlist = getnewlist(numberA, groupTerm);
                int numberAgroup = group(numberA, groupTerm);
                for (int i = 0; i < numberAlist.Length; i++)
                {
                    numberAlist[i] = Fanzhuan(numberAlist[i].ToString());
                }
                return numberAlist;
            }        private static string[] getnewlist(string number, int groupTerm)
            {
                //根据条件分组
                int numberAgroup = group(number, groupTerm);//数字A分组个数
                string[] grouplist = new string[numberAgroup];
                //字符串反转
                string lingshistring = Fanzhuan(number);
                for (int i = 0; i < numberAgroup; i++)
                {
                    if (i < numberAgroup - 1)
                        grouplist[i] = (lingshistring.Substring(i * groupTerm, groupTerm));
                    else grouplist[i] = lingshistring.Substring(i * groupTerm);
                }
                return grouplist;
            }        private static string Fanzhuan(string number)
            {
                char[] fanzhuanzhunbei = number.ToCharArray();
                Array.Reverse(fanzhuanzhunbei);//反转
                string lingshistring = null;
                for (int i = 0; i < fanzhuanzhunbei.Length; i++)
                {
                    lingshistring += fanzhuanzhunbei[i];
                }
                return lingshistring;
            }        private static int group(string number, int groupTerm) //对数字分组判断
            {
                int numbergroup;
                if (number.Length % groupTerm == 0)
                {
                    numbergroup = number.Length / groupTerm;
                }
                else numbergroup = number.Length / groupTerm + 1;
                return numbergroup;
            }
        }
    }