0

10 進数を対応するアルファベット表記に変換するコードを書きました。

例:

1: A
2: B
.
.
.
26: Z
27: AA
.
.
.
703: AAA

これが私のアプローチです:

void print(int n)
{
    if( n > 0 )
    {
        n--;
        print( n / 26 );
        printf( "%c", ( n % 26 ) + 'A' );
    }
}

上記のコードは正しく機能しています。読みやすさの点で最適化できますか?
それを行う最良の方法は何ですか?

ここで、上記のコードを次のように変更したいと思います。

0: A
1: B
.
.
.
25: Z
26: AA
.
.
.
702: AAA

明らかなアプローチは、入力 10 進数に 1 を追加し、それを元のコードの関数に渡すことです。1を追加せずに2番目のケースで動作するように最初のプログラムを変更するにはどうすればよいですか?

4

1 に答える 1

1

いくつかの観察の後、私は以下のコードとその動作を試しましたCase: 2

void print(int n)
{
    if(n < 26)
        printf("%c", n + 'A');
    else
    {
        print(n / 26 - 1);

        print(n % 26);
    }
}

ここの出力を参照してください。

于 2012-09-02T17:24:23.890 に答える