罗马数字

趣味题目:罗马数字,如果生活在几世纪之前的古罗马,应该用V表示5,V就是所谓的罗马数字。

以下是七个基本的罗马数字与数字的对应:
I 1
V 5
X 10
L 50
C 100
D 500
M 1,000

所有的数都是以上罗马数字组合而成。

例如:17 表示为XVII = X+V+I+I
                                  17  = 10+5+1+1
表示罗马数字可以使用减法来代替加法的规则。例如4不可以使用IIII ,必须使用IV来表示。这样可以简化表示,在例如9用IX表示,而不是VIIII.

右加左减:在一个较大的罗马数字的右边记上一个较小的罗马数字,
表示大数字加小数字。在一个较大的数字的左边记上一个较小的罗
马数字,表示大数字减小数字。但是,左减不能跨越等级。
比如,99不可以用IC表示,用XCIX表示.

基本数字Ⅰ、X 、C 中的任何一个,自身连用构成数目,或者放在大数的右边连用构成数目,都不能超过三个,比如40不能用XXXX,而用XL表示

Problem 1.
设计一个函数,将100(包括100)以内的整数转换成罗马数字,超过100不考虑
int itor(int n,char* buf,int bufLength)
其中,n是要转换的整数,buf是要输出的字符串,bufLength是buf的字符长度
成功,返回0,否则,返回 -1;

比如:
char buf[256];
result = itor(n,buf,sizeof(buf));

when n = 28; result = 0, 输出"XXVIII";
when n = 72; result = 0, 输出"LXXII";

Problem 2:
写一个程序,实现以下功能:读入在一行的两个罗马数字(最后一行以#结束),求着这两个数的差,结果必须是罗马数字表示。如果答案为零,输出ZERO.
例如:输入:MM II
            输出:MCMXCVIII

P.S.笔者不久将实现代码贴在这里。

posted on 2006-10-28 16:40  Welfare  阅读(1859)  评论(1编辑  收藏  举报

导航