3

我得到了一个以 int 作为参数的函数,并将输出一个 int[]。

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

例如:

int num1 = 404;
int num2 = 42;

将有输出:

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

等等..

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

4

1 回答 1

2

一种方法是使用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 基(十进制)数。或者是二进制编码的十进制,准确地说。

于 2013-06-27T08:11:20.310 回答