c - 十进制到 BASE-26 表示法

标签 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?

最佳答案

经过一些观察,我尝试了以下代码及其适用于案例:2

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

        print(n % 26);
    }
}

查看输出 here .

关于c - 十进制到 BASE-26 表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12237361/

相关文章:

c - 读取(fd,NULL,0);它有什么作用?它定义明确吗?

c - Semmle QL : TaintTracking hasFlow() Problem with Sources that taint their Arguments

c++ - 如何在 Linux 中获取 C/C++ 中的用户名?

c++ - 在 X 中,当它不修改另一个键时,是否可以检测何时按下和释放 shift?

Python:如何转换随着数字计数增加而用逗号分隔的数字?

algorithm - 如何找到二进制表示为回文的数字总数?

C 到硬件编译器(HLL 综合)

javascript - 使用 Javascript 以印度格式显示数字

c# - 将 10 进制数转换为 .NET 中任意进制数的最快方法?

ruby - 十进制与任何其他 n 进制数字系统之间的相互转换