Написать и протестировать функцию, которая "переворачивает" строку, передаваемую ей в качестве параметра. - C (СИ)
Формулировка задачи:
Написать и протестировать функцию, которая "переворачивает" строку, передаваемую ей в качестве параметра.
Что не так???
#include <stdio.h> #include <conio.h> #include <string.h> chang(char s[100]) { char c; int i,k; for(k=0;s[k]!='\0';k++); for(i=0;i<(k/2);i++) { c=s[i]; s[i]=s[k-1-i]; s[k-1-i]=c; } } main() { char str[100]; printf("Vvedite stroky:\n"); scanf("%s,&str"); printf("\n\nNovaya stoka:%s ",chang(str)); }
Решение задачи: «Написать и протестировать функцию, которая "переворачивает" строку, передаваемую ей в качестве параметра.»
textual
Листинг программы
for ( t = s; *t; ++t ) ; // цикл(от первого символа; до символа конца строки; следующий символ) for ( h = s, t -= 1; h < t; ++h, --t ) // h от первого символа, t от последнего символа; до серидины строки; обе переменные движутся к центру строки. h плюсуется т.к. он начала, а t в минус т.к. с конца строки идет { // следующие три операции меняют // данные между переменными *h и *t // т.е. вначале мы меняем первую и последние буквы // следующая итерация - меняем вторую и предпоследнюю буквы // и т.д. до середины строки c = *h; *h = *t; *t = c; }
Объяснение кода листинга программы
- Первый цикл начинается с инициализации переменной
t
значениемs
и выполняется до тех пор, пока*t
не станет равным\0
(т.е. до конца строки). Переменнаяt
увеличивается на 1 после каждой итерации цикла. - Второй цикл начинается с инициализации переменных
h
иt
значениемs
. Переменнаяh
увеличивается на 1, а переменнаяt
уменьшается на 1 после каждой итерации цикла. Цикл выполняется до тех пор, покаh
меньшеt
(т.е. до середины строки). - Внутри второго цикла выполняется следующая операция:
- Переменная
c
инициализируется значением символа, на который указывает переменнаяh
(т.е. первый символ строки). - Значение переменной
h
заменяется значением переменнойt
(т.е. последний символ строки). - Значение переменной
t
заменяется значением переменнойc
(т.е. первый символ строки). - Эта операция повторяется для каждой итерации второго цикла (т.е. для каждой пары символов, начиная с первого и последнего символов строки, и двигаясь к середине строки).
- Переменная
- Результатом выполнения функции будет перевернутая строка, которая будет содержаться в переменной
s
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д