阿拉伯到罗马

1297 阿拉伯到罗马

题目描述

罗马数字是欧洲在阿拉伯数字(实际上是印度数字)
传入之前使用的一种数码,现在应用较少。
它的产生晚于中国甲骨文的数码,更晚于埃及人的
十进位数字。但是,它的产生标志着一种古代文明的进步。
给出几个罗马数字的基础数字,
I(1),V(5),X(10),
L(50),C(100),D(500),M(1000)
观察下面的数字,了解罗马数字的构成原理 

1    2    3     4    5     6      7       8     9 

I    II   III  IV   V    VI   VII  VIII IX 

10   20    30     40   50   60   70     80      90 

X      XX    XXX  XL    L     LX   LXX  LXXX XC 

给出一个大于0小于1000的阿拉伯数字整数,把它转换成罗马数字并输出。

输入描述

/*
一个阿拉伯数字。
*/
374
782

输出描述

/*
按样例格式输出输入的阿拉伯数字对应的罗马数字。
*/
374=CCCLXXIV
782=DCCLXXXII
#include <stdio.h>

int main()
{
    char *digits[10] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
    char *tens[10] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
    char *hundreds[10] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
    char *thousands[4] = {"", "M", "MM", "MMM"};

    int n, i, j;
    while(scanf("%d",&n)!=EOF){
        printf("%d=", n);
        printf("%s", thousands[n/1000]);
        printf("%s", hundreds[n%1000/100]);
        printf("%s", tens[n%100/10]);
        printf("%s
", digits[n%10]);
    }
}
原文地址:https://www.cnblogs.com/lwp-nicol/p/14338294.html