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

 

分享到:
评论

相关推荐

    实现罗马与阿拉伯数字互转(上机笔试题)

    罗马数字是一种古老的计数系统,主要由七个不同的符号组成:I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。罗马数字的规则包括加法和减法,如IV代表4(1减去5),IX代表9(10减去1),XL代表...

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

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

    matlab开发-罗马数字阿拉伯数字转换

    `roman2int`函数接收一个罗马数字字符串,通过识别罗马数字的规则将其转换为对应的整数值。罗马数字由基本数字I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)组成,其值可以通过位置和组合规则...

    温度测量_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个

    例如,第一个程序中使用了if语句来判断三个数字是否互不相同,第二个程序中使用了if-else语句来判断奖金的计算方式。这些条件语句和循环的使用对于C语言初学者来说非常重要,需要理解它们的使用场景和限制。 4. ...

    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语言100道题.docx

    【程序3】是一个寻找特定整数的问题,该整数加上100后是一个完全平方数,再加168也是一个完全平方数。程序通过循环遍历从1到100000的所有整数,对每个数进行两次开方运算,检查加100和加268后是否为完全平方数。这里...

    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语言经典程序大全进行总结,分别是判断闰年、输出等级和计算等级。 1. 判断闰年 判断...

    C语言趣味程序100例

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

    罗马数字转换为大写汉字

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

    经典c程序100例~~~~~~~~~~~~~~

    这是一个使用C语言编写的程序,目标是计算并打印出所有由数字1、2、3、4组成的不重复的三位数。程序通过三重循环实现,遍历所有可能的组合,并使用if语句检查当前组合(i、j、k)是否互不相同,以确保没有重复的数字...

Global site tag (gtag.js) - Google Analytics