这个测试一开始没想到解决办法,学的不是很好,就从网上看了一个别人写的,确实有启发,所以本篇文章是转载的。原文链接:中国大学MOOC课程《程序设计入门——C语言》翁恺老师 第五周测试题(习题记录)_你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数-CSDN博客
代码:
#include <stdio.h>
int main()
{
int num;//定义一个数字
int innum;//定义逆序数
int ret;//存储取得的最右边的一位数字
int count = 0;//定义数位,并初始化为0
scanf("%d", &num);
if ( num<0 ) {
num = -num; //将负数转化为正数
printf("fu ");
}
while ( num>0 ) //while循环进行逆序(如果输入数字为零,那么不需要逆序,直接进入下面的do-while,零后面没有其他的数字,所以直接输出)
{
ret = num%10; //取得最后的一位数字
innum = innum*10 + ret; //逆序
count ++; //count计数器累计输出的数字的位数
num /= 10; //去掉最后的数字
}
do { //对逆序后的数字从最右端开始逐位判断
ret = innum%10;
innum /= 10;
switch ( ret )
{
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 ( count>1 ) { //从数位判断是否输出空格
printf(" ");
}
count --;
} while ( count>0 );
return 0;
}