题目解答:
这里,我们采取了分段处理,每四位是一个段,即9_9999_9999;具体处理看代码即可。
#include <stdio.h>
void print(int x);
int main()
{
int x;
scanf("%d", &x);
int head=-1;
if (x == 0)//x初始值为0,特殊处理
{
printf("a");
}
else
{
if (x / 100000000 > 0)
{
print(x / 100000000);
printf("Y");
x %= 100000000;
head=1;
}
if (x / 10000 > 0)
{
print(x / 10000);
x %= 10000;
printf("W");
head=1;
}
if (x > 0)
{
if(head==1&&x<1000){//亿万已经打印,剩余数不足1000,需要将千位的零读出来;
printf("a");
}
print(x);
}
}
return 0;
}
//x小于1万
void print(int x)
{
int head = -1; //记录最高位
if (x / 1000 > 0)
{ //先判断千位是否存在
printf("%cQ", x / 1000 + 'a');
x %= 1000;
head = 1;
}
if (x / 100 > 0)
{ //判断百位如果存在
printf("%cB", x / 100 + 'a');
x %= 100;
head = 1;
}
else
{
if (x > 0 && head == 1)
{ //如果剩余数不为零,则要将当前位上的零读出来
printf("a");
}
}
if (x / 10 > 0)
{ //判断十位如果存在
printf("%cS", x / 10 + 'a');
x %= 10;
head = 1;
}
else
{
if (x > 0 && head == 1)
{ //如果剩余数不为零,则要将当前位上的零读出来
printf("a");
}
}
if (x > 0)
{
printf("%c", x + 'a');
}
}