2021年下学期《C语言程序设计》作业10-2013年下学期期末考试
Description | ||||||||||||||||||
题目描述 小明非常高兴你能帮他处理那些罗马数字,他想学着自己写罗马数字,但是他不知道自己到底写对了没有。 请你帮他写个程序,能正确地将10进制数字转换成罗马数字,以便他能进行核对。 罗马数字是使用字母组合表示数字的。不同的字母表示的值如下表:
输入 每行输入一个整数n,1≤n≤10,000。 输出 每行输出对应十进制整数的罗马数字。 |
这个题思路很简单,照着题意模拟就行。
#include<stdio.h> //坑
//#include<math.h> //坑
//#include<algorithm>
using namespace std;
int main() {
int n;
while (scanf("%d", &n) != EOF) {
int cache;
cache = n / 1000;
for (int i = 1; i <= cache; i++) {
printf("M");
n -= 1000;
}
if (n >= 900) {
printf("CM");
n -= 900;
}
cache = n / 500;
for (int i = 1; i <= cache; i++) {
printf("D");
n -= 500;
}
if (n >= 400) {
printf("CD");
n -= 400;
}
cache = n / 100;
for (int i = 1; i <= cache; i++) {
printf("C");
n -= 100;
}
if (n >= 90) {
printf("XC");
n -= 90;
}
cache = n / 50;
for (int i = 1; i <= cache; i++) {
printf("L");
n -= 50;
}
if (n >= 40) {
printf("XL");
n -= 40;
}
cache = n / 10;
for (int i = 1; i <= cache; i++) {
printf("X");
n -= 10;
}
if (n >= 9) {
printf("IX");
n -= 9;
}
cache = n / 5;
for (int i = 1; i <= cache; i++) {
printf("V");
n -= 5;
}
if (n >= 4) {
printf("IV");
n -= 4;
}
cache = n / 1;
for (int i = 1; i <= cache; i++) {
printf("I");
}
puts("");
}
}