Из данной строки s создайте строку-палиндром, удвоив и обратив данную строку - C (СИ)
Формулировка задачи:
Упражнение 3. Из данной строки s создайте строку-палиндром, удвоив и обратив данную строку.
Решение задачи: «Из данной строки s создайте строку-палиндром, удвоив и обратив данную строку»
textual
Листинг программы
#include <stdio.h> #include <string.h> char * mk_palindrome(char * s) { char * pIn, * pOut = s + strlen(s); for ( pIn = pOut; pIn > s; ) *pOut++ = *(--pIn); *pOut = '\0'; return s; } #define WORD_LENGTH (64) #define get_word(w) ( scanf("%63s", (w)) == 1 ) int main(void) { char buf[WORD_LENGTH * 2]; while ( printf("Word (max %d symbols): ", WORD_LENGTH - 1) && get_word(buf) ) printf("Result: %s\n", mk_palindrome(buf)); return 0; }
Объяснение кода листинга программы
- Создаем функцию
mk_palindrome
, которая принимает указатель на строкуs
и возвращает указатель на новую строку-палиндром. - В функции
mk_palindrome
инициализируем два указателя:pIn
указывает на первый символ строкиs
, аpOut
указывает на последний символ новой строки, которая будет палиндромом. - В цикле перебираем символы строки
s
от начала к концу и записываем их в обратном порядке в новую строку, которую указываетpOut
. - После завершения цикла добавляем нулевой символ в новую строку.
- Возвращаем новую строку.
- В функции
main
создаем буферbuf
для хранения введенной строки. - В цикле запрашиваем у пользователя ввод строки с помощью
scanf
и выводим результат работы функцииmk_palindrome
на экран. - Программа завершается после достижения максимального количества итераций цикла или при нажатии клавиши
Ctrl+D
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д