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;
}
}
}
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;
}
}
}