【C语言】念数字,输出每个数字对应的拼音

【问题描述】 

输入一个整数,输出每个数字对应的拼音。

当整数为负数时,先输出fu字。

十个数字对应的拼音如下:

0: ling

1: yi

2: er

3: san

4: si

5: wu

6: liu

7: qi

8: ba

9: jiu

【输入形式】

输入在一行中给出一个整数,如:1234

提示:整数包括负数、零和正数。

【输出形式】

在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er  san si。

【输入样例】 

-600 

【输出样例】 

fu liu ling ling

 总体思路为:

1. 判断负号

2. 遍历 数所输入数字的位数(考虑输入0不满足遍历条件的情况)

3. 定义一个取输入数首位的工具

4. 循环遍历 分别取首位数字进行判断

代码如下:

#include <stdio.h>

int main(int argc, char *argv[])
{
	int x, i, m, a;
	int t = 0, n = 1;
	
	scanf("%d", &x);

//判断负号	
	if (x < 0)
	{
		printf("fu ");
		x = -x;
	}
	a = x;//之后x在遍历后变为0,故定义a保存原值 

//数输入数字位数(考虑输入0的特殊情况) 
	if (x == 0)
	{
		t = 1;
	}
	while (x > 0)
	{
		x /= 10;
		t++;
	}

//定义n,作为之后取输入数首位的工具 ,遍历(位数-1)次 
	for (i=t; i>1; i--)
	{
		n *= 10;
	}

//循环遍历	
	for (i=t; i>=1; i--)
	{
		m = a / n;//取首位数字 
		a %= n;

		switch (m)
		{
			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;	
		}

		n /= 10;

		if (n != 0)
		{
			printf(" ");
		}
	}
	
	return 0;
}

字符串数组方法:

#include <stdio.h>

int main(int argc, char *argv[])
{
 char c;
 c = getchar();
 
 while (c!='\n')
 {
     if (c=='-') printf("fu");
     else if (c=='0') printf("ling");
     else if (c=='1') printf("yi");
     else if (c=='2') printf("er");
     else if (c=='3') printf("san");
     else if (c=='4') printf("si");
     else if (c=='5') printf("wu");
     else if (c=='6') printf("liu");
     else if (c=='7') printf("qi");
     else if (c=='8') printf("ba");
     else if (c=='9') printf("jiu");

     c = getchar();

     if (c!='\n') printf(" ");
 }

    return 0;
}
  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布凯彻-劳斯基

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值