Как разбить двузначное число в C - PullRequest
2 голосов
/ 11 марта 2011

Допустим, у меня есть число, подобное 21, и я хочу разделить его так, чтобы я получил числа 2 и 1.

Чтобы получить 1, я мог бы сделать 1 мод 10. Итак, в общем, последнийцифру можно узнать с помощью мода 10.

Чтобы получить 2, я мог бы сделать (21 - (1 мод 10)) / 10.

Вышеуказанные методы будут работать с любым двузначным числом.

Однако, позвольте мне добавить еще одно ограничение, этот мод можно использовать только с степенями 2. Тогда вышеуказанный метод может 'не может быть использовано.

Что тогда можно сделать?

Ответы [ 3 ]

8 голосов
/ 11 марта 2011
2 == 23 / 10
3 == 23 - (23 / 10) * 10
1 голос
/ 11 марта 2011

Чтобы получить 2, вы можете просто сделать

int x = 23 / 10;

помните, что целочисленное деление отбрасывает дробную часть (поскольку оно не может быть представлено в целом числе).

Модуль деления (и регулярное деление) можно использовать для любой степени, а не только для степени двойки. Также степень двойки - это не то же самое, что двузначное число.

Чтобы разделить трехзначное число

int first = 234/100;
int second = (234/10)-first*10;
int third = (234/1)-first*100-second*10;

с небольшой работой, это также может выглядеть как

int processed = 0;
int first = 234/100-processed;
processed = processed + first;
processed = processed * 10;
int second = 234/10-processed;
processed = processed + second;
processed = processed * 10;
... and so on ...

Если вы добавите в него немного больше, вы можете легко написать его в виде цикла.

0 голосов
/ 11 марта 2011

как насчет

x% 10 для второй цифры и x / 10 для первой?

...