using System;using System.Collections.Generic;using System.Text;namespace LeoWong.Test.com...{ class Program ...{ private static bool haveUnit = true; private static string[] parst; static void Main(string[] args) ...{ ToCNUpper(Console.ReadLine()); Console.ReadLine(); } public static void ToCNUpper(string num) ...{ string[] upper = new string[] ...{ "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; string[] unit = new string[] ...{ "拾", "佰", "仟", "万", "亿"}; while (num.StartsWith("0")) ...{ num = num.Substring(1); if (num.Equals("")) ...{ Console.WriteLine("The number can't be all zero, please input the number again..."); num = Console.ReadLine(); } } string parstedNum = unitParst(num); parst = parstedNum.Split(','); int length = parst.Length; if (length == 1) ...{ unitOutPut(num, upper, unit); } else ...{ for (int i = 0; i < length; i++) ...{ unitOutPut(parst[i], upper, unit); if(length-i> 1 && haveUnit) Console.Write(unit[length - i + 1]); } } } public static string unitParst(string num) ...{ int length = num.Length; if (length > 4) ...{ int insertNum = length / 4; int startPos = length % 4; if (startPos == 0) ...{ insertNum -= 1; startPos = 4; } for (int i = 0; i < insertNum; i++) ...{ num = num.Insert(startPos+i*5, ","); } } return num; } public static void unitOutPut(string num, string[] upper, string[] unit) ...{ char[] chars = num.ToCharArray(); bool noZeroFlag = true; bool oneZeroFlag = false; bool twoZeroFlag = false; bool threeZeroFlag = false; bool allZeroFlag = false; if (num.ToString().Replace("0", " ").Trim().Equals("")) ...{ noZeroFlag = false; oneZeroFlag = false; twoZeroFlag = false; threeZeroFlag = false; allZeroFlag = true; } if (chars.Length == 4) ...{ if (chars[3] == '0' && chars[2] == '0' && chars[1] == '0' && !allZeroFlag) ...{ noZeroFlag = false; oneZeroFlag = false; twoZeroFlag = false; threeZeroFlag = true; } if (chars[3] == '0' && chars[2] == '0' && !threeZeroFlag && !allZeroFlag) ...{ noZeroFlag = false; oneZeroFlag = false; twoZeroFlag = true; threeZeroFlag = false; } if (chars[3] == '0'&& !twoZeroFlag && !threeZeroFlag && !allZeroFlag) ...{ noZeroFlag = false; oneZeroFlag = true; twoZeroFlag = false; threeZeroFlag = false; } if (threeZeroFlag) ...{ Console.Write("{0}{1}", upper[Convert.ToInt32(chars[0].ToString())], unit[2]); } if (twoZeroFlag) ...{ if (chars[0] == '0') ...{ Console.Write("{0}{1}{2}", upper[Convert.ToInt32(chars[0].ToString())], upper[Convert.ToInt32(chars[1].ToString())], unit[1]); } else ...{ Console.Write("{0}{1}{2}{3}", upper[Convert.ToInt32(chars[0].ToString())], unit[2], upper[Convert.ToInt32(chars[1].ToString())], unit[1]); } } if (oneZeroFlag) ...{ if (chars[0] == '0' && chars[1] == '0') ...{ Console.Write("{0}{1}{2}", upper[Convert.ToInt32(chars[0].ToString())], upper[Convert.ToInt32(chars[2].ToString())], unit[0]); } else if (chars[0] != '0' && chars[1] == '0') ...{ Console.Write("{0}{1}{2}{3}{4}", upper[Convert.ToInt32(chars[0].ToString())], unit[2], upper[Convert.ToInt32(chars[1].ToString())], upper[Convert.ToInt32(chars[2].ToString())], unit[0]); } else ...{ Console.Write("{0}{1}{2}{3}{4}{5}", upper[Convert.ToInt32(chars[0].ToString())], unit[2], upper[Convert.ToInt32(chars[1].ToString())], unit[1], upper[Convert.ToInt32(chars[2].ToString())], unit[0]); } } if (noZeroFlag) ...{ if (nextTo(num, "0", 0) && nextTo(num,"0",1)) ...{ if (parst.Length > 1) ...{ Console.Write(upper[0]); } Console.Write("{0}", upper[Convert.ToInt32(chars[3].ToString())]); } else if (nextTo(num, "0", 0) && !nextTo(num,"0",1)) ...{ Console.Write("{0}{1}{2}", upper[Convert.ToInt32(chars[2].ToString())], unit[0], upper[Convert.ToInt32(chars[3].ToString())]); } else if (!nextTo(num, "0", 0) && nextTo(num, "0", 1)) ...{ Console.Write("{0}{1}{2}{3}", upper[Convert.ToInt32(chars[0].ToString())], unit[2], upper[0], upper[Convert.ToInt32(chars[3].ToString())]); } else ...{ if (chars[1] == '0') ...{ Console.Write("{0}{1}{2}{3}{4}{5}", upper[Convert.ToInt32(chars[0].ToString())], unit[2], upper[Convert.ToInt32(chars[1].ToString())], upper[Convert.ToInt32(chars[2].ToString())], unit[0], upper[Convert.ToInt32(chars[3].ToString())]); } else if (chars[2] == '0') ...{ Console.Write("{0}{1}{2}{3}{4}{5}", upper[Convert.ToInt32(chars[0].ToString())], unit[2], upper[Convert.ToInt32(chars[1].ToString())], unit[1], upper[Convert.ToInt32(chars[2].ToString())], upper[Convert.ToInt32(chars[3].ToString())]); } else ...{ Console.Write("{0}{1}{2}{3}{4}{5}{6}", upper[Convert.ToInt32(chars[0].ToString())], unit[2], upper[Convert.ToInt32(chars[1].ToString())], unit[1], upper[Convert.ToInt32(chars[2].ToString())], unit[0], upper[Convert.ToInt32(chars[3].ToString())]); } } } if (allZeroFlag) ...{ if (parst.Length > 2) haveUnit = false; } } else if (chars.Length == 3) ...{ if (chars[2] == '0' && chars[1] == '0' && !allZeroFlag) ...{ noZeroFlag = false; oneZeroFlag = false; twoZeroFlag = true; threeZeroFlag = false; } if (chars[2] == '0' && !twoZeroFlag && !allZeroFlag) ...{ noZeroFlag = false; oneZeroFlag = true; twoZeroFlag = false; threeZeroFlag = false; } if (twoZeroFlag) ...{ Console.Write("{0}{1}", upper[Convert.ToInt32(chars[0].ToString())], unit[1]); } if (oneZeroFlag) ...{ Console.Write("{0}{1}{2}{3}", upper[Convert.ToInt32(chars[0].ToString())], unit[1], upper[Convert.ToInt32(chars[1].ToString())], unit[0]); } if (noZeroFlag) ...{ if (chars[1] == '0') ...{ Console.Write("{0}{1}{2}{3}", upper[Convert.ToInt32(chars[0].ToString())], unit[1], upper[Convert.ToInt32(chars[1].ToString())], upper[Convert.ToInt32(chars[2].ToString())]); } else ...{ Console.Write("{0}{1}{2}{3}{4}", upper[Convert.ToInt32(chars[0].ToString())], unit[1], upper[Convert.ToInt32(chars[1].ToString())], unit[0], upper[Convert.ToInt32(chars[2].ToString())]); } } if (allZeroFlag) ...{ // } } else if (chars.Length == 2) ...{ if (chars[1] == '0' && !allZeroFlag) ...{ noZeroFlag = false; oneZeroFlag = true; twoZeroFlag = false; threeZeroFlag = false; } if (oneZeroFlag) ...{ Console.Write("{0}{1}",upper[Convert.ToInt32(chars[0].ToString())], unit[0]); } if (noZeroFlag) ...{ Console.Write("{0}{1}{2}", upper[Convert.ToInt32(chars[0].ToString())], unit[0], upper[Convert.ToInt32(chars[1].ToString())]); } if (allZeroFlag) ...{ // } } else if (chars.Length == 1) ...{ if (noZeroFlag) ...{ Console.Write("{0}", upper[Convert.ToInt32(chars[0].ToString())]); } if (allZeroFlag) ...{ // } } } public static bool nextTo(string num, string index, int pos) ...{ bool flag = false; if (num[pos].ToString() == index && num[pos + 1].ToString() == index) flag = true; else flag = false; return flag; } }}