Description | ||||||||||||||||||
题目描述 小明非常高兴你能帮他处理那些罗马数字,他想学着自己写罗马数字,但是他不知道自己到底写对了没有。 请你帮他写个程序,能正确地将10进制数字转换成罗马数字,以便他能进行核对。 罗马数字是使用字母组合表示数字的。不同的字母表示的值如下表:
输入 每行输入一个整数n,1≤n≤10,000。 输出 每行输出对应十进制整数的罗马数字。 样例输入 1 2 3 4 9999 10000 样例输出 I II III IV MMMMMMMMMCMXCIX MMMMMMMMMM |
思路分析:分类讨论就完事了
#include<stdio.h>
#include <iostream>
int main()
{
int n;
int count, count2;
int temp;
while (scanf("%d", &n) != EOF) {
if (n>=1000) {
count = n / 1000;
for (int i = 0; i < count; i++) {
printf("M");
}
n = n - (count * 1000);
}
if(n>=900&&n<1000)
{
printf("CM");
count = n / 100;
n = n - (count * 100);
}
else if (n >= 500 && n < 900) {
printf("D");
count = n / 100;
count2 = count - 5;
for (int i = 0; i < count2; i++) {
printf("C");
}
n = n - (count * 100);
}
else if (n >= 400 && n < 500) {
printf("CD");
n = n - 400;
}
else if (n >= 100 && n < 400) {
count = n / 100;
for (int i = 0; i < count; i++) {
printf("C");
}
n = n - (count * 100);
}
if (n >= 90 && n < 100) {
printf("XC");
n = n - 90;
}
else if (n >= 50 && n < 90) {
printf("L");
count = n / 10;
count2 = count - 5;
for (int i = 0; i < count2; i++) {
printf("X");
}
n = n - (count * 10);
}
else if (n >= 40 && n < 50) {
printf("XL");
n = n - 40;
}
else if (n >= 10 && n < 40) {
count = n / 10;
for (int i = 0; i < count; i++) {
printf("X");
}
n = n - (count * 10);
}
if (n == 9) {
printf("IX");
}
else if (n >= 5 && n < 9) {
printf("V");
count2 = n - 5;
for (int i = 0; i < count2; i++) {
printf("I");
}
}
else if (n == 4) {
printf("IV");
}
else if (n >= 1 && n < 4) {
for (int i = 0; i < n; i++) {
printf("I");
}
}
printf("\n");
}
}