一、题目描述 ⭐️
二、代码(C语言)⭐️
/**
* 输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。
*/
#include <stdio.h>
// 输出 正数 中 各位数 对应的 拼音
void getLetter(int num) {
// 10个数字(0 ~ 9)对应的10个拼音(ling ~ jiu)
// 定义一个字符串数组,包含10个字符串,每个字符串最大长度为39个字符(加上结尾的'\0')
// 这里的40:最长字符是ling,长度为4,共有10个字符,所以最大长度是4*10=40个字符
char strArr[10][40] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
// 接收 所输入整数 的各位数,放入numArr数组中(由低位到高位)
int numArr[100] = {};
// numArr数组中 所含数 的 个数
int count = 0;
// 获取到 所输入整数 的 各位数
while(num != 0) {
// 对 所输入整数 取余,获取到 所输入整数 的各位数
int n = num % 10;
// 将 所输入整数 的各位数 由低位到高位 放入numArr数组中
numArr[count] = n;
// numArr数组中 所含数 的 个数 加1
count++;
// 依次处理高位数
num /= 10;
}
// 将 numArr数组中的数 倒序输出
for(int i = count - 1; i >= 0; i--) {
// 获取到 所输入整数 的 各位数(由高位到低位)
int realNum = numArr[i];
// 输出 所输入整数 的 各位数(由高位到低位)对应的拼音
if(i == 0) {
printf("%s",strArr[realNum]);
} else {
printf("%s ",strArr[realNum]);
}
}
}
int main() {
int N; // 一个整数
scanf("%d",&N); // 输入一个整数
if(N == 0) {
// 如果N是0,直接输出ling字。
printf("ling");
}else if(N < 0) {
// 如果N是负数,先输出fu字。
printf("fu ");
// 将负数N 化成 正数N1
int N1 = N * (-1);
// 再继续输出 正数对应的拼音
getLetter(N1);
} else {
// 如果N是正数,则直接输出 对应的拼音
getLetter(N);
}
return 0;
}