问题:输入一个0-1000的数字读出数字,比如”123”输出”yi bai er shi san”
#include <stdio.h>
// 定义数字对应的中文拼音数组
const char *num_pinyin[] = {
"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"
};
// 处理数字转换为拼音表述
void convert_to_pinyin(int num)
{
if (num == 0)
{
printf("ling\n");
return;
}
int hundreds = num / 100;
int tens = (num % 100) / 10;
int units = num % 10;
int has_output = 0;
// 处理百位
if (hundreds > 0)
{
printf("%s bai", num_pinyin[hundreds]);
has_output = 1;
}
// 处理十位
if (tens > 0)
{
if (has_output)
{
printf(" ");
}
if (tens == 1 && hundreds == 0)
{
// 当十位是 1 且百位为 0 时,省略“yi”
printf("shi");
}
else
{
printf("%s shi", num_pinyin[tens]);
}
has_output = 1;
}
else if (has_output && units > 0)
{
// 如果百位有输出且个位不为 0,十位为 0 时输出“ling”
printf(" ling");
}
// 处理个位
if (units > 0)
{
if (has_output)
{
printf(" ");
}
printf("%s", num_pinyin[units]);
}
printf("\n");
}
int main()
{
int num;
// 读取输入的数字
printf("请输入一个 0 - 1000 的数字: ");
scanf("%d", &num);
// 检查输入是否在有效范围内
if (num < 0 || num > 1000)
{
printf("输入的数字不在 0 - 1000 范围内。\n");
return 1;
}
// 调用转换函数
convert_to_pinyin(num);
return 0;
}
个人学习记录