Переставить элементы введенной текстовой строки в обратном порядке - C (СИ)
Формулировка задачи:
Уважаемые. Помогите написать программу на Си:
Переставить элементы введенной текстовой строки в обратном порядке.
Длина строки не более 80 символов. Строка должна вводиться с клавиатуры.
Буду очень благодарен =))
Решение задачи: «Переставить элементы введенной текстовой строки в обратном порядке»
textual
Листинг программы
#include<stdio.h> #include<string.h> void Inverse(char *beg, char *end) { if (beg < end) { char buf = *beg; *beg = *end; *end = buf; Inverse(beg + 1, end - 1); } } int main() { char *ps, s[100]; fgets(s, 100, stdin); if (ps = strrchr(s, '\n')) *ps = '\0'; Inverse(s, s + strlen(s) - 1); puts(s); return 0; }
Объяснение кода листинга программы
В данном коде на языке C реализована функция Inverse
, которая переворачивает строку, и программа main
, которая вызывает эту функцию для введённой строки.
- #include
- #include
- void Inverse(char beg, char end)
- В данной функции переворачивается строка, представленная в виде отрезка, начинающегося с
beg
и заканчивающегосяend
. - Если
beg
меньшеend
, то: -
- *char buf = beg;* переменной
buf
присваивается значение первого символа строки `beg`
- *char buf = beg;* переменной
-
- beg = end; первый символ строки
*beg
меняется на последний символ строки*end
- beg = end; первый символ строки
-
- end = buf; последний символ строки `end
меняется на первый символ строки
buf`
- end = buf; последний символ строки `end
-
- Inverse(beg + 1, end - 1); рекурсивный вызов функции
Inverse
для перевёрнутого среза строки, начиная со второго символа и заканчивая предпоследним
- Inverse(beg + 1, end - 1); рекурсивный вызов функции
- В основной функции
main
: -
- *char ps, s[100];** объявление указателя
ps
и строкиs
- *char ps, s[100];** объявление указателя
-
- fgets(s, 100, stdin); считывание строки с помощью функции
fgets
- fgets(s, 100, stdin); считывание строки с помощью функции
-
- if (ps = strrchr(s, '\n')) проверка наличия символа новой строки в строке
s
- if (ps = strrchr(s, '\n')) проверка наличия символа новой строки в строке
-
- если символ новой строки найден, то:
-
- *ps = '\0'; замена символа новой строки на символ конца строки
-
- Inverse(s, s + strlen(s) - 1); вызов функции
Inverse
для переворачивания строкиs
- Inverse(s, s + strlen(s) - 1); вызов функции
-
- puts(s); вывод перевёрнутой строки на экран
-
- return 0; завершение программы
Таким образом, данный код переворачивает введённую строку с помощью рекурсивной функции
Inverse
и выводит её на экран.
- return 0; завершение программы
Таким образом, данный код переворачивает введённую строку с помощью рекурсивной функции
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д