Вывести цифры числа в нормальном и обратном порядке - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д