#include <iostream> #include <Windows.h> #include <tchar.h> #include <string> using namespace std; #ifdef _UNICODE | UNICODE #define STRING wstring #else #define STRING string #endif void TransToStr(int nNum,STRING &str) { STRING strRead1[10] = {_T("零"), _T("一"), _T("二"), _T("三"), _T("四"), _T("五"), _T("六"), _T("七"), _T("八"), _T("九")}; STRING strRead2[10] = {_T(""), _T(""), _T("十"), _T("百"), _T("千"), _T(""), _T("十"), _T("百"), _T("千"), _T("亿")}; int iTemp, cnt = 1; iTemp = nNum < 0 ? -nNum : nNum; if(nNum < 0) str += _T("负"); bool bOutZero = false;//是否输出零的布尔变量 int iZeroCnt = 0; int num[30]; while (iTemp >= 0) { if (iTemp < 10) { num[cnt] = iTemp; break; } else { num[cnt] = iTemp%10; iTemp /= 10; } ++cnt; } if (cnt == 1) str += strRead1[num[cnt]]; else { for (int i = cnt; i > 0; --i) { if(num[i] == 0) { bOutZero = true; ++iZeroCnt; } else { if (bOutZero) str += _T("零"); bOutZero = false; --iZeroCnt; if( 2 != cnt || i != cnt || 1 != num[i] ) //添加上这一句, 让"15",显示"十五",不是"一十五" str += strRead1[num[i]]; str += strRead2[i]; } if (i == 5 && iZeroCnt < 3) str += _T("万"); } } } void wmain(int argc, TCHAR* argv) { cout << "请输入一个整数:"; int a; cin >> a; STRING buf; TransToStr(a,buf); cout<<buf<<endl;// 有_UNICODE 或UNICODE时,应注释掉该句 }