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

本文介绍了一种使用C语言将1至100之间的阿拉伯数字转换为罗马数字的方法。通过定义特殊数值区间并利用if语句进行逐级判断与递减处理,实现了数字的有效转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在做一道课后练习题的时候遇到这么一道棘手的题?先到网上搜罗了一下关于罗马数字的相关知识,熟悉了一下罗马数字的写法。然后还是没有想出来。借鉴了一位网友的思想,他是使用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 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值