Вывести цифры числа в нормальном и обратном порядке - 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.