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

时间:2014-11-24 07:21:39

标签: c arrays

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

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

3 个答案:

答案 0 :(得分:3)

我们如何提供这个想法,你编写代码?听起来不错?

  1. 取整数。
  2. 使用modulo [%]运算符取出最后一位数字。存储在数组中。
  3. 除以10将原始数字右移1位数。
  4. 迭代2& 3直到3的结果变为0。
  5. 最后,一旦你完成了,如果你已经直接存储,你需要反转数组内容以获得与数字中出现的数字相同的数字。

答案 1 :(得分:0)

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

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

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

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

  5. 所以这种野兽的伪代码是:

    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.
    

答案 2 :(得分: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;
}