如何将整数转换为C中的数字数组?
问题描述:
如何将一个整数转换为C中数字的数组? 例如: 我有一个整数:int a=12345;
我想其中包含了数字数组:如何将整数转换为C中的数字数组?
int arrayofdigits={1,2,3,4,5};
答
您可以使用
x % 10
获得的x
单位(最右边)的数字。每个数字都可以放入数组中。您可以使用
x = x/10
将x
除以10,将所有数字右移。当
x
已移至等于零的点时,您可以检测到数字用完了。您可以。如果您按照正确的顺序需要它们,通过从边缘移动直到您穿过中间来交换它们。
所以对于这样的野兽伪代码将是:
def digits[10]
def x = 12345
def pos = 0
while x != 0:
digits[pos] = x % 10
pos = pos + 1
x = x/10
def left = 0
def right = pos - 1
while left < right:
temp = digits[left]
digits[left] = digits[right]
digits[right] = temp
left = left + 1
right = right - 1
# Now digits[0..(right-1)] holds the digits.
答
怎么样,我们提供的想法,和你写的代码?听起来不错?
- 取整数。
- 使用modulo [
%
]运算符取出最后一位数字。存储在一个数组中。 - 除以10以将原始数字右移一位数。
- 迭代2 & 3,直到3的结果为0。
最后,一旦你做,如果你存储通俗易懂,你需要扭转数组内容,以获得位数相同因为它们出现在号码中。
答
您可以参考下面的程序。
我能想到的最简单的一个是这样的:
int main(void)
{
int a=12345;
char c[10] = {0}; /*c is array if characters to hold the digits*/
sprintf(c, "%d", a);
printf("Int : %d, array of digits: %s\n", a, c);
/*To print each digit one by one*/
a = 0;
while (c[a] != '\0')
printf("%c\n",c[a++]);
return 0;
}
是什么?你试试,直到时间? – 2014-11-24 07:22:33
'char buf [sizeof(int)* CHAR_BIT + 1]; snprintf(buf,sizeof buf,“%d”,a);' – 2014-11-24 07:23:15
@TheParamagneticCroissant当然,33个字符不需要表示一个32位有符号整数,即使有一个尾随空字符? – 2014-11-24 07:28:39