解题思路:
好麻烦,好吧,做了一个半小时,最后还运行错误了,去官网测数据才发现有很多小小的细节你改变了一个另一个细节就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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论