如何使用C写一个现实对应1~100罗马数字的程序?

今天在做一道课后练习题的时候遇到这么一道棘手的题?先到网上搜罗了一下关于罗马数字的相关知识,熟悉了一下罗马数字的写法。然后还是没有想出来。借鉴了一位网友的思想,他是使用Java编写的,代码非常简洁。他的思想是从罗马数字中找到规律1-3是I, 4是IV, 5是V....其实1-100中只存在几个特殊的区间,然后分别追加。我看了个半懂,开始用C编写。
思路:找到1-100间的特殊区间,使用if语句判断输入的数字是否在这个区间,如果在就减去这个区间最小值给这个数字(比如区间1-3,如果输入3,则3-1=2,把2给需下一次判断的值)然后循环再判断,直到这个值为0。
下边是我写的代码,欢迎各位朋友指点。
 1#include <stdio.h>
 2
 3int main()
 4{
 5    int digit = 1;
 6    int roman;
 7    
 8    while ( digit <= 100 )
 9    {
10        printf( "%d\t", digit );
11        roman = digit;
12        
13        while ( roman > 0 )
14        {
15            if ( roman == 100 )
16            {
17                printf( "C" );
18                roman -= 100;
19            }

20            else if ( roman < 100 && roman >= 90 )
21            {
22                printf( "XC" );
23                roman -= 90;
24            }

25            else if ( roman < 90 && roman >= 50 )
26            {
27                printf( "L" );
28                roman -= 50;
29            }

30            else if ( roman < 50 && roman >= 49 )
31            {
32                printf( "IL" );
33                roman -= 49;
34            }

35            else if ( roman < 49 && roman >= 40 )
36            {
37                printf( "XL" );
38                roman -= 40;
39            }

40            else if ( roman < 40 && roman >= 10 )
41            {
42                printf( "X" );
43                roman -= 10;
44            }

45            else if ( roman < 10 && roman >= 9 )
46            {
47                printf( "IX" );
48                roman -= 9;
49            }

50            else if ( roman < 9 && roman >= 5 )
51            {
52                printf( "V" );
53                roman -= 5;
54            }

55            else if ( roman < 5 && roman >= 4 )
56            {
57                printf( "IV" );
58                roman -= 4;
59            }

60            else if ( roman < 4 && roman >= 1 )
61            {
62                printf( "I" );
63                roman -= 1;
64            }

65            else
66                printf( "must between 1~100 !" );
67        }

68
69        printf( "\n" );
70        digit++;
71    }

72    return 0;
73}

原文地址:https://www.cnblogs.com/iPeterRex/p/1242620.html