Напишите функцию reverse, размещающую символы в строке s в обратном порядке - C (СИ)
Формулировка задачи:
Есть упражнение: Напишите функцию reverse( s ), размещающую символы в строке s в обратном порядке.
Я сходу реализовала ее так (см. ниже), но знаю, что можно и лучше и сейчас постараюсь подумать и написать более хороший способ. А пока пишу улучшенную версию, было бы неплохо увидеть ваши решения. Задачка простая, но все же интересно какие будут варианты ))
void reverse ( char s[] ) {
char temp[ MAXLINE ];
int i, j;
for (i = 0; ( temp[ i ] = s[ i ] ) != '\0'; ++i );
for (j = i - 1, i = 0; j >= 0; --j, ++i )
s[ i ] = temp[ j ];
s[ i ] = '\0';
}Решение задачи: «Напишите функцию reverse, размещающую символы в строке s в обратном порядке»
textual
Листинг программы
void Reverse(char a[])
{
int j = 0;
int i = strlen(a) - 1;
int temp;
while(i > ((strlen(a) - 1)) / 2)
{
temp = a[j];
a[j] = a[i];
a[i] = temp;
j++;
i--;
}
}
Объяснение кода листинга программы
- В функции объявлены три переменные: j, i, temp.
- Значение переменной j установлено равным нулю, а значение переменной i установлено равным strlen(a) - 1.
- Переменная temp инициализируется значением a[j].
- Значение a[j] присваивается значению a[i], а значение a[i] присваивается значению temp.
- Значения переменных j и i инкрементируются и декрементируются соответственно.
- Цикл while выполняется до тех пор, пока значение i больше (strlen(a) - 1) / 2.
- Внутри цикла происходит обмен значениями a[j] и a[i], а затем инкремент и декремент переменных j и i.
- После завершения цикла, функция завершается.