关闭

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

263人阅读 评论(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
查看评论

输入一个整数n,判断这个数是否质数

简单的算法,简单的思路.但是中间被一个问题折磨了,那就是编译的时候必须用命令gcc main -lm否则不通过 ================= 判断一个整数n是否质数,首先判断n是否小于2,如果小于2,那么就不是质数.接着就是取n的平方根sn,用循环for(i=2;i1,所以...
  • Dualeak
  • Dualeak
  • 2009-10-16 22:32
  • 4622

C判断年份是否为闰年

1、编写一个布尔函数int is_leap_year(int year),判断参数year是不是闰年。如果某年份能被4整除,但不能被100整除,那么这一年就是闰年,此外,能被400整除的年份也是闰年。#include int is_leap_year(int);int main(){ int ...
  • striveman
  • striveman
  • 2010-04-09 18:19
  • 9355

输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。

/* 输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。  如输入:56439,输出:5位数             5,6,4,3,9             9,3,4,6,5 */  1#...
  • qq_33569093
  • qq_33569093
  • 2016-07-20 18:45
  • 1354

SQL 判断年份是否为润年

DROP FUNCTION [dbo].[fn_IsLeapYear] GO /****** Object: UserDefinedFunction [dbo].[fn_IsLeapYear] Script Date: 2016/2/25 13:22:50 ******/ SET ANSI...
  • keenweiwei
  • keenweiwei
  • 2016-02-25 13:29
  • 1294

判断一个正整数是不是质数

2.1判断一个正整数是不是质数? package second.suanfa.whp; import java.io.BufferedReader; import java.io.InputStreamReader; public class Isprime { /** * @王海平 ...
  • wanghaiping1993
  • wanghaiping1993
  • 2014-03-19 23:34
  • 908

java 判断输入的字符串是否为正整数

//test.javaimport java.io.*; class test {  public static void main(String[] args)  {   BufferedReader br = new BufferedReader(new ...
  • pfboy
  • pfboy
  • 2007-10-07 13:23
  • 6528

输入一个正整数,判断其是否为素数

素数的定义:素数(prime number)又称质数,有无限个。素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为素数。 问题:给出一个正整数(n>0),怎么判断是否为素数? 问题分析:先考虑特殊情况,如果n=1或者n=2,我们很容易根据定义得出1不是素数,2是素数。...
  • csdn123acm
  • csdn123acm
  • 2017-09-02 12:25
  • 669

c编程:判断10000以内的正整数哪些是回文数字。

如果有一个正整数从左、右来读都是一样的,则称为回文式数(简称回数);比如101,32123, 999都是回数。求10000以内的所有回数。 判断的思路就是,通过循环依次把m的个位,十位,百位...上的数取出来,与sum*10相加。这样得到的数sum就是m颠倒之后的数,如果两者相等,那就是回文数。 w...
  • u012110719
  • u012110719
  • 2014-11-17 09:31
  • 1582

用shell计算闰年

该脚本只是为了练习,应该还有考虑不周的地方  #!/bin/bash    #判断是否为闰年的脚本    if [ "$1" = "" ];then  #如果没有位置参数 ...
  • ANLJF
  • ANLJF
  • 2011-12-03 23:16
  • 1765

对5位以内的正整数处理(判断他是几位数、顺逆序输出)

输入一个五位以内的正整数 (1)判断它是一个几位数; (2)请按序输出其各位数字; (3)逆序输出其各位数字。  如输入:56439,  输出:5位数 5,6,4,3,9 void processingMethod() { //顺序 int a=0,tmp=0;...
  • qinhui13
  • qinhui13
  • 2013-10-17 12:50
  • 2451
    个人资料
    • 访问:10534次
    • 积分:598
    • 等级:
    • 排名:千里之外
    • 原创:50篇
    • 转载:0篇
    • 译文:1篇
    • 评论:2条
    最新评论