C语言数字编码化输出(switch-case)

默认分类 | 2020-03-22 20:35:32 | 阅读 255 次 | 评论(0)
/*题目内容:你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。
如输入1234,则输出:yi er san si

注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:
fu er san si yi

输入格式:一个整数,范围是[-100000,100000]。

输出格式:表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。

输入样例:-30

输出样例:fu san ling*/
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int main() {

    int info,i,var,count=0,var_1,var_2,COUNT;
	scanf("%d",&info);
    var=info;//变量寄存
	//量取数字位数
	while(info){count++;
	            info/=10;
	}

    //条件前缀
	if (var<0)printf("fu ");
	if (var==0){printf("ling");return 0;}
	var=abs(var);//取绝对值

    var_1=var/10;
	COUNT=count-1;

	while(COUNT--){
		
	switch(i=var_1/(int)pow(10,COUNT)){

				  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;
				  default:break;
		}
	 
	var_1=var_1%(int)pow(10,COUNT);
    printf(" ");//循环一次输出一空格
    
	}

	//控制空格后一个数
	var_2=var%10;
	switch(var_2){

				  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;
				  default:break;
		}
	
	//printf("%c",8);//ASCll退格符
	return 0;
}
捕获.PNG (上传于2020-03-22 20:35:32)
捕获.PNG
文章评论,共0条
游客请输入验证码
文章分类
最新评论