Не меняются местами слова в строке - C (СИ)
Формулировка задачи:
В задании требуется поменять местами первое и последние слова.
#include <stdio.h> #include <stdlib.h> #define N 100 int main(void) { char str[N], A[N], B[N]; int i, n, x, j; gets (str); x=0; for (i=0 ; i<N ; i++) if (str[i]==' ') { x++; if (x==1) for (n=i ; n>=0 ; n--) A[n]=str[n]; } x=0; j=0; for (i=N ; i>0 ; i--) if (str[i]==' ') { x++; if (x==1) for (n=i+1 ; n<N ; n++) { B[j]=str[n]; j++; } } for (i=0 ; i<N ; i++) if (str[i]==' ') { x++; if (x==1) for (n=i ; n>=0 ; n--) str[n]=B[n]; } j=0; for (i=N ; i>0 ; i--) if (str[i]==' ') { x++; if (x==1) for (n=i ; n>=0 ; n--) { str[n]=A[j]; j++; } } puts (A); puts (B); puts (str); system("PAUSE"); return 0; }
Решение задачи: «Не меняются местами слова в строке»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { const int N = 100; char str[N], first[N], mid[N], last[N]; int i = 0, len, first_len, last_len; gets(str); len = strlen(str); for (i=0; i<len; i++) if (str[i]==' ') break; strncpy(first, str, i); first[i] = '\0'; first_len = strlen(first); for (i = len-1; i>=0; i--) if (str[i]==' ') break; i++; strncpy(last, str+i, len-i); last[len-i] = '\0'; last_len = strlen(last); strncpy(mid, str+first_len, len - first_len - last_len); mid[len-first_len-last_len] = '\0'; strcpy(str,last); strcat(str,mid); strcat(str,first); puts(str); system("PAUSE"); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек
- Объявление переменных:
- — const int N = 100;
- — char str[N], first[N], mid[N], last[N];
- — int i = 0, len, first_len, last_len;
- Считывание строки в переменную str с помощью функции gets()
- Вычисление длины строки с помощью функции strlen()
- Формирование подстрок:
- — первая подстрока first: копирование символов из строки str до первого пробела с помощью функции strncpy()
- — последняя подстрока last: копирование символов из строки str после последнего пробела с помощью функции strncpy()
- — средняя подстрока mid: копирование символов из строки str между первой и последней подстроками с помощью функции strncpy()
- Удаление первых и последних пробелов в подстроках first и last с помощью функции strim()
- Конкатенация подстрок first, mid и last в переменную str с помощью функций strcat()
- Вывод полученной строки на экран с помощью функции puts()
- Ожидание нажатия клавиши с помощью функции system()
- Возврат 0, т.е. успешный исход выполнения программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д