chigichan24のお気持ち表明

イケてるエンジニアになりたい.

AOJ 0006 Reverse Sequence

こんにちは!
dijkstra系男子のchigichanです。

今日、うpする問題はAOJ 0006 Reverse Sequenceです。
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0006

この問題は入力された文字列を、逆順にする問題です。
一応、C++にはreverse(array.begin(),array.end())とかいうのがありますが、それだと簡単すぎるので、違う解法を紹介します。

とりあえず、コード。

#include<stdio.h>
#include<ctype.h>
#include<string.h>
 
int main(void)
{
 
    char a[21],b[21];
    int x,i,j;
    scanf("%s",a);
    x=strlen(a);
 
    for(i=0;i<=x;i++){
 
        if(i==x){
            b[i]=a[i];
        }
 
        else{
            b[x-i-1]=a[i];
        }
 
    }
    printf("%s\n",b);
    return 0;
}

コードの説明をすると、まずaの配列に文字を入力して、その文字列の終わりが来るまで、bの後ろから、文字を代入していきます。そして、\0が来たら、最後のところに\0をいれます。
これで、reverse関数に頼らずにreverseできましたね!

この技?はたまに使うので覚えておくといいと思います。