首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

利用异或来判断输入数值的奇偶性,该如何解决

2012-06-18 
利用异或来判断输入数值的奇偶性C# code /// summary/// 利用异或来判断奇偶性/// 先把十进制转换为二进

利用异或来判断输入数值的奇偶性

C# code
 /// <summary>    /// 利用异或来判断奇偶性    /// 先把十进制转换为二进制后再利用二进制位逐个异或来判断结果奇偶性    /// h:当h为0时,flag为true则为奇数,反之亦然    /// </summary>    class Program    {        static void Main(string[] args)        {             int a,h;             bool flag=false;            string b;            char[] c = { };            while (true)            {                h = 0;                Console.WriteLine("请输入一个十进制数:");                try                {                    a = Convert.ToInt32(Console.ReadLine());                }                catch                {                    Console.WriteLine("输入不正确,正常退出!");                    break;                }                b = Convert.ToString(a, 2);                c = b.ToCharArray();                    for (int k = 0; k < c.Length - 1; k++)                {                    h ^= c[k] ^ c[k + 1];                    if (h == 0)                    {                        flag = false;                    }                    else                    {                        flag = true;                    }                }                if (flag)                {                    Console.WriteLine("偶数\n");                }                else                {                    Console.WriteLine("奇数\n");                }            }            Console.ReadKey();        }    }

感觉太长了,有没有更优化的写法

[解决办法]
C# code
b = Convert.ToString(a, 2);c = b.ToCharArray();for (int k = 0; k < c.Length - 1; k++){    h ^= c[k] ^ c[k + 1];}if (h != 0){    Console.WriteLine("偶数\n");}else{    Console.WriteLine("奇数\n");}
[解决办法]
while (true)
{
string s = Console.ReadLine();
int x = 0;
if (!int.TryParse(s, out x))
continue;
Console.WriteLine((x ^ (x + 1)) == 1 ? "偶数" : "奇数");
}

热点排行