Вывести поочередно каждый из разрядов числа - C (СИ)
Формулировка задачи:
Уже долго ломаю голову над такой задачей. Есть число любое введенное с клавиатуры, например 4-значное 1234. Нужно вывести поочередно каждый из разрядов, тоесть отдельно вывести 1, потом в новой строке 2 и т. д. Число может быть любым, не только 1234.
Четверку я вывожу так:
Соответственно единичку так:
.
Внутренние цифры - исходя из этого же алгоритма, что очень долго и громоздко если в числе 7-8 знаков. Уверен это можно сделать проще.
Заранее прошу прощения за настолько для вас простой вопрос.
int a = 1234; int b = a % (a / 10*10);
int b = a / 1000
Решение задачи: «Вывести поочередно каждый из разрядов числа»
textual
Листинг программы
#include <stdio.h> void digit_per_line(unsigned n) { if ( n ) { digit_per_line(n / 10); printf("%u\n", n % 10); } } int main(void) { unsigned n; while ( printf("Number: ") && scanf("%u", &n) == 1 ) { if ( n ) digit_per_line(n); else printf("0\n"); } return 0; }
Объяснение кода листинга программы
Вывод каждого разряда числа:
- Включаем заголовочный файл
- Создаём функцию digit_per_line(unsigned n)
- Проверяем условие n != 0
- Рекурсивно вызываем функцию digit_per_line(n/10) для каждого разряда числа
- Выводим остаток от деления n на 10 с помощью функции printf(
%u\n
, n % 10) - Создаём функцию main
- Объявляем переменную типа unsigned n для хранения числа
- Запускаем цикл while, который будет выполняться до тех пор, пока пользователь вводит число и нажимает enter
- Выводим приглашение для ввода числа
Number:
- Считываем число с помощью функции scanf(
%u
, &n) - Проверяем успешность считывания числа с помощью оператора ==
- Если число успешно считано, вызываем функцию digit_per_line(n) для вывода разрядов числа
- Если число не успешно считано, выводим сообщение об ошибке
0\n
- По завершении цикла while возвращаем 0, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д