十进制到BASE-26表示

时间:2012-09-02 15:48:21

标签: c number-systems

我编写代码将十进制数转换为相应的字母表示。

示例:

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' );
    }
}

以上代码为working correctly。我可以在可读性方面进行优化吗? 最好的方法是什么?

现在,我想修改上面的代码,就像这样:

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

显而易见的方法是在输入的十进制数中加1并将其传递给原始代码中的函数。 如何在不添加1的情况下修改第一个程序来处理第二个程序?

1 个答案:

答案 0 :(得分:1)

经过一些观察,我尝试了以下代码&它适用于Case: 2

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

        print(n % 26);
    }
}

请参阅输出here