Перевернуть каждое четное слово, сохранив неизменным их порядок в строке - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Введена строка символов. «Перевернуть» каждое четное слово, сохранив неизменным их порядок в строке.

Решение задачи: «Перевернуть каждое четное слово, сохранив неизменным их порядок в строке»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
char * reverse(char * str)
{
    char * head = str, * tail = str + strlen(str) - 1, tmp;
    while ( head < tail ) 
    {
        tmp = *head;
        *head = *tail;
        *tail = tmp;
        ++head;
        --tail;
    }
    return str;
}
#define DELIM " \t\n"
 
int main(void) 
{
    char buf[BUFSIZ], * p, cnt;
    if ( *buf != '\n' )
    printf("String: ");
    fgets(buf, BUFSIZ, stdin);
    printf("Result: ");
    for ( cnt = 0, p = strtok(buf, DELIM); p && ++cnt; p = strtok(NULL, DELIM) )
    printf("%s ", ( cnt & 1 ) ? p : reverse(p));
    return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы для работы с памятью и строками.
  2. Определяется функция reverse, которая переворачивает строку, сохраняя порядок слов.
  3. В функции main считывается строка из стандартного ввода с помощью fgets.
  4. С помощью цикла for и функции strtok происходит разбиение строки на слова и их переворот с помощью reverse.
  5. Каждое слово выводится на экран с помощью printf.
  6. В конце программы возвращается 0, что означает успешный конец работы программы.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

6   голосов , оценка 3.333 из 5
Похожие ответы