// 罗马字符串转数字 // VC2008通过 #include "stdafx.h" #include<stdio.h> // 罗马字符串转数字 int GetNumber(const char* strNum) { int nValue = 0; while(*strNum != '\0') { int nN = 0; char c = *(strNum+1); switch(*strNum) { case 'I': nN = ((c != 'V' && c!= 'X') ? 1 : -1); break; case 'V': nN = 5; break; case 'X': nN = ((c != 'L' && c != 'C') ? 10 : -10); break; case 'L': nN = 50; break; case 'C': nN = ((c != 'D' && c != 'M') ? 100 : -100); break; case 'D': nN = 500; break; case 'M': nN = 1000; break; } nValue += nN; ++strNum; } return nValue; } int _tmain(int argc, _TCHAR* argv[]) { char strData[] = "CMXCIX"; int nValue = GetNumber(strData); printf("%s = %d\n", strData, nValue); return 0; }