2012-09-02 39 views
0

我寫了代碼將十進制數轉換爲相應的字母表示。十進制到BASE-26表示

例子:

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的情況下修改第一個程序以處理第二個案例?

+5

你有一個奇怪的想法如何base-26如何工作;你似乎缺少一個零... –

+1

@R ..請仔細看看代碼。它不轉換爲基地26.觀察n-- –

+1

我是指示例,而不是代碼。如果基數爲26,則不應有符號(Z),值爲26 ... –

回答

1

經過一番觀察,我已經嘗試了下面的代碼&它的工作爲Case: 2

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

     print(n % 26); 
    } 
} 

查看輸出here