«Перевернуть» каждое четное слово, сохранив неизменным их порядок в строке - 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;
    
    while ( printf("\nString: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' && printf("Result: ") )
        for ( cnt = 0, p = strtok(buf, DELIM); p && ++cnt; p = strtok(NULL, DELIM) )
            printf("%s ", ( cnt & 1 ) ? p : reverse(p));
    
    return 0;
}

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

В этом коде реализована функция переворота строк. Сначала определяется указатель на начало строки (head) и на конец строки (tail). Затем в цикле, пока head меньше tail, выполняется следующая операция: значения head и tail меняются местами с помощью временной переменной tmp. После этого head инкрементируется, а tail декрементируется. По завершении цикла, функция возвращает исходную строку. В функции main, буфер buf инициализируется символом новой строки '\n'. Затем пользователю предлагается ввести строку. После ввода строки и ее разбиения на слова с помощью функции strtok, каждое слово выводится на экран в обратном порядке (если слово нечетное) или в прямом порядке (если слово четное). С помощью макроса DELIM определяются разделители: пробел, табуляция и символ новой строки.

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


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

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

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