Страницы

Translate

пятница, 12 июля 2013 г.

Упражнение 1.19. Напишите функцию reverse(s), размещающую символы в строке s в обратном порядке.


Упражнение 1.19. Напишите функцию reverse(s), размещающую символы в строке s в обратном порядке.
Примените ее при написании программы, которая каждую вводимую строку располагает в обратном порядке.


#include <stdio.h>
#define MAX 1000

void reverse(char s[], int n);
int main(int argc, char **argv)
{
    
    char line[MAX];
    int i, m;
    char c;
    i=0;
    while((c=getchar()) != EOF)
    {
        line[i]=c;
        i++;
        if(c=='\n')
        {
            line[i]='\0';
            m=i;//запоминаем длину введённой строки
            i=0;
            reverse(line, m);
            printf("%s\n", line);
        }
    }
    return 0;
}

void reverse(char s[], int n)
{
    char tmp[MAX];
    int i, j;
    for(i=0; i<n; i++)
        tmp[i]=s[i];
    i-=2;//отнимаем символ \0, и ещё один элемент 
    //из-за правил нумерации массива
    for(j=0; j<(n-1); j++, i--)
        s[j]=tmp[i];
}

Результат:



Комментариев нет:

Отправить комментарий