Напечатать последовательность слов в обратном порядке - C (СИ) (79009)
Формулировка задачи:
Очень прошу..помогите с задачкой..
"Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами – запятая, за последним словом точка.Напечатать эту последовательность слов, но в обратном порядке" (на языке си)
Решение задачи: «Напечатать последовательность слов в обратном порядке»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define MAXSIZE 256
void revert(char arr[], int N)
{
char* left = arr;
char* right = &arr[N - 1];
while(left < right)
{
*left ^= *right;
*right ^= *left;
*(left++) ^= *(right--);
}
}
int main(void)
{
char str[256] = "abcd pc wtf";
revert(str, strlen(str));
puts(str);
return 0;
}
Объяснение кода листинга программы
В данном коде на языке C реализована функция revert, которая переворачивает строку, и основная функция main, которая вызывает эту функцию для строки abcd pc wtf.
- #include
Включает в код функции файла стандартного ввода/вывода, нужные для отправки сообщений в консоль. - #include
Включает в код функции работы со строками. - #define MAXSIZE 256 Определяет максимальную длину строки, которую можно обработать.
- void revert(char arr[], int N) Функция принимает на вход два аргумента: массив символов и его длину.
- *char left = arr;** Выделяют указатели на начало и конец строки.
- *char right = &arr[N - 1];**
- while(left < right) Организуется цикл, пока левая позиция указателя меньше правой.
- left ^= right; Применяется операция побитового исключающего ИЛИ к символам на позициях left и right.
- right ^= left;
- (left++) ^= (right--); Перемещаются указатели на следующие позиции.
- int main(void) Функция main создает и инициализирует строку
abcd pc wtf. - revert(str, strlen(str)); Вызывают функцию revert для переворачивания строки.
- puts(str); Выводят перевернутую строку в консоль.
- return 0; Завершают выполнение программы.