羅馬數字包含以下七種字元:i
,v
,x
,l
,c
,d
和m
。
例如, 羅馬數字 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是一類 整個演算法上沒什麼特別困難的比較好理解...