05-2. 念数字
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出“fu”字。十个数字对应的拼音如下:
0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入格式:
输入在一行中给出一个整数,如:1234。
提示:整数包括负数、零和正数。
输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如yi er san si。
输入样例:
-600
输出样例:
fu liu ling ling
#include <stdio.h>
int main() {
int x;
scanf_s("%d", &x);
if (x < 0){
printf("fu ");
x = -x; //将 x 变为其绝对值
}
int mask = 1;
int t = x;
while (t > 9) {
t /= 10;
mask *= 10; //通过循环将 mask 设为 x 的位数
}
do {
int d = x / mask; //将 x 的当前最高位数字存储到 d 中
switch (d) {
case 0:printf("Ling"); break;
case 1:printf("yi"); break;
case 2:printf("er"); break;
case 3:printf("san"); break;
case 4:printf("si"); break;
case 5:printf("wu"); break;
case 6:printf("liu"); break;
case 7:printf("qi"); break;
case 8:printf("ba"); break;
case 9:printf("jiu"); break;
}
if (mask > 9)printf(" ");
x %= mask; //将 x 更新为去除当前最高位后的余数
mask /= 10; //缩小 mask,以处理下一位数字
} while (mask > 0);
printf("\n");
return 0;
}
IMG: