我得到了一个以int作为参数的函数,并将输出一个int []。
输入int是0到1000之间的数字。我的目标是将此数字转换为数组,其中每个索引都是输入数字的一个数字。如果输入数字中有两位数,则两个最低有效位将为0.
例如:
int num1 = 404;
int num2 = 42;
将有输出:
num1 = {4, 0, 4, 0}
num2 = {4, 2, 0, 0}
等等..
有没有聪明的方法来实现这一目标?一个是将数字转换为char *,但我不太确定如何使用它。我此刻迷失了。 顺便说一下:这不是作业;)
答案 0 :(得分: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基(十进制)数。或者说是二进制编码的十进制数。