罗马数表示整数

罗马数字共有七个,即
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不考虑

codes:

const char cSymbol[7] = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};

void CovertToRoma(int iVal)
{
    int iRemain;
 for(int i = 3; i >= 0; i--)
 {
  iRemain = iVal / (int)pow(10, i);
  if(iRemain > 0 && iRemain < 4)
  {
   for(int j = 0; j < iRemain; j++)
   {
    cout << cSymbol[2*i];
   }
  }
  if(iRemain == 4)
  {
   cout << cSymbol[2*i] << cSymbol[2*i + 1];
  }
  if(iRemain >= 5 && iRemain < 9)
  {
   cout << cSymbol[2*i + 1];
   for(int j = 0; j < iRemain - 5; j++)
   {
    cout << cSymbol[2*i];
   }
  }
  if(iRemain == 9)
  {
   cout << cSymbol[2*i] << cSymbol[2*(i + 1)];
  }
  if(iRemain )
  iVal = iVal % (int)pow(10, i);

 }
}
void main()
{

 for(int i = 1; i < 4000; i++)
 {
  CovertToRoma(i);
  cout << endl;
 }
 system("pause");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值