原题链接:蓝桥杯基础练习VIP-数的读法
参考代码:
#include<iostream> #include<string> using namespace std; int main() { string num; string read = ""; string s; int d = 0;//用来依次访问单位数组中的每一个单位 string danwei[5] = { "","shi ","bai ","qian ","wan "}; cin >> num; for (int i = num.length() - 1, sign = 0;i >= 0;i--, sign++)//从个位数向依次向高位读,sign自增可记录当前位置 { if ((sign == 4 || sign == 8)) { //对于十万以上的数,单位特殊处理 d = 0; sign == 4 ? s = "wan " : s = "yi "; } switch (num[i]-'0') { case 0: read = s + read;d++; if (num[i] - '0' == 0 && (sign == 0 || sign == 4 || sign == 8))//个位、万位、亿位的0不读 break; if (num[i + 1] - '0' != 0 ) { //连续的0不读 read = "ling " + read; } break; case 1: if (sign == 5 || sign == 9) //十万位和十亿位的1不读 read = danwei[d++] + s + read; else read = "yi " + danwei[d++] + s + read; break; case 2:read = "er " + danwei[d++] + s + read;break; case 3:read = "san " + danwei[d++] + s + read;break; case 4:read = "si " + danwei[d++] + s + read;break; case 5:read = "wu " + danwei[d++] + s + read;break; case 6:read = "liu " + danwei[d++] + s + read;break; case 7:read = "qi " + danwei[d++] + s + read;break; case 8:read = "ba " + danwei[d++] + s + read;break; case 9:read = "jiu " + danwei[d++] + s + read;break; default: break; } s = ""; } cout << read << endl; return 0; }
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复