写这篇的主要目的就是应试和实际代码是有区别的
题目:给个数字用中文方式打印
Sample Input 1:
-123456789
Sample Output 1:
Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu
Sample Input 2:
100800
Sample Output 2:
yi Shi Wan ling ba Bai
下面代码测试例都过,但并不是完美代码,比如10000,10001等都是错的,但就是能拿满分。
#include<bits/stdc++.h>
using namespace std;
string number[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
string wei[4] = {"","Shi","Bai","Qian"};
string jie[3] = {"","Wan","Yi"};
int main() {
string num;
cin>>num;
if(num[0]=='-') {
cout<<"Fu ";
num = num.substr(1);
}
reverse(num.begin(),num.end());
int len = num.length(),index;
vector<string> sbstr;
for(index=0;index<len;index+=4){
string str1 = num.substr(index,4);
reverse(str1.begin(),str1.end());
sbstr.insert(sbstr.begin(),str1);
}
for(int i=0;i<sbstr.size();i++){
for(int j=0;j<sbstr[i].size();j++){
if(stoi(sbstr[i].substr(j)) == 0) continue;
if(i!=0||j!=0) cout<<" ";
cout<<number[sbstr[i][j]-'0'];
if(sbstr[i][j]-'0'!=0){
if(sbstr[i].size()-1-j !=0 ) cout<<" "<<wei[sbstr[i].size()-1-j];
}
}
if(stoi(sbstr[i].substr(0)) == 0) {
cout<<number[0]; //考虑到 0
continue;
}
if(sbstr.size()-1-i!=0) cout<<" "<<jie[sbstr.size()-1-i];
}
return 0;
}