【问题标题】:How do I convert a 4 digit number into individual digits?如何将 4 位数字转换为单个数字?
【发布时间】:2015-02-01 04:33:01
【问题描述】:

我需要编写逻辑来将一个 4 位数字分解为单个数字。

在 SO 对一个关于 3 位数字的问题的回复中,有人给出了以下数学:

int first = 321/100;             
int second = (321/10)-first*10;
int third = (321/1)-first*100-second*10;

有人可以帮我吗?

提前谢谢你!

【问题讨论】:

  • 这是一种方法。您还可以使用模数/余数。你有问题吗?

标签: basic


【解决方案1】:

嗯,使用您找到的示例,我们可以很容易地为您推断出代码。

第一行是int first = 321/100;,它返回3(整数除法是欧几里得除法)。 3 确实是 321 中的第一个整数,所以这是一件好事。但是,我们有一个 4 位数字,让我们尝试将 100 替换为 1000:

int first = 4321/1000;

这确实返回 4 !

让我们尝试调整您的其余代码(另外我将您的四位数字放入变量entry)。

int entry = 4321;
int first = entry/1000;
int second = entry/100 - first*10;
int third = entry/10 - first*100 - second*10;
int fourth = entry - first*1000 - second*100 - third*10;

second 将是 entry/100 (43) 减去 first*10 (40),所以我们没问题。 third 然后是 432 - 400 - 30 变成 2。这也适用于 fourth

对于多于四位的数字,您可能需要使用 for 循环,也可能需要一些模数。

【讨论】:

  • 非常感谢!我的控制器在其数学函数中没有模数;它确实有四舍五入。我正在为其重写代码的 1990 年代较旧的控制器确实具有模函数。那是我的问题。
  • 您可以使用旧公式:x mod y = x - ( x / y * y )。
【解决方案2】:

这段代码计算用户输入的位数 然后将数字一一分解:

PRINT "Enter value";
INPUT V#
X# = V#
DO
    IF V# < 1 THEN
        EXIT DO
    END IF
    D = D + 1
    V# = INT(V#) / 10
LOOP
PRINT "Digits:"; D
FOR L = D - 1 TO 0 STEP -1
    M = INT(X# / 10 ^ L)
    PRINT M;
    X# = X# - M * 10 ^ L
NEXT
END

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-02
    • 2015-07-04
    • 2022-08-16
    • 2022-05-11
    • 2017-09-07
    • 2020-10-17
    • 2016-07-30
    • 1970-01-01
    相关资源
    最近更新 更多