罗马字符转化为阿拉伯数字

// test22.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> using namespace std; #define l_int long int //宏定义的长整型 l_int get_value(char ch){ //单个罗马字符与其值的匹配 switch(ch){ case 'I': return 1; case 'V': return 5; case 'X': return 10; case 'L': return 50; case 'C': return 100; case 'D': return 500; case 'M': return 1000; default: return NULL; } } l_int converse(){ char * input=(char *)malloc(20*sizeof(char)); //利用字符数组存储输入的罗马数字 cout<<"input correct Roman numerals: "; cin>>input; l_int value=0; char * cur=input; while(*cur){ //对cur指针是否指到了字符串尾部的判断 if(*(cur+1)){ if(get_value(*cur)>=get_value(*(cur+1))){//当前的罗马字符值大于等于其后罗马字符值时直接计算 value+=get_value(*cur); cur++; } else{ //当前罗马字符小于其后字符时的情况,后值减前值 value+=get_value(*(cur+1))-get_value(*cur); cur+=2; } } else{ //没有后续罗马字符时直接跳出 value+=get_value(*cur); break; } } cout<<"Roman numeral's values is "<<value<<endl; return value; } void main() { /* 测试用例:输入MMMMCMXCIX 返回4999 时间仓促没有对输入的罗马字符是否正确做完美的判断,见谅 */ converse(); }  

你可能感兴趣的:(c,测试,null,存储,input)