#include
#include
using namespace std;
string zhCN[] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
//正常记账范围内数值
string zhUNIT[] = { "拾","佰","仟","万","拾","佰","仟","亿" ,"拾","佰","仟","万", "拾","佰","仟"};
int main()
{
//12,345 ,678, 902
while (1) {
char cc[32];
scanf("%s", cc);
string str_value(cc);
cout << "input value is " << str_value.c_str() << endl;
stacknValue;
for (int i = 0; i < str_value.length(); i++)
{
const char cc = str_value.at(i);
nValue.push((cc - '0'));
}
stackcn;
int ii = 0;
int zcount = 0;
while (!nValue.empty())
{
int value = nValue.top();
cn.push(zhCN[value]);
cn.push(zhUNIT[ii]);
nValue.pop();
ii++;
}
if (!cn.empty())
{
cn.pop();
}
//删除零
stackcn2;
while (!cn.empty())
{
while (cn.top() != zhCN[0])
{
cn2.push(cn.top());
cn.pop();
if (cn.empty())
{
break;
}
}
if (cn.empty())
{
break;
}
//找到零结束
while (cn.top() == zhCN[0])
{
cn.pop();
if (cn.empty())
{
break;
}
if (cn.top() == zhUNIT[3])//保留万
{
cn2.push(zhUNIT[3]);
}
if (cn.top() == zhUNIT[7])//保留亿
{
cn2.push(zhUNIT[7]);
}
cn.pop();
}//找到零结束
if (!cn.empty())
{
cn2.push(zhCN[0]);
}
}
stackcn3;
string newstr = "";
while (!cn2.empty())
{
cn3.push(cn2.top());
cn2.pop();
}
while (!cn3.empty())
{
newstr += cn3.top();
cn3.pop();
}
cout << "newstr is " << newstr.c_str() << endl;
}
return 0;
}
本文名称:C++实现整数值转中文大写
路径分享:
http://chengdu.cdxwcx.cn/article/peopeh.html