XTU 1217 A+B VII

本文介绍了一个帮助小明将10进制转换为罗马数字的程序,通过解析规则演示如何用C语言实现,并提供样例输入输出。适合初学者理解罗马数字表示法和编程应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

题目描述

小明非常高兴你能帮他处理那些罗马数字,他想学着自己写罗马数字,但是他不知道自己到底写对了没有。 请你帮他写个程序,能正确地将10进制数字转换成罗马数字,以便他能进行核对。 罗马数字是使用字母组合表示数字的。不同的字母表示的值如下表:

字母
I1
V5
X10
L50
C100
D500
M1000

表示规则如下:

  • 数字的值是为所有字母的值的和。比如说II=2,XIII=13
  • 没有0,比如207使用两个100,1个5,2个1表示,即CCVII
  • 字母应该按值的降序从左到右排列,但为了避免太多的重复(比如IIII),使用减法来缩短式子
    1. 使用I在V和X前,表示4(IV)和9(IX)
    2. 使用X在L和C前,表示40(XL)和90(XC)
    3. 使用C在D和M前,表示400(CD)和900(CM)

输入

每行输入一个整数n,1≤n≤10,000。

输出

每行输出对应十进制整数的罗马数字。

样例输入

1
2
3
4
9999
10000

样例输出

I
II
III
IV
MMMMMMMMMCMXCIX
MMMMMMMMMM

注意复制粘贴时的改动 

代码如下:

#include<stdio.h>
int main()
{
	int sum;
	while (scanf_s("%d", &sum)!=EOF) {
		int i, num;
		if (sum >= 1000) { 
			num = sum / 1000;
			sum = sum % 1000;
			for (i = 0; i < num; i++)printf("M");
		}

		num = sum / 100;
		sum %= 100;
		if (num == 9)printf("CM");
		else if (num == 4)printf("CD");
		else if (num >= 5) {
			printf("D");
			num -= 5;
			for (i = 0; i < num; i++)printf("C");
		}
		else 
			for (i = 0; i < num; i++)printf("C");

		num = sum / 10;
		sum %= 10;
		if (num == 9)printf("XC");
		else if (num == 4)printf("XL");
		else if (num >= 5) {
			printf("L");
			num -= 5;
			for (i = 0; i < num; i++)printf("X");
		}
		else
			for (i = 0; i < num; i++)printf("X");

		if (sum == 9)printf("IX");
		else if (sum == 4)printf("IV");
		else if (sum >= 5) {
			printf("V");
			sum -= 5;
			for (i = 0; i < sum; i++)printf("I");
		}
		else
			for (i = 0; i < sum; i++)printf("I");
		printf("\n");
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值