首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >7-7 念数字 (15 分)(用数组简化判断过程)

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

作者头像
GeekLiHua
发布于 2025-01-21 06:47:30
发布于 2025-01-21 06:47:30
6400
代码可运行
举报
文章被收录于专栏: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
运行
AI代码解释
复制
#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
运行
AI代码解释
复制
// 使用二维数组简化问题
#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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C语言】备战校赛Day3
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:
修修修也
2024/04/01
1150
【C语言】备战校赛Day3
团体程序设计天梯赛-练习集 L1-007 念数字
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出“fu”字。十个数字对应的拼音如下:
C you again 的博客
2020/09/15
4060
【GPLT】L1-007 念数字
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
7640
PTA刷题记录:L1-007 念数字 (10分)
题目要求: 输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:
英雄爱吃土豆片
2020/10/29
1.9K0
PTA刷题记录:L1-007 念数字 (10分)
1002. 写出这个数 (20)
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
AI那点小事
2020/04/20
2730
1002. 写出这个数 (20)
蓝桥杯 基础练习 数的读法
  Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。   比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的。   所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法:   十二亿三千四百五十六万七千零九   用汉语拼音表示为   shi er yi san qian si bai wu shi liu wan qi qian ling jiu   这样他只需要照着念就可以了。   你的任务是帮他设计这样一个系统:给定一个阿拉伯数字串,你帮他按照中文读写的规范转为汉语拼音字串,相邻的两个音节用一个空格符格开。   注意必须严格按照规范,比如说“10010”读作“yi wan ling yi shi”而不是“yi wan ling shi”,“100000”读作“shi wan”而不是“yi shi wan”,“2000”读作“er qian”而不是“liang qian”。
Meng小羽
2019/12/23
1K0
PAT乙级1002-写出这个数
https://www.bilibili.com/video/BV1Y34y1s7Ct
武师叔
2022/09/26
2450
PAT (Basic Level) Practice (中文)1002 写出这个数 (20 分)
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10​100​​。
glm233
2020/09/28
4090
PAT (Basic Level) Practice (中文)1002 写出这个数
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10​100。
C you again 的博客
2020/09/15
6590
【PAT乙级】写出这个数
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
3320
【PAT乙级】写出这个数
2015届华为校园招聘机试题
第一题(60分):        按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”
bear_fish
2018/09/20
5280
PAT(乙级)1002.写出这个数(20)
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数n的值。这里保证 n小于10​^100。
lexingsen
2022/02/25
1890
编程小白 | 每日一练(182)
这道理放在编程上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从编程小白进阶到高手,需要经历的是日积月累的学习,那么如何学习呢?当然是每天都练习一道题目!!
小林C语言
2019/06/10
4030
编程小白 | 每日一练(182)
试题 基础练习 数的读法
资源限制 内存限制:512.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述   Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。   比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的。   所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法:   十二亿三千四百五十六万七千零九   用汉语拼音表示为   shi er yi san qian si bai wu shi liu wan qi qian ling jiu   这样他只需要照着念就可以了。   你的任务是帮他设计这样一个系统:给定一个阿拉伯数字串,你帮他按照中文读写的规范转为汉语拼音字串,相邻的两个音节用一个空格符格开。   注意必须严格按照规范,比如说“10010”读作“yi wan ling yi shi”而不是“yi wan ling shi”,“100000”读作“shi wan”而不是“yi shi wan”,“2000”读作“er qian”而不是“liang qian”。 输入格式   有一个数字串,数值大小不超过2,000,000,000。 输出格式   是一个由小写英文字母,逗号和空格组成的字符串,表示该数的英文读法。 样例输入 1234567009 样例输出 shi er yi san qian si bai wu shi liu wan qi qian ling jiu 提交代码:
GeekLiHua
2025/01/21
620
把数字用拼音表示并输出
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/80079905
zy010101
2019/05/25
5260
基础练习 数的读法
  Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。   比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的。   所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法:   十二亿三千四百五十六万七千零九   用汉语拼音表示为   shi er yi san qian si bai wu shi liu wan qi qian ling jiu   这样他只需要照着念就可以了。   你的任务是帮他设计这样一个系统:给定一个阿拉伯数字串,你帮他按照中文读写的规范转为汉语拼音字串,相邻的两个音节用一个空格符格开。   注意必须严格按照规范,比如说“10010”读作“yi wan ling yi shi”而不是“yi wan ling shi”,“100000”读作“shi wan”而不是“yi shi wan”,“2000”读作“er qian”而不是“liang qian”。
刘开心_1266679
2019/02/14
5760
力扣每日一刷(2023.9.8)
刚开始,看到这种题上来就是一个暴力 ,感觉AC很舒服, 但是一提交就是超时 ,所以对于这种简单的题,我们想的一定要多,不然最后结果一定是false的。
用户11097514
2024/05/31
1270
力扣每日一刷(2023.9.8)
PAT 1002 写出这个数
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10
freesan44
2021/08/18
1790
PAT 1002 写出这个数(JAVA / Hash)
输入格式: 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
Karos
2023/01/03
3230
写出这个数——《C语言代码笔记》
今天碰到这个题,考到许多小知识点,可为难死博主了。 废话不多说,上题 写出这个数 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。 输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。 输入样例: 1234567890987654321123456789 1 1234567890987654321123456789 输出样例: yi san wu
神无月
2018/06/25
1.5K0
相关推荐
【C语言】备战校赛Day3
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档