【问题标题】:How to display for each digit, starting with the most significant, whether it is odd or even如何显示每个数字,从最重要的开始,无论是奇数还是偶数
【发布时间】:2023-01-20 22:54:28
【问题描述】:

我对 C# 或整体编码有 2 周的新知识,我正在尝试弄清楚以下内容: 编写一个显示每个数字的控制台应用程序,从最重要的开始,无论是奇数还是偶数。 对于输入数据:

5228

控制台将显示:

ODD
EVEN
EVEN
EVEN

运行我的代码时,我得到:

EVEN
EVEN
EVEN
ODD

你能帮我从最高位开始吗?

谢谢!

using System;
public class TestVariablesandExpressions
{

    static void Main(string[] args)
    {
        string inputData = Console.ReadLine();
        int num = Convert.ToInt32(inputData);
        int reverse = 0;

        while (num > 0)
        {
            reverse = reverse * 10 + num % 10;
            num /= 10;

      

            if (reverse % 2 == 0)
            {
                Console.WriteLine("EVEN");
            }
            else
            {
                Console.WriteLine("ODD");
            }
        }      
    }
}

【问题讨论】:

  • 模 10 返回最后的数字,不是第一个。您的代码正在检查末尾的数字
  • 您用于反转数字的代码会导致 reverse 的以下值:8, 82, 822, 8225。显然这是错误的。

标签: c#


【解决方案1】:

最简单的方法是将该数字保留为字符串,循环每个字符并将字符转换为整数以查看它是否为奇数

【讨论】:

    【解决方案2】:

    抱歉,您目前无法解决任务撤销实施:反例num0结尾时:

    num == 12000 => (reverse) => 00012 == 12 => "ODD EVEN"
    

    但是你可以保存使用 string 而不是 int 的尾随零:

    int num = ...
    
    string text = num.ToString(); 
    
    for (int i = 0; i < text.Length; ++i)
      if ((text[i] - '0') % 2 == 0) // Note, that text[i] is char, not int
        Console.WriteLine("EVEN");
      else
        Console.WriteLine("ODD");
    

    【讨论】:

    • 从技术上讲,您可以省略 - '0' 部分,因为碰巧每个数字的 UTF8 代码是偶数,如果数字是奇数,则为奇数。
    猜你喜欢
    • 2013-12-09
    • 2015-05-31
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2014-07-26
    • 1970-01-01
    相关资源
    最近更新 更多