Переставить элементы введенной текстовой строки в обратном порядке - 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; завершение программы
Таким образом, данный код переворачивает введённую строку с помощью рекурсивной функции