解题思路:
好麻烦,好吧,做了一个半小时,最后还运行错误了,去官网测数据才发现有很多小小的细节你改变了一个另一个细节就gg了,难度不大,但是超级烦
注意事项:
十的判断
0的判断
参考代码:
#include<cstdio>
#include<string>
#include <map>
#include <iostream>
using namespace std;
string num[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
string cha[50];
int cur = 0;
void zuzhuang(int m);
void output(int m);
int main()
{
int num;
scanf("%d",&num);
zuzhuang(num);
for(int i = cur-1; i >= 0; i--){
if(i >= 3) if(i == cur-2 && cha[i-1] == "shi") continue;
if(i == cur-1 && cha[i] == "ling") continue;
if(i) cout << cha[i] << " ";
else cout << cha[i];
}
return 0;
}
void zuzhuang(int m){
int len = 0;
int zu[3];
while(m){
zu[len++] = m%10000;
m /= 10000;
}
if(len == 0){ printf("ling"); return ;}
if(zu[0]) output(zu[0]);
if(zu[1]) if(len >= 2){cha[cur++] = "wan"; output(zu[1]);}
if(zu[2]) if(len >= 3){cha[cur++] = "yi"; output(zu[2]);}
}
void output(int m){
int q = 0,b = 0,s = 0,g = 0;
g = m%10; s = m/10%10; b = m/100%10; q = m/1000;
if(g){cha[cur++] = num[g];}
if(s){cha[cur++] = "shi"; cha[cur++] = num[s];}
else if(!g) {}
else cha[cur++] = num[s];
if(b){cha[cur++] = "bai"; cha[cur++] = num[b];}
else if(g == 0 && s == 0) {}
else if(cha[cur-1] == "ling") {}
else cha[cur++] = num[b];
if(q){cha[cur++] = "qian"; cha[cur++] = num[q];}
else if(cha[cur-1] == "ling") {}
else cha[cur++] = num[q];
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复