`
superwulei
  • 浏览: 106295 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何使用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
 3 int  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 }

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics