判断是否为润年&&键盘输入一个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);
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);
相关文章推荐
- Android 屏幕适配方案
- CSS3实现多重边框的方法总结
- OS开发网络篇—数据缓存
- Java标识符命名规范
- android Settings 分析
- Oracle drop 或者误删表数据恢复的两种实用方法
- python的Button的小程序
- leetcode第一题
- Java的桥接模式
- JS定时器使用,定时定点,固定时刻,循环执行详解
- 上线的时候,没有那么多机型,但是要截图那么多
- ARM Linux 3.x的设备树(Device Tree)(转)
- Lua点号和冒号区别
- Codefroces 675 B. Restoring Painting(数学推公式)
- 二叉树的基础知识
- http://hi.baidu.com/megachan/blog/item/61e1bb6cb7ab2de64316941b.html
- 第十三周完成情况
- BootStrap创建响应式导航条实例代码
- buildship,eclipseIDE的gradle插件
- android webrtc 视频旋转