昨天微软MSN在南大的笔试题,稍后贴出我的答案

来源:百度文库 编辑:神马文学网 时间:2024/10/04 19:38:50
罗马数字共有七个,即
I(1),V(5),X(10),L(50),C(100),D(500),M(1000)。
按照下面三条规则可以表示任意正整数。
重复数次:一个罗马数字重复几次,就表示这个数的几倍。
右加左减:在一个较大的罗马数字的右边记上一个较小的罗马数字,
表示大数字加小数字。在一个较大的数字的左边记上一个较小的罗
马数字,表示大数字减小数字。但是,左减不能跨越等级。
比如,99不可以用IC表示,用XCIX表示
基本数字Ⅰ、X 、C 中的任何一个,自身连用构成数目,或者放在大数的右边连用构成数目,都不能超过三个,比如40不能用XXXX,而用XL表示
设计一个函数,将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";