Вывести цифры числа в нормальном и обратном порядке - C (СИ)
Формулировка задачи:
Условие:
ввести с клавиатуры некоторое количество чисел и вывести их цифры в нормальном и обратном порядке#include <stdio.h> #include <conio.h> #include <windows.h> #define N 100 int main(){ SetConsoleCP(1251); SetConsoleOutputCP(1251); char K=0; char mas[N]; char*p1; int i=0, kolvo; printf("Введите количество чисел: "); kolvo=getche()-48; printf("\n\n"); do{ fflush(stdin); p1=mas; printf("Введите число: "); K=0; do{ *p1=getchar(); if(isdigit(*p1)) mas[K++]=*p1; if(*p1=='\n') break; }while(++p1<mas+N-1); *p1='\0'; printf("Нормальный порядок: "); for(p1=mas;p1<&mas[K];p1++) printf("%c ",*p1); printf("\nОбратный порядок: "); for(p1=&mas[K]-1;p1>=mas;p1--) printf("%c ",*p1); printf("\n\n"); }while(++i<kolvo); getch(); }
Решение задачи: «Вывести цифры числа в нормальном и обратном порядке»
#include <stdio.h> /* с отрицательными числами не морочимся, активно используем тип unsigned */ /* печать по цифре через пробел в "прямом" порядке */ void goahead(unsigned n) { if ( n > 9 ) goahead(n / 10); printf("%d ", n % 10); } /* печать по цифре через пробел в "обратном" порядке */ void upsidedown(unsigned n) { printf("%d ", n % 10); if ( n > 9 ) upsidedown(n / 10); } int main(void) { unsigned n; while ( printf("Number: ") && scanf("%u", &n) == 1 ) { printf("Right order: "); goahead(n); printf("\nReversed order: "); upsidedown(n); printf("\n"); } return 0; }
Объяснение кода листинга программы
В этом коде есть две функции: goahead и upsidedown, которые печатают цифры числа в прямом и обратном порядке соответственно. Функция goahead рекурсивно разбивает число на десятки и вызывает саму себя для каждой цифры, пока не будет достигнуто число, которое меньше или равно 10. Затем функция печатает последнюю цифру числа, используя оператор % для получения остатка от деления. Функция upsidedown делает то же самое, но в обратном порядке, сначала печатая последнюю цифру, а затем вызывая саму себя для каждой цифры, пока не будет достигнуто число, которое меньше или равно 10. Функция main считывает число с помощью функции scanf и передает его в функцию goahead, чтобы напечатать цифры числа в прямом порядке, а затем в функцию upsidedown, чтобы напечатать цифры в обратном порядке. Этот процесс повторяется до тех пор, пока пользователь не введет число, которое больше 9.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д