关闭

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

153人阅读 评论(0) 收藏 举报
分类:

刚学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);

0
0

  相关文章推荐
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4342次
    • 积分:520
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:0篇
    • 译文:1篇
    • 评论:2条
    最新评论