`
superwulei
  • 浏览: 108630 次
  • 性别: 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。程序通过比较余弦曲线和直线的坐标,确定在哪些点上两者相交,然后在这些点打印"+",在其他位置打印相应的图形符号。 ...

    使用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语言的理解。...

    罗马数字转换为大写汉字

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

    单片机八个按键控制数码管显示对应序号代码及仿真

    例如,如果按下第一个按键,数码管将显示数字1;按下第二个按键,显示2,以此类推。在实际编程中,我们可以创建一个数组来存储按键序号,每次按键事件发生时更新这个数组,并将结果显示在数码管上。 仿真环节是验证...

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

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

    经典的c语言程序100例.doc

    【程序 1】展示了如何用C语言实现一个简单的排列组合问题。这个程序通过三重循环遍历所有可能的三位数组合,确保不重复且没有相同的数字。程序分析中提到,可以将1、2、3、4这四个数字分别填入百位、十位和个位,...

    一个语法分析程序(C语言)

    本文将详细探讨一个用C语言编写的语法分析程序的相关知识点。 首先,我们要了解语法分析的基本概念。语法分析是编译器设计中的第二阶段,紧接着词法分析。它的主要任务是对词法分析生成的单词序列(Token流)进行...

    1到10的英文单词

    该题目要求编写一段C语言代码,实现的功能是:当用户输入1到10之间的任意一个数字时,程序应该输出对应的英文单词,且首字母大写。例如,输入1,程序应输出"One";输入5,程序应输出"Five"。如果用户输入的不是1到10...

Global site tag (gtag.js) - Google Analytics