题目要求:
输入代码:
#include<iostream>
using namespace std;
int main()
{
int i,j,n,k;
int num[7]= {1, 5,10,50,100,500,1000}; //罗马数字转换模板
char str[7]= {'I','V','X','L','C','D','M'};
int a[7];//定义一个转换成十进制的保存数组
char pL[7];//要输入的罗马数字
cin>>n;
for(i=0; i<n; i++)
{
int sum=0;
for(j=0; j<7; j++)
{
a[j]=-1;
}
cin>>pL; //输入一个罗马数字
for(j=0; pL[j]!='\0'; j++)//将罗马数字转化为详细数值
{
for(k=0; k<7; k++)
{
if(pL[j]==str[k])
{
a[j]=num[k];
break;
}
}
}
for(j=0; j<7; j++)//求终于结果
{
if(a[j]==-1)
break;
if(a[j]<a[j+1])
{
sum+=a[j+1]-a[j];
j++;
continue;
}
else
sum+=a[j];
}
cout<<sum<<endl;
}
return 0;
}
执行结果: