思路:题比较简单,唯一的坑就是题目的输出格式,浪费了我半小时,废话不多说,直接上代码。
分析:(输出格式)
if (d[j - 1] == 0) {
printf("ling");
}
if (d[j - 1] == 1) {
printf("yi");
} else if (d[j - 1] == 2) {
printf("er");
} else if (d[j - 1] == 3) {
printf("san");
} else if (d[j - 1] == 4) {
printf("si");
} else if (d[j - 1] == 5) {
printf("wu");
} else if (d[j - 1] == 6) {
printf("liu");
} else if (d[j - 1] == 7) {
printf("qi");
} else if (d[j - 1] == 8) {
printf("ba");
} else if (d[j - 1] == 9) {
printf("jiu");
}
这里的d[j - 1]就是判断的第一个字符,因为题目强调,所以这里单独对其判断。
完整代码1:
//简直了差点被坑死(就是第一个字符空格的判断,让我浪费了半小时)
//输出格式:(只能说这个题,输出格式是个坑)
//在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最
//后一个拼音数字后没有空格。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main() {
char a[10010];
long long sum = 0;
cin >> a;
int i = 0;
while (i < strlen(a)) {
sum += (int )a[i] - '0';
i++;
}
int d[10010];
//string c[10]={"yi","er","san","si","wu","liu","qi","ba","qiu"};
int j = 0;
while (sum) {
d[j] = sum % 10;
sum /= 10;
j++;
}
//判断
//_________________________________________________
if (d[j - 1] == 0) {
printf("ling");
}
if (d[j - 1] == 1) {
printf("yi");
} else if (d[j - 1] == 2) {
printf("er");
} else if (d[j - 1] == 3) {
printf("san");
} else if (d[j - 1] == 4) {
printf("si");
} else if (d[j - 1] == 5) {
printf("wu");
} else if (d[j - 1] == 6) {
printf("liu");
} else if (d[j - 1] == 7) {
printf("qi");
} else if (d[j - 1] == 8) {
printf("ba");
} else if (d[j - 1] == 9) {
printf("jiu");
}
//正常输出,注意空格的位置
//______________________________________________
for (int i = j - 2; i >= 0; i--) {
if (d[i] == 0) {
printf(" ling");
continue;
}
if (d[i] == 1) {
printf(" yi");
continue;
} else if (d[i] == 2) {
printf(" er");
continue;
} else if (d[i] == 3) {
printf(" san");
continue;
} else if (d[i] == 4) {
printf(" si");
continue;
} else if (d[i] == 5) {
printf(" wu");
continue;
} else if (d[i] == 6) {
printf(" liu");
continue;
} else if (d[i] == 7) {
printf(" qi");
continue;
} else if (d[i] == 8) {
printf(" ba");
continue;
} else if (d[i] == 9) {
printf(" jiu");
continue;
}
return 0;
}
return 0;
}
完整代码2
#include<bits/stdc++.h>
using namespace std;
char name[11][10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
int sum=0;
string q;
int main(){
cin>>q;
//STL中可以对string使用 a.size() 或者 a.length() 来获取a的长度
for(int i=0;i<q.size();i++)sum+=q[i]-'0';
/*string temp=to_string(int a),可以将整数类型的a转换为string类型的字符串
如 int a=1234 to_string(a) => string temp=[1][2][3][4]
*/
string final=to_string(sum);
//类型为char 转为 int 需要 -'0' 具体内容可自行搜取ascii码表的相关知识
cout<<name[final[i]-'0'];
for(int i=1;i<final.size();i++)cout<<" "<<name[final[i]-'0'];
return 0;
}
这是看到最简洁的代码,介绍的很详细,算是进阶版。