C语言实现阿拉伯数字转罗马数字(附代码及详解)
C语言实现阿拉伯数字转罗马数字
本文将介绍如何使用C语言将大于0小于1000的阿拉伯数字转换为罗马数字,并提供完整的代码和详细解释。
罗马数字表示规则
- 个位数: I,II,III,IV,V,VI,VII,VIII,IX
- 十位数: X,XX,XXX,XL,L,LX,LXX,LXXX,XC
- 百位数: C,CC,CCC,CD,D,DC,DCC,DCCC,CM
C语言代码实现
#include <stdio.h>
void convertToRoman(int n) {
const char *romanOnes[] = {'', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'};
const char *romanTens[] = {'', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'};
const char *romanHundreds[] = {'', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'};
int ones = n % 10;
int tens = (n / 10) % 10;
int hundreds = n / 100;
printf('%s%s%s\n', romanHundreds[hundreds], romanTens[tens], romanOnes[ones]);
}
int main() {
int n;
printf('请输入一个整数:');
scanf('%d', &n);
if (n > 0 && n < 1000) {
printf('转换后的罗马数字为:');
convertToRoman(n);
} else {
printf('输入的整数必须大于0小于1000。\n');
}
return 0;
}
代码解释
- 定义罗马数字数组:
- 使用三个字符串数组
romanOnes[],romanTens[],romanHundreds[]分别存储个位数、十位数和百位数对应的罗马数字表示。
- 使用三个字符串数组
- 拆分数字:
- 使用求余运算符
%和整除运算符/将输入的整数n拆分为个位数 (ones)、十位数 (tens) 和百位数 (hundreds)。
- 使用求余运算符
- 获取对应罗马数字:
- 根据计算出的个位数、十位数和百位数,从对应的数组中获取相应的罗马数字字符串。
- 拼接输出:
- 使用
printf()函数将获取到的三个罗马数字字符串拼接在一起并输出。
- 使用
示例输入和输出
输入:
123
输出:
转换后的罗马数字为:CXXIII
总结
本文介绍了使用C语言将阿拉伯数字转换为罗马数字的算法和代码实现,并提供了详细的代码解释。希望对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/bcuT 著作权归作者所有。请勿转载和采集!