SEMAN

曾经沧海难为水、除却巫山不是云

C++博客 首页 新随笔 联系 聚合 管理
  9 Posts :: 3 Stories :: 24 Comments :: 0 Trackbacks

     要求将小于100的整数改写成罗马数字,具体的罗马数字怎么表达的就不详细说了,当时觉得这个题目还是很麻烦的,不过现在想想其中有规律可循的:
     1 5 10 50 100 ,我们可以人为地插入 4 9 40 90 这样先求出这几个数的值将大大提高程序的性能

int ator(int n, char *buffer,sizeof(buffer)){
    
int GivenNum[9= {"1","4","5","9","10","40","50","90","100"
};
     
char Roma[9={"I","IV","V","IX","X","XL","L","XC","C"
};

     
int i = 0
;
     
while (n>0
)
    {
          
while (n >=
 GivenNum[i])
          {
               n 
= n -
 GivenNum[i];
               strcat(buff,Roma[i]);
          }
          i 
= i + 1
;
    }
    
return 0
;
}

 

受百合上一个兄弟的提醒,突然恍然大悟...哈哈~~

posted on 2005-11-11 02:11 味全每日C++ 阅读(699) 评论(1)  编辑 收藏 引用 所属分类: Code

Feedback

# re: 将100以内的正整数化为罗马数字 2006-03-04 13:44 笑笑生
应该是:
int ator(int n, char *buffer)
{
int GivenNum[9] = {1,4,5,9,10,40,50,90,100};
char Roma[9][3] ={"I","IV","V","IX","X","XL","L","XC","C"};

int i = 8;
while (n>0)
{
while (n >= GivenNum[i])
{
n = n - GivenNum[i];
strcat(buffer,Roma[i]);
}
i--;
}
return 0;

}  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理