`
superwulei
  • 浏览: 108573 次
  • 性别: 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 }

 

分享到:
评论

相关推荐

    0~100℃数字温度计(8位256_ADC)电路multisim源文件

    本篇将详细介绍一个基于8位256_ADC的0~100℃数字温度计电路设计,以及如何利用Multisim软件进行电路仿真。 首先,我们需要理解8位256_ADC(Analog-to-Digital Converter)的工作原理。ADC是模拟信号到数字信号转换...

    温度测量_pt100_C语言程序_TMP35_温度测量_stc12c5108s2_

    在这个项目中,我们使用了STC12C5108S2单片机来设计一个温度测量系统,它能够读取并处理来自两种不同温度传感器——TMP35和PT100的信号。本文将详细讲解这一系统的设计原理、C语言编程实现以及测试结果。 首先,让...

    一个C语言写的C语言词法分析程序

    这个"一个C语言写的C语言词法分析程序"是一个用于分析C语言源代码的特定程序,它可以帮助我们理解C语言源代码的结构并为后续的语法分析阶段准备数据。 首先,我们需要理解词法分析的基本概念。词法分析器,通常称为...

    从键盘上输入一位整数,当输入1~7时,显示下面对应的英文星期名称的缩写。

    从键盘上输入一位整数,当输入1~7时,显示下面对应的英文星期名称的缩写。 1:MON. 2:TUE. 3:WED. 4:THU 5:FRI. 6:SAT 7:SUN 输入其他数字时提示用户重新输入,输入数字0时程序结束。程序运行结果如图。 提示: 声明两...

    罗马数字与阿拉伯数字转换器

    1. **罗马数字**:罗马数字源自古罗马的计数系统,由七个符号组成:I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。这些符号通过组合和放置规则来表示不同数值。例如,II表示2,IV表示4,IX表示...

    用C语言编简单计算器程序

    综上所述,上述代码示例展示了如何利用C语言实现一个基本的计算器程序,涵盖了变量声明、输入处理、条件判断与执行等关键环节,并提供了错误处理机制。这不仅是一次对C语言基础知识的应用练习,也为后续学习和项目...

    c语言100程序实例

    在这个过程中,三层嵌套循环的使用是关键,它保证了百位、十位和个位能够独立且全面地遍历每一个可能的数字组合。同时,通过条件判断语句,程序确保了每个位上数字的唯一性,避免了重复数字的出现。这种简单直观的...

    100个经典C语言程序.doc

    此程序在前一个程序的基础上增加了绘制一条直线的逻辑,直线的方程为f(x) = 45 * (y - 1) + 31。程序通过比较余弦曲线和直线的坐标,确定在哪些点上两者相交,然后在这些点打印"+",在其他位置打印相应的图形符号。 ...

    100个C语言小程序(详细源码说明)

    该程序的目标是找出满足特定条件的所有整数,即这些整数加上100后能够构成一个完全平方数,同时加上268也能构成另一个完全平方数。 **关键知识点**: 1. **数学函数**:利用`sqrt`函数来计算平方根。 ```c #...

    使用C语言写的延时程序

    为了获得更精确的延时,开发者需要建立一个数据表,记录不同a、b、c值对应的延时时间和误差。比如: | 延时时间 | a 的值 | b 的值 | c 的值 | 延时误差(us) | |---------|-------|-------|-------|-------------...

    c语言-c语言编程基础之leetcode题解第13题罗马数字转整数.zip

    1. 初始化一个字典或数组,存储罗马数字和它们对应的整数值。 2. 创建一个变量`result`用于存储最终的整数值,初始值设为0。 3. 遍历罗马数字字符串,每次取两个字符,比较它们的值。 - 如果当前字符的值小于下一个...

    超经典c语言小程序 100例

    1. **数学问题与编程结合**:该程序解决了一个数学问题,即找到一个整数,使得它加100和加268后都是完全平方数。程序通过循环遍历整数,使用`sqrt`函数计算平方根,并通过平方根的平方与原数比较来判断是否为完全...

    Java罗马数字转整数.zip

    罗马数字是一种古老的数字表示方法,它由七个基本符号组成:I、V、X、L、C、D和M。每个符号代表一定的数值,通过组合不同的符号可以表示任意正整数。罗马数字转整数是一道常见的算法问题,可以通过编写程序来实现。 ...

    c语言程序设计课后习题答案

    谭浩强的《C语言程序设计》课后习题答案,针对每个章节的重点难点提供了详尽的解答,对于自学或复习C语言来说,是一个宝贵的资源。通过解答这些习题,你可以检验自己的学习效果,找出不足,进而深化对C语言的理解。...

    用C语言写的G代码读取程序

    1. **文件读取**:程序首先通过`OpenDialog1.Execute`函数打开一个文件选择对话框,允许用户选择一个G代码文件。选定文件后,使用`assignfile`函数将文件指针指向该文件。 2. **逐行读取**:利用`while not eof`循环...

    通过C语言编写的猜数字游戏

    对于正确位置的数字,我们可以使用两个指针,一个指向目标数字,一个指向猜测数字,同时移动,如果对应位相同则计数。 此外,游戏还需要处理输入验证,确保玩家输入的是四位整数。我们可以使用`scanf()`函数读取...

    C语言趣味程序100例

    通过这100个精心挑选的问题和对应的程序代码,学习者可以深入理解C语言的精髓,并在实践中提升编程能力。 1. **C语言基础** - 变量与数据类型:C语言中的基本数据类型包括整型、浮点型、字符型等,理解它们的存储...

    罗马数字转换为大写汉字

    本文将详细介绍一个名为“CnumToHan”的类,它专门用于将罗马数字或阿拉伯数字转换为大写汉字。 首先,让我们理解罗马数字的基本概念。罗马数字是一种古老的数字表示方式,由七个不同的符号(I, V, X, L, C, D, M)...

    单片机用汇编写两个数码管显示0到99循环的程序

    本文将详细解读一个使用汇编语言编写的单片机程序,该程序的功能是在两个数码管上循环显示从0到99的数字。通过对程序代码的逐行分析,我们将了解其工作原理,并探讨其中涉及的关键技术点,包括但不限于单片机的基本...

Global site tag (gtag.js) - Google Analytics