Как превратить целое число в массив цифр без использования строк? - PullRequest
2 голосов
/ 10 февраля 2011

Например, возьмите 123 и поместите его в массив, где это [3] = {1, 2, 3}?

Без преобразования в строку и ее итерации.

Ответы [ 4 ]

5 голосов
/ 10 февраля 2011

Вы можете получить десятичные цифры числа, используя целочисленное деление и по модулю.

 //Pseudo code
 int[MAX_SIZE] result;
 int index = 0;
 while (workingNumber > 0)
 { 
     digit = workingNumber % 10;
     result[index] = digit;
     workingNumber = workingNumber / 10; //Must be integer division
     index++;
 } 
3 голосов
/ 10 февраля 2011
#include <math.h>

...

int number = 5841;
int size = log10(number) + 1;
int arr[size];
int i = size;
while(i >= 0)
{
    arr[--i] = number % 10;
    number /= 10;
}
1 голос
/ 10 февраля 2011
#include <stdio.h>
#include <math.h>

#define LEN 3

int main(int argc,char* argv[])
{
  int i = 123;
  int a[LEN];
  int digit;
  int idx = log10(i);

  do {
    digit = i % 10;
    i /= 10;
    a[idx--] = digit;
  } while (i != 0);

  printf("a: { %d, %d, %d }\n", a[0], a[1], a[2]);

  return 0;
}
1 голос
/ 10 февраля 2011

Во-первых, имейте в виду, что в C единственная реальная разница между «массивом символа» и «строкой» состоит в том, что вы должны быть строкой, в конце массива символа «char» ставится NUL-терминатор.

Предполагая, что вы хотите (например) создать массив типа int (или long, или что-то другое, кроме char), вы обычно берете остаток при делении на 10 и конвертируете его в цифру, добавляя '0' , Затем разделите число на 10 и повторяйте, пока оно не уменьшится до нуля. Это создает числа от наименее до наиболее значимых, поэтому вы обычно помещаете их в конец массива и возвращаетесь к началу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...