You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C#控制台程序:从数字最高位开始判断奇偶的问题求助

C#控制台程序:从数字最高位开始判断奇偶的问题求助

你好呀!刚接触编程两周就能自己动手写代码已经很棒了~ 咱们先看看你当前代码的问题:你现在是把数字反转过来,并且每取一位原数字的最低位就立刻输出判断结果,所以顺序完全反过来了(比如输入5228,你先处理的是最后一位8,然后是2、2、5,输出顺序自然就反了)。

给你两个简单的解决方案,新手友好度拉满:

方案一:直接处理输入字符串(最推荐,逻辑最简单)

既然你已经拿到了输入的字符串,其实完全不需要转成整数再处理!因为字符串本身就是按数字的顺序(最高位在前)存储的,直接遍历每个字符就行:

using System;

public class TestVariablesandExpressions
{
    static void Main(string[] args)
    {
        string inputData = Console.ReadLine();
        
        // 从左到右遍历字符串的每一个字符,正好对应数字的最高位到最低位
        foreach (char c in inputData)
        {
            // 将字符转成对应的数字:字符'0'的ASCII码是48,用当前字符减去'0'就能得到数字值
            int digit = c - '0';
            Console.WriteLine(digit % 2 == 0 ? "EVEN" : "ODD");
        }
    }
}

这个方法的好处是逻辑直观,不需要复杂的数字运算,特别适合刚入门的你,而且完全不会出错~

方案二:用数学方法从最高位开始取数(适合练习数字操作)

如果你想练习整数的运算操作,也可以先找到数字的最高位权值,再依次取出每一位判断:

using System;

public class TestVariablesandExpressions
{
    static void Main(string[] args)
    {
        string inputData = Console.ReadLine();
        int num = Convert.ToInt32(inputData);
        
        // 先算出最高位的除数,比如5228的除数是1000
        int divisor = 1;
        int tempNum = num;
        while (tempNum >= 10)
        {
            tempNum /= 10;
            divisor *= 10;
        }
        
        // 从最高位开始依次处理每一位
        while (divisor > 0)
        {
            int currentDigit = num / divisor;
            Console.WriteLine(currentDigit % 2 == 0 ? "EVEN" : "ODD");
            
            num %= divisor; // 去掉已经处理过的最高位
            divisor /= 10; // 除数缩小10倍,处理下一位
        }
    }
}

这个方法的思路是先找到能取出最高位的除数,然后一步步缩小除数,依次处理每一位数字,也能实现从最高位开始判断的需求。

你可以先试试方案一,代码少又容易理解,完全能解决你的问题~

备注:内容来源于stack exchange,提问作者Bunker

火山引擎 最新活动