#include<iostream> #include<stack> 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; stack<int>nValue; for (int i = 0; i < str_value.length(); i++) { const char cc = str_value.at(i); nValue.push((cc - '0')); } stack<string>cn; 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(); } //删除零 stack<string>cn2; 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]); } } stack<string>cn3; 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++实现整数值转中文大写
原创
©著作权归作者所有:来自51CTO博客作者哈夫猿的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:C++11智能指针和引用
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
实例006——实现数字金额的中文大写转换
实例006——实现数字金额的中文大写转换
#include 应用程序 #endif -
Java货币金额转换为大写形式
Java货币金额转换为大写形式package...
特殊字符 java 占位符 四舍五入 数字转换 -
用JavaScript将数字转换为大写金额
用JavaScript将数字转换为大写金额
git i++ 数字转换 javascript 知识