将整数转换为数字数组
Converting integer into array of digits
我需要将两个整数转换为两个数字数组,因此例如544将变成arr[0] = 5, arr[1] = 4, arr[2] = 4
。
我发现一些算法这样做,但他们创建新的数组,并返回这个。我必须为两个数组分配内存,所以我想通过引用传递两个整数,并直接对它们执行此操作。
我想我可以这样做,因为这些整数实际上是模板类型,所以它们应该是可变的。这就是为什么我在这里添加了c++标签
就像这样:
int n = 544; // your number (this value will Change so you might want a copy)
int i = 0; // the array index
char a[256]; // the array
while (n) { // loop till there's nothing left
a[i++] = n % 10; // assign the last digit
n /= 10; // "right shift" the number
}
注意,这将导致以相反的顺序返回数字。这可以很容易地通过修改i
的初始值以及根据您想要确定值长度的方式来修改自增/自减值。
(布雷特黑尔)我希望海报不介意,但我想我会添加一个代码片段,我使用这种情况下,因为它不容易在转换之前正确确定十进制数字的数量:
{
char *df = a, *dr = a + i - 1;
int j = i >> 1;
while (j--)
{
char di = *df, dj = *dr;
*df++ = dj, *dr-- = di; /* (exchange) */
}
}
一个简单的解决方案是:
int i = 12312278;
std::vector<int> digits;
while (i)
{
digits.push_back(i % 10);
i /= 10;
}
std::reverse(digits.begin(), digits.end());
or, string based (I>= 0)
for (auto x : to_string(i))
digits.push_back(x-'0');
调用整型a
要得到a
的单位数字,a % 10
将a
向下移动,使十位为个位数,a / 10
知道你什么时候完成,a == 0
首先要知道你的数组需要多大,min(ceil(log(a+1, 10)), 1)
(为了说服自己这是可行的,请在计算器中尝试它的对数部分。如果您没有多参数日志,请使用标识log(x,y) == log(x)/log(y)
)
如果你正在使用c++,你可以这样做:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
int a=544;
stringstream str;
str << a;
string arr;
str>>arr;
for(int i=0; i<arr.length(); i++)
{
cout << arr[i];
}
system("pause");
return 0;
}
相关文章:
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 如何计算数组中元素的位数?(不是数组的长度),并计算其数字的总和
- 数组/c++中的大量数字
- 遍历并行数组以确定C++中的最大数字
- 整数区间(或 int 数组)中每个数字的出现次数
- 如何在 C++ 中将文件中的逗号分隔数字读取到数组中?
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 获取 2D 数组 c++ 中的所有数字对
- 为什么使用数组元素查找最大数字的程序不起作用?
- 如何从向量或数组中选择最常见的数字?(前五名)C++
- 如何从保存在 Java 中C++的字节数组中读取数字?
- 以十为基数的数字到布尔数组,该数组要求二进制/基数为 2 的数字
- C++ 检查结果数组中有多少次数字
- 如何在不使用 C++ 中的数组或函数的情况下查找 N 位数字的所有排列
- 如何在C++中有效地将数字值重新分配给字符数组
- 查找数组中的最小数字
- 查找数组中重复(重复)数字的索引
- 我必须找到给定数组中所有数字的周期,就像有很多解决方案,但数组的大小是 10^5
- 类、数字/数组或对象中的对象