您的位置:首页 > 其它

判断是否为润年&&键盘输入一个10000以内的大于零的正整数,输出相应中文标识

2016-05-31 11:17 666 查看
刚学C#,写了一堆傻瓜代码,希望可以抛砖引玉,有大神帮我将第二个功能代码改的简单些,谢谢


using System;

//using System.Collections.Generic;

//using System.Linq;

//using System.Text;

//using System.Threading.Tasks;

namespace h1

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("1.判断是否为润年\n2.键盘输入一个10000以内的大于零的正整数,输出相应中文标识\n请输入相应的数字:");

            string w = Console.ReadLine();

            int choice = int.Parse(w);

            //判断是否为润年

            if (choice == 1)

            {

                Console.WriteLine("请输入年份:");

                string x = Console.ReadLine();

                int year = int.Parse(x);

                if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))

                {

                    Console.WriteLine("{0}是润年", year);

                }

                else

                {

                    Console.WriteLine("{0}不是润年", year);

                }

            }

            //键盘输入一个10000以内的大于零的正整数,输出相应中文标识

            else if (choice == 2)

            {

                Console.WriteLine("请输入一个10000以内的大于零的正整数:");

                string y = Console.ReadLine();

                int num = int.Parse(y);

                if (num > 0 && num < 10)

                {

                    Console.WriteLine(Enum.GetName(typeof(number), num));

                }//判断一位数

                else if (num >= 10 && num < 100)

                {

                    int m = num / 10;

                    int n = num % 10;

                    if (n != 0)

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), m) + "十" + Enum.GetName(typeof(number), n));

                    }

                    else

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), m) + "十");

                    }

                }//判断两位数

                else if (num >= 100 && num < 1000)

                {

                    int a = num / 100; //百位

                    int n = num % 100;

                    int b = n / 10;//十位

                    int c = n % 10;//个位

                    if (c != 0 && b != 0)

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), a) + "百" + Enum.GetName(typeof(number), b) + "十" + Enum.GetName(typeof(number), c));

                    }

                    else if (c != 0 && b == 0)

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), a) + "百零" + Enum.GetName(typeof(number), c));

                    }

                    else if (c == 0 && b != 0)

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), a) + "百" + Enum.GetName(typeof(number), b) + "十");

                    }

                    else

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), a) + "百");

                    }

                }//判断三位数

                else if (num >= 1000 && num < 10000)

                {

                    int a = num / 1000; //千位

                    int m = num % 1000;

                    int b = m / 100;//百位

                    int n = m % 100;

                    int c = n / 10;//十位

                    int d = n % 10;//个位

                    if (c != 0 && b != 0 && d != 0)

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), a) + "千" + Enum.GetName(typeof(number), b) + "百" + Enum.GetName(typeof(number), c) + "十" + Enum.GetName(typeof(number), d));

                    }

                    else if (b != 0 && c != 0 && d == 0)

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), a) + "千" + Enum.GetName(typeof(number), b) + "百" + Enum.GetName(typeof(number), c) + "十");

                    }

                    else if (b != 0 && c == 0 && d != 0)

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), a) + "千" + Enum.GetName(typeof(number), b) + "百零" + Enum.GetName(typeof(number), d));

                    }

                    else if (b == 0 && c != 0 && d != 0)

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), a) + "千零" + Enum.GetName(typeof(number), c) + "十" + Enum.GetName(typeof(number), d));

                    }

                    else if (b == 0 && c == 0 && d != 0)

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), a) + "千零" + Enum.GetName(typeof(number), d));

                    }

                    else if (b == 0 && c != 0 && d == 0)

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), a) + "千零" + Enum.GetName(typeof(number), c) + "十");

                    }

                    else if (b != 0 && c == 0 && d == 0)

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), a) + "千" + Enum.GetName(typeof(number), b) + "百");

                    }

                    else

                    {

                        Console.WriteLine(Enum.GetName(typeof(number), a) + "千");

                    }

                }//判断四位数

                else

                {

                    Console.WriteLine("输入数值不在范围内");

                }

            }

            else {

                Console.WriteLine("输入正确的选项");

            }

            Console.ReadKey();

        }

        enum number {

            零 = 0,

            一 = 1,

            二 = 2,

            三 = 3,

            四 = 4,

            五 = 5,

            六 = 6,

            七 = 7,

            八 = 8,

            九 = 9

        }

    }
}

后来老师教给我们简单的方法了,写粗来分享一下O(∩_∩)O~

//键盘输入需要转换的数字

            string str = Console.ReadLine();

            int i = int.Parse(str);

            string st = "";

            //声明使用的变量和除数,这里最大为5位正整数,所以除数从10000开始

            int temp, data = 10000;

            //数字会在转换为中文后,自减为零,表示转换完毕

            while (i > 0)

            {

                //除数取整,会获得一个整数,比如 
234/100=2

                temp = i / data;

                //结果不为零,需要转为相应的中文

                if (temp > 0)

                {

                    st += Enum.GetName(typeof(Number), temp);

                    //根据除数加上合适的单位

                    switch (data)

                    {

                        case 10000:

                            st += "万";

                            break;

                        case 1000:

                            st += "千";

                            break;

                        case 100:

                            st += "百";

                            break;

                        case 10:

                            st += "十";

                            break;

                    }

                }

                    //结果为零也是需要转为相应的中文

                else

                {

                    //如果首位结果不为零,才需要添加

                    if (st.Length > 0)

                    {

                        st += Enum.GetName(typeof(Number), temp);

                    }

                }

                //输入的数字减去已经转换的部分

                i -= temp * data;

                //除数自除10,计算下一级

                data /= 10;

            }

            //可能出现的连续3个零置换,比如10009,需要读为一万零九而不是一万零零零九

            st = st.Replace("零零零",
"零");

            //可能出现的连续3个零置换,比如1009,需要读为一千零九而不是一千零零九

            st = st.Replace("零零",
"零");

            //输出转换结果

            Console.WriteLine(st);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: