数字转罗马数字(超详细,超简单)

上一篇博客实现了罗马数字转数字,这篇博客我们实现输入数字转换成罗马数字。

问题要求,输入一个数字,转换成罗马数字。

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000

下面我们列举一些罗马数字,就能根据这些特点发现规律。

  1. 1:I
  2. 2:II
  3. 3:III
  4. 4:IV
  5. 5:V
  6. 6:VI
  7. 7:VII
  8. 8:VIII
  9. 9:IX
  10. 10:X
  11. 11:XI
  12. 12:XII
  13. 13:XIII
  14. 14:XIV
  15. 15:XV
  16. 16:XVI
  17. 17:XVII
  18. 18:XVIII
  19. 19:XIX
  20. 20:XX
  21. 21:XXI
  22. 22:XXII
  23. 23:XXIII
  24. 24:XXIV
  25. 25:XXV
  26. 26:XXVI
  27. 27:XXVII
  28. 28:XXVIII
  29. 29:XXIX
  30. 30:XXX
  31. 31:XXXI
  32. 32:XXXII
  33. 33:XXXIII
  34. 34:XXXIV
  35. 35:XXXV
  36. 36:XXXVI
  37. 37:XXXVII
  38. 38:XXXVIII
  39. 39:XXXIX
  40. 40:XL
  41. 41:XLI
  42. 42:XLII
  43. 43:XLIII
  44. 44:XLIV
  45. 45:XLV
  46. 46:XLVI
  47. 47:XLVII
  48. 48:XLVIII
  49. 49:XLIX
  50. 50:L
  51. 51:LI
  52. 52:LII
  53. 53:LIII
  54. 54:LIV
  55. 55:LV
  56. 56:LVI
  57. 57:LVII
  58. 58:LVIII
  59. 59:LIX
  60. 60:LX
  61. 61:LXI
  62. 62:LXII
  63. 63:LXIII
  64. 64:LXIV
  65. 65:LXV
  66. 66:LXVI
  67. 67:LXVII
  68. 68:LXVIII
  69. 69:LXIX
  70. 70:LXX
  71. 71:LXXI
  72. 72:LXXII
  73. 73:LXXIII
  74. 74:LXXIV
  75. 75:LXXV
  76. 76:LXXVI
  77. 77:LXXVII
  78. 78:LXXVIII
  79. 79:LXXIX
  80. 80:LXXX
  81. 81:LXXXI
  82. 82:LXXXII
  83. 83:LXXXIII
  84. 84:LXXXIV
  85. 85:LXXXV
  86. 86:LXXXVI
  87. 87:LXXXVII
  88. 88:LXXXVIII
  89. 89:LXXXIX
  90. 90:XC
  91. 91:XCI
  92. 92:XCII
  93. 93:XCIII
  94. 94:XCIV
  95. 95:XCV
  96. 96:XCVI
  97. 97:XCVII
  98. 98:XCVIII
  99. 99:XCIX
  100. 100:C
  101. 101:CI
  102. 102:CII
  103. 103:CIII
  104. 104:CIV
  105. 105:CV
  106. 106:CVI
  107. 107:CVII
  108. 108:CVIII
  109. 109:CIX
  110. 110:CX
  111. 111:CXI
  112. 112:CXII
  113. 113:CXIII
  114. 114:CXIV
  115. 115:CXV
  116. 116:CXVI
  117. 117:CXVII
  118. 118:CXVIII
  119. 119:CXIX
  120. 120:CXX
  121. 121:CXXI
  122. 122:CXXII
  123. 123:CXXIII
  124. 124:CXXIV
  125. 125:CXXV
  126. 126:CXXVI
  127. 127:CXXVII
  128. 128:CXXVIII
  129. 129:CXXIX
  130. 130:CXXX
  131. 131:CXXXI
  132. 132:CXXXII
  133. 133:CXXXIII
  134. 134:CXXXIV
  135. 135:CXXXV
  136. 136:CXXXVI
  137. 137:CXXXVII
  138. 138:CXXXVIII
  139. 139:CXXXIX
  140. 140:CXL
  141. 141:CXLI
  142. 142:CXLII
  143. 143:CXLIII
  144. 144:CXLIV
  145. 145:CXLV
  146. 146:CXLVI
  147. 147:CXLVII
  148. 148:CXLVIII
  149. 149:CXLIX
  150. 150:CL
  151. 151:CLI
  152. 152:CLII
  153. 153:CLIII
  154. 154:CLIV
  155. 155:CLV
  156. 156:CLVI
  157. 157:CLVII
  158. 158:CLVIII
  159. 159:CLIX
  160. 160:CLX
  161. 161:CLXI
  162. 162:CLXII
  163. 163:CLXIII
  164. 164:CLXIV
  165. 165:CLXV
  166. 166:CLXVI
  167. 167:CLXVII
  168. 168:CLXVIII
  169. 169:CLXIX
  170. 170:CLXX
  171. 171:CLXXI

这里我们实现的思路就是使用循环,当循环的时候开始匹配,看其数字的大小,如果匹配,这里我们就可以将其替换出来,然后数字进行减value值。

下面就是代码实现。

#include <iostream>
#include <string>
#include<vector>
using namespace std;

string Romannum(int num) {

    // 定义罗马数字的符号和对应的值
    vector<int> values = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
    vector<string> symbols = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
    string result;
    for (int i = 0; i < values.size() - 1; i++) {
        while (num > values[i]) {
            result += symbols[i];
            num -= values[i];
        }

  }

    return result;
}


int main() {
    int num;
    cin >> num;
    cout << Romannum(num) << endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值