当前位置:  开发笔记 > 编程语言 > 正文

将整数转换为数组

如何解决《将整数转换为数组》经验,为你挑选了3个好方法。

我试图将C中的整数转换为包含该数字的每个数字的数组

即如果我有

int number = 5400

我该怎么办?

int numberArray[4]

哪里

numberArray[0] = 0;
numberArray[1] = 0;
numberArray[2] = 4;
numberArray[3] = 5;

任何建议都感激不尽.



1> vava..:

这适用于数字> = 0

#include 

char * convertNumberIntoArray(unsigned int number) {
    int length = (int)floor(log10((float)number)) + 1;
    char * arr = new char[length];
    int i = 0;
    do {
        arr[i] = number % 10;
        number /= 10;
        i++;
    } while (number != 0);
    return arr;
}

编辑:只是更多的C风格,但更加神秘.

#include 

char * convertNumberIntoArray(unsigned int number) {
    unsigned int length = (int)(log10((float)number)) + 1;
    char * arr = (char *) malloc(length * sizeof(char)), * curr = arr;
    do {
        *curr++ = number % 10;
        number /= 10;
    } while (number != 0);
    return arr;
}



2> Zach Scriven..:

提示:看一下前面的问题" C#中的数字总和 ".它解释了如何使用几种方法提取数字中的数字,其中一些与C相关.

来自Greg Hewgill的回答:

/* count number of digits */
int c = 0; /* digit position */
int n = number;

while (n != 0)
{
    n /= 10;
    c++;
}

int numberArray[c];

c = 0;    
n = number;

/* extract each digit */
while (n != 0)
{
    numberArray[c] = n % 10;
    n /= 10;
    c++;
}



3> Christoffer..:

您可以使用对数而不是循环来计算整数中的位数.从而,

int * toArray(int number)
{
    int n = log10(number) + 1;
    int i;
    int *numberArray = calloc(n, sizeof(int));
    for ( i = 0; i < n; ++i, number /= 10 )
    {
        numberArray[i] = number % 10;
    }
    return numberArray;
}

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有