如何将整数转换为C中的数字数组?

问题描述:

如何将一个整数转换为C中数字的数组? 例如: 我有一个整数:int a=12345; 我想其中包含了数字数组:如何将整数转换为C中的数字数组?

int arrayofdigits={1,2,3,4,5}; 
+0

是什么?你试试,直到时间? – 2014-11-24 07:22:33

+0

'char buf [sizeof(int)* CHAR_BIT + 1]; snprintf(buf,sizeof buf,“%d”,a);' – 2014-11-24 07:23:15

+0

@TheParamagneticCroissant当然,33个字符不需要表示一个32位有符号整数,即使有一个尾随空字符? – 2014-11-24 07:28:39

  1. 您可以使用x % 10获得的x单位(最右边)的数字。每个数字都可以放入数组中。

  2. 您可以使用x = x/10x除以10,将所有数字右移。

  3. x已移至等于零的点时,您可以检测到数字用完了。

  4. 您可以。如果您按照正确的顺序需要它们,通过从边缘移动直到您穿过中间来交换它们。

所以对于这样的野兽伪代码将是:

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. 

怎么样,我们提供的想法,和你写的代码?听起来不错?

  1. 取整数。
  2. 使用modulo [%]运算符取出最后一位数字。存储在一个数组中。
  3. 除以10以将原始数字右移一位数。
  4. 迭代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; 
}