【问题标题】:Adding int to array, converting LSB to 0 c++将 int 添加到数组,将 LSB 转换为 0 c++
【发布时间】:2013-06-24 15:26:51
【问题描述】:

我有一个函数,它以 int 作为参数,并将输出一个 int[]。

输入 int 是一个介于 0 和 1000 之间的数字。我的目标是将这个数字转换为一个数组,其中每个索引都是输入数字的一个数字。如果输入的数字有两位,则最低两位为0。

例如:

int num1 = 404;
int num2 = 42;

会有输出:

num1 = {4, 0, 4, 0}
num2 = {4, 2, 0, 0}

等等..

有没有什么聪明的方法可以做到这一点?一种方法是将数字转换为 char*,但我也不太确定如何使用它。我现在有点迷路了。 顺便说一句:这不是家庭作业;)

【问题讨论】:

    标签: c++ arrays split int


    【解决方案1】:

    一种方法是使用itoa 函数或std::stringstream 类将数字转换为其符号表示。从那里,您可以从每个字符中减去'0',得到对应的数字为 0-9。

    另一种方式是:

    int tmpNum = num1;
    int factor = 1;
    int digits [4] = {0};
    
    // Finding the most significant digit's weight
    for (factor = 1; factor < num1; factor *= 10); 
    factor /= 10;
    
    // Finding digits from most to least significant
    for (int i = 0; tmpNum > 0; ++i)
    {
       digits[i] = tmpNum / factor;
       tmpNum -= factor * digits[i];
       factor /= 10;
    }
    

    这实质上是转换为以 10 为基数(十进制)的数字。或者准确地说是二进制编码的十进制。

    【讨论】:

    • 感谢您的快速回复。它会导致浮点异常,但至少我有一些工作要做。 Tyvm :)
    • @matkapluku:修复了一个错误,现在试试。现在我已经在几个数字上进行了测试。
    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 2014-08-16
    • 1970-01-01
    • 2014-05-18
    • 2019-12-04
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多