前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >7-7 念数字 (15 分)(用数组简化判断过程)

7-7 念数字 (15 分)(用数组简化判断过程)

作者头像
GeekLiHua
发布2025-01-21 14:47:30
发布2025-01-21 14:47:30
3000
代码可运行
举报
文章被收录于专栏:JavaJava
运行总次数:0
代码可运行

7-7 念数字 (15 分)

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出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

// 这个是我的第一种写法用的switch 写的特别长,没有多大参考价值

代码语言:javascript
代码运行次数:0
复制
#include<stdio.h>

int main(void)
{
	int n, m;
	int i;
	char a[20];
	scanf ("%d", &n);
	int flag = 0;
	if (n < 0)
	{
		flag = 1;
		n *= -1;
	}
	m = n;
	for (i = 0; n != 0; i++)
	{
		a[i] = n % 10;
		n /= 10;
	}
	i -= 1;
	if (flag)
	{
		printf ("fu ");
	}
	if (!m)
	{
		printf ("ling");
	}
	else
	{
		while (~i)
		{
			n = a[i];
			i--;
			switch (n)
			{
			case 0 : 
				printf ("ling");
				m /= 10;
				if (m)
				{
					putchar (' ');
				}
				break;
			case 1 : 
				printf ("yi");
				m /= 10;
				if (m)
				{
					putchar (' ');
				}
				break;	
			case 2 : 
				printf ("er");
				m /= 10;
				if (m)
				{
					putchar (' ');
				}
				break;
			case 3 : 
				printf ("san");
				m /= 10;
				if (m)
				{
					putchar (' ');
				}
				break;
			case 4 : 
				printf ("si");
				m /= 10;
				if (m)
				{
					putchar (' ');
				}
				break;
			case 5 : 
				printf ("wu");
				m /= 10;
				if (m)
				{
					putchar (' ');
				}
				break;
			case 6 : 
				printf ("liu");
				m /= 10;
				if (m)
				{
					putchar (' ');
				}
				break;
			case 7 : 
				printf ("qi");
				m /= 10;
				if (m)
				{
					putchar (' ');
				}
				break;
			case 8 : 
				printf ("ba");
				m /= 10;
				if (m)
				{
					putchar (' ');
				}
				break;
			case 9 : 
				printf ("jiu");
				m /= 10;
				if (m)
				{
					putchar (' ');
				}
				break;								
			}
		}
		
	}
	putchar ('\n');
	return 0;
}

我的写法(改进版)

代码语言:javascript
代码运行次数:0
复制
// 使用二维数组简化问题
#include <stdio.h>
#include <string.h>

int main()
{
	int n, flag = 0, i = 0;
	char dig[10][8] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
	char dig2[12][8];
	scanf ("%d", &n);
	if (n < 0)
	{
		flag = 1;
	}
	if (flag)
	{
		printf ("fu ");
		n = -n;
	}
	if (n == 0)
	{
		printf("ling");
	}
	while (n)
	{
		strcpy (dig2[i], dig[n % 10]);
		n /= 10;
		i++;
	}
	i -= 1;
	for (; i >= 0; --i)
	{
		printf ("%s", dig2[i]);
		if (i)
		{
			putchar (' ');
		}
	}
	return 0;
}

运行结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 7-7 念数字 (15 分)
    • 我的写法1
    • 我的写法(改进版)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档