整數轉羅馬字元

2021-09-09 06:34:24 字數 1660 閱讀 1880

羅馬數字包含以下七種字元:ivxlcdm

例如, 羅馬數字 2 寫做ii,即為兩個並列的 1。12 寫做xii,即為x+ii。 27 寫做xxvii, 即為xx+v+ii

通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 4 不寫做iiii,而是iv。數字 1 在數字 5 的左邊,所表示的數等於大數 5 減小數 1 得到的數值 4 。同樣地,數字 9 表示為ix。這個特殊的規則只適用於以下六種情況:

給定乙個整數,將其轉為羅馬數字。輸入確保在 1 到 3999 的範圍內。

譬如輸入1994,輸出mcmxciv。

我的思路:非常簡單,就是一次次判斷即可。

先看我的**:

public class integertoroman 

num = num - (num/1000)*1000;

getroman(num);

}else if (num>=900&&num<1000) else if (num>=500&&num<900) else if (num>=400&&num<500) else if (num>=100&&num<400)

num = num - (num/100)*100;

getroman(num);

}else if (num>=90&&num<100) else if (num>=50&&num<90) else if (num>=40&&num<50) else if (num>=10&&num<40)

num = num - (num/10)*10;

getroman(num);

}else if (num>=9&&num<10) else if (num>=5&&num<9)else if (num>=4&&num<5) else if (num>=1&&num<4)

return;

}else

} public string inttoroman(int num)

public static void main(string args)

}

功能沒有問題,但是,這樣寫,可讀性極差。無數的if...else...,充滿了bad smell!

於是和朋友交流到了表驅動程式設計

**:

int values=;

string reps=;

string res;

for(int i=0; i<13; i++)

}return res;

非常清爽的**!!!

整數轉換為羅馬字元

給定乙個整數數字s,1 s 3999 即1到3999 將整數轉換成羅馬數字。羅馬數字i,ii,iii,iv,v分別代表數字1,2,3,4,5。格式 第一行輸入乙個整數,接下來輸出對應的羅馬數字。首先要來了解一下羅馬數字表示法,基本字元有7個 i,v,x,l,c,d,m,分別表示1,5,10,50,1...

數字轉羅馬字串

數字轉羅馬字串 vc2008通過 include stdafx.h include 數字轉羅馬字串 需要保證strdata空間足夠 範圍 1 3999 void numbertostring int nvalue,char strdata const char s100 10 const char ...

12 整數轉羅馬數和13 羅馬數轉整數

題目的給出了幾種轉換策略,以及在個位是4,6的時候有一些變換。首先乙個整數num的範圍是1 3999,數字的位數情況是 千位,百位,十位,個位。每一位的數字其實就有四種情況,以百位為例 100,300 是一類 400是一類 500,800 是一類 900是一類 整個演算法上沒什麼特別困難的比較好理解...