题目描述 小明非常喜欢做a+b的算术题,为此他搜集了很多的练习题。 今天他拿到一个很古老的练习册,上面是使用罗马数字表示的。 小明不太擅长处理罗马数字,请你帮帮他,告诉他罗马数字对应的十进制数的值。 罗马数字是使用字母组合表示数字的,不同的字母表示的值如下表:
输入 每行输入一个罗马数字,字符串长度不超过25。测试数据保证是合法的罗马数字。 输出 每行输出对应罗马数字的十进制整数。 样例输入 MM CM MCD MDX XCIX 样例输出 2000 900 1400 1510 99 | ||||||||||||||||||
注意输入,需要加上"!=EOF",否则会死循环。
代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
char a[26];
while (scanf_s("%s", a, sizeof(a))!=EOF) {
int sum = 0, i;
a[25] = '\0';
int len = strlen(a);
int b[25];
memset(b, 0, sizeof(b));
for (i = 0; i < len; i++) {
if (a[i] == 'I')b[i] = 1;
else if (a[i] == 'V')b[i] = 5;
else if (a[i] == 'X')b[i] = 10;
else if (a[i] == 'L')b[i] = 50;
else if (a[i] == 'C')b[i] = 100;
else if (a[i] == 'D')b[i] = 500;
else b[i] = 1000;
}
for (i = 0; i < len; i++) {
if (b[i] < b[i + 1])b[i] = -b[i];
sum += b[i];
}
printf("%d\n", sum);
}
return 0;
}