整數轉換成羅馬數字

2021-09-20 01:35:31 字數 1831 閱讀 7274

編寫乙個將整數n(1 <= n <= 9999)轉換成羅馬數字。

假如說我們有乙個數字22,那麼它轉換的方式為22-10=12>=0;

則肯定先有乙個x,接著12-10=2>=0;則接著在x後面加上x 變為xx;2-1=1>=0;則肯定後面還需要新增乙個i變為xxi,1-1=0>=0;後面還要新增乙個i變為xxii。

這樣我們可以這樣做,將對應的羅馬數字和對應的數字放到兩個二維陣列中一一對應。

char *roman[row][column] = ,,,

};int num[row][column] = ,,,

};

這樣每乙個數字進入之後,從數字陣列的第乙個元素開始,進行減法,如果差大於等於0,接著對這個數字進行減法操作,如果小於0了,則進入下乙個數字進行同樣的減法操作,每次差大於等於0的時候,在後面新增上對應的羅馬數字。則轉換演算法應該是這樣的。

/**

*@brief toroman 將數字轉換成羅馬數字儲存到陣列rom中

*@param number 要被轉換的數字

*@param rom 將轉換後的羅馬數字儲存到rom陣列中

*/void toroman(int number,char rom)}}

}

好了,主體函式已經有了,現在附上我的整體的**:

#include #include #define row 4

#define column 4

void toroman(int number,char rom);

/** *@brief main 編寫乙個將整數(1 <= x <= 9999)轉化成對應的羅馬數字的程式

*@return

*//**

* 整數n(1<=n<=9999)與羅馬數字表示有以下對應關係

* 1000 - m,有幾個1000就有幾個m對應

* 900 - 兩個字元cm

* 500 - 乙個字元d

* 400 - 兩個字元cd

* 100 - 乙個字元c,有幾個100就用幾個c表示

* 90 - 兩個字元xc

* 50 - 乙個字元l

* 40 - 兩個字元xl

* 10 - 乙個字元x,有乙個10就用幾個x

* 9 - 用兩個字元ix表示

* 5 - 用乙個字元v來表示

* 4 - 用兩個字元iv表示

* 1 - 用乙個字元i表示,有幾個1就用幾個i

* */

/** * 用兩個二維陣列儲存整數和羅馬數字的

* 對應關係

*/char *roman[row][column] = ,,,

};int num[row][column] = ,,,

};int main(int argc,char *ar**)

else

if(argc == 2)else

if(argc == 3)else

int i = low;

for(i = low;i <= high;i++)

return0;}

/** *@brief toroman 將數字轉換成羅馬數字儲存到陣列rom中

*@param number 要被轉換的數字

*@param rom 將轉換後的羅馬數字儲存到rom陣列中

*/void toroman(int number,char rom)}}

}

下面是我的程式的輸出結果:

羅馬數字轉換成整數

時間限制 1000ms 記憶體限制 65536k 給定乙個羅馬數字 s s,將羅馬數字轉換成整數。如羅馬數字i,ii,iii,iv,v分別代表數字 1,2,3,4,51,2,3,4,5。首先要來了解一下羅馬數字表示法,基本字元有 77 個 i v x l c d m,分別表示 11 55 1010 ...

整數轉換成羅馬數字

時間限制 1000ms 記憶體限制 65536k 給定乙個整數 num 將整數轉換成羅馬數字。如 1,2,3,4,5 對應的羅馬數字分別為i,ii,iii,iv,v等。第一行輸入乙個整數 num 1 num 3999 輸出 num 對應的羅馬數字。樣例輸入123 樣例輸出cxxiii 總結 一道簡單...

羅馬數字轉換成整數(注意羅馬數字的大小表示問題)

羅馬數字規則 1,羅馬數字共有7個,即i 1 v 5 x 10 l 50 c 100 d 500 和m 1000 羅馬數字中沒有 0 2,重複次數 乙個羅馬數字最多重複3次。3,右加左減 在較大的羅馬數字的右邊記上較小的羅馬數字,表示大數字加小數字。在較大的羅馬數字的左邊記上較小的羅馬數字,表示大數...