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

来源:互联网 发布:湖北大数据问责汇报 编辑:程序博客网 时间:2024/05/22 03:15

 题目要求:




输入代码:

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

运行结果:



0 0
原创粉丝点击