您的位置:首页 > 其它

OJ刷题---罗马数字转十进制

2015-08-24 09:41 239 查看
题目要求:









输入代码:

#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;
}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: