본문 바로가기
공부(~2016)/알고리즘

[알고리즘/C언어] 문자열 거꾸로 출력하기

by soy; 2013. 12. 14.

1. 그냥 출력하기  혹은 추가 배열에 저장하기


 

#include<stdio.h>
#include<string.h>
 
int main(void)
{
    char a[] = "My Name Is Soy Lee";
    int i, j;
 
 
    printf("%s\n", a);
 
 
    for(i=strlen(a)-1; i>=0; i--)
    {
 
         if(a[i]==' ')
          {
              for(j=i+1; a[j]!=' ' && a[j]!='\0'; j++)
            printf("%c", a[j]);
            printf(" ");
        }
        else if(i==0)
        { 
            for(j=i; a[j]!=' '; j++)
            printf("%c", a[j]);
        }
    }
 
    printf("\n");
    return 0;
}
cs






2. 추가 배열 없이, 기존 배열에서 위치 바꾸기


 

#include<stdio.h>
#include<string.h>
 
void rev(int start, int end, char arr[])
{
    char temp;
    int i = start, j;
 
    for(j=0; j< (end-start)/2; j++)
    {
        temp = arr[i];
        arr[i] = arr[end-1-j];
        arr[end-1-j] = temp;
        i++;
    }
    printf("%s\n", arr);
 
}
 
int main(void)
{
    int start=0, end, i;
    char a[] = "My Name Is Soy Lee";
 
    printf("%s\n", a);
 
    rev(0, strlen(a), a);
    printf("%s\n",a);
 
    for(i=0; i<=strlen(a); i++)
    {
        if(a[i]==' ' || a[i]=='\0')
        {
            end=i;
            rev(start, end, a);
            start = i+1;
        }
    }
 
    printf("\n");
    return 0;
}
cs





My Name is Soy Lee  ->  Lee Soy is Name My

댓글0