版权声明:小白见解,谁看得上 https://blog.csdn.net/weixin_43368425/article/details/83216696
闲话不多说,请看题
个人认为此题的难点只在于读懂题意,主要就是明白字符与阿拉伯数字的转化关系,但是作为新手来说,还是有几点问题需要注意:
1 比较大的数组应尽量声明在main函数外,否则程序可能无法运行;
2 使用scanf("%s")输入字符串时,需注意。它碰到空格,TAB,以及换行符就会停下来。
3 可以尽量把变量名声明长一点,增强其可读性,但是在不断的学习中会见到一些比较规范化的变量名,就如len常用来表示字符串的长度。
OK , 代码如下
#include<stdio.h>
#include<string.h>
char s[100];
//设置一个数组储存所输入的字符串
int main()
{
while(scanf("%s", s) != EOF)
{
int len = strlen(s), result = 0;
//得到字符串的长度,以设置循环进行计算
for(int i = 0; i < len; i++)
{
if(s[i] == 'I' && s[i+1] == 'V')
result -= 1;
else if(s[i] == 'I' && s[i+1] == 'X')
result -= 1;
else if(s[i] == 'X' && s[i+1] == 'L')
result -= 10;
else if(s[i] == 'X' && s[i+1] == 'C')
result -= 10;
else if(s[i] == 'C' && s[i+1] == 'D')
result -= 100;
else if(s[i] == 'C' && s[i+1] == 'M')
result -= 100;
else if(s[i] == 'I')
result += 1;
else if(s[i] == 'V')
result += 5;
else if(s[i] == 'X')
result += 10;
else if(s[i] == 'L')
result += 50;
else if(s[i] == 'C')
result += 100;
else if(s[i] == 'D')
result += 500;
else if(s[i] == 'M')
result += 1000;
}
printf("%d\n",result);
}
return 0;
}
注 : 本篇文章所用的两张图片均截自ToRe_前辈的博客。