输入一个整形数(最多可以到亿位),然后按汉语的习惯,将其读出来并输出。如1052,读作:一千零五十二。 程序运行示例: 1052 一千零五十二

简介: 输入一个整形数(最多可以到亿位),然后按汉语的习惯,将其读出来并输出。如1052,读作:一千零五十二。 程序运行示例: 1052 一千零五十二

输入一个整形数(最多可以到亿位),然后按汉语的习惯,将其读出来并输出。如1052,读作:一千零五十二。


程序运行示例:

1052

一千零五十二

999999999

九亿九千九百九十九万九千九百九十九


可能会有一些边界条件没有考虑到

最大到九亿九千九百九十九万九千九百九十九

下面是代码,解析写在注释里了


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const char shuzi[10][4] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
const char weishu[5][4] = {"十", "百", "千", "万", "亿"};
//储存中文数字
void read(char *str);
int count=0,len;
int main()
{
    char str[11] = {'0'};//初始化字符串
    scanf("%s", str + 1);
    len=strlen(str);
    read(str + 1);
    return 0;
}
void read(char *str)
{
    if (strlen(str) == 0)
    {
        return;
    }
    else
    {
        switch (str[0])//分别判断每一位的读法
        {
        case '0':
            if (str[1] != '0' && strlen(str) >= 2)
                printf("%s", shuzi[0]);
                //0的情况比较特殊,多个0位只读一遍
            break;
        case '1':
            if (strlen(str) != 2 && strlen(str) != 6)
                printf("%s", shuzi[1]);
            else if (*(str - 1) != '0')
                printf("%s", shuzi[1]);
            break;
        case '2':
            printf("%s", shuzi[2]);
            break;
        case '3':
            printf("%s", shuzi[3]);
            break;
        case '4':
            printf("%s", shuzi[4]);
            break;
        case '5':
            printf("%s", shuzi[5]);
            break;
        case '6':
            printf("%s", shuzi[6]);
            break;
        case '7':
            printf("%s", shuzi[7]);
            break;
        case '8':
            printf("%s", shuzi[8]);
            break;
        case '9':
            printf("%s", shuzi[9]);
            break;
        default:
            return;
        }
        switch (strlen(str))
        {
        case 9:
            printf("%s", weishu[4]);
            break;
        case 8:
            if (str[0] != '0')
                printf("%s", weishu[2]);
            break;
        case 7:
            if (str[0] != '0')
                printf("%s", weishu[1]);
            break;
        case 6:
            if (str[0] != '0')
                printf("%s", weishu[0]);
            break;
        case 5:
            break;
        case 4:
            if (str[0] != '0')
                printf("%s", weishu[2]);
            break;
        case 3:
            if (str[0] != '0')
                printf("%s", weishu[1]);
            break;
        case 2:
            if (str[0] != '0')
                printf("%s", weishu[0]);
            break;
        case 1:
            break;
        default:
            return;
        }
        count++;
        if((len-count==5)&&(len>4))
            printf("%s", weishu[3]);
        read(++str);//继续判断下一位
    }
}
相关文章
|
网络协议 安全 定位技术
顺着 IP 地址,真的能找到我家吗?
这篇文章主要讨论了互联网平台陆续显示用户 IP 属地以及此举可能引发的隐私问题。文章指出,一些人支持平台强制在前台显示用户 IP 属地,认为这可以让人们收敛行为,防止虚假信息传播;而另一些人质疑这一举措会进一步侵犯个人隐私。文章还介绍了 IP 地址的基本定义和作用,以及它与个人隐私的关系。同时,也提到了用户和平台建立连接的基础是 IP,因此用户的 IP 信息会被平台服务器记录下来。对于公开用户 IP 属地所带来的隐私问题,文章提到了一些专家和律师的看法,以及一些保护个人隐私的建议,包括隐藏位置信息、删去不想暴露的信息、使用不同的用户名和密码等。
151376 36
|
4月前
|
C++
什么是单项式
单项式是代数式中的一种
|
5月前
|
缓存 监控 API
电商API的微服务架构优化策略
随着电商快速发展,API成为连接用户、商家与系统的核心。本文探讨微服务架构下电商API的优化策略,分析高并发、低延迟与数据一致性等挑战,并提供服务拆分、缓存异步、监控容器化等实践方案,助力构建高性能、高可用的电商系统,提升用户体验与业务效率。
140 0
|
11月前
|
存储 自然语言处理 文字识别
开放应用架构,建设全新可精细化运营的百炼
本次分享的主题是开放应用架构,建设全新可精细化运营的百炼。由阿里云智能集团专家团队介绍在过去一年中,百炼在RAG(检索增强生成)技术的应用落地所遇到的挑战及解决方案。
281 11
|
10月前
|
人工智能 并行计算 Java
一文彻底搞清楚数字电路中的运算器
运算器(ALU)是数字电路的核心组件,负责执行算术和逻辑运算。其设计直接影响计算机系统的性能与效率。本文详细介绍了运算器的基本结构、功能分类、设计原理及实现方法。通过分析1位全加器、多位加法器、减法器的设计,结合74LS181N芯片和Logisim仿真工具的应用,展示了4位加/减法运算器的实现案例。同时探讨了多级运算器集成、标志位应用及现代优化方向,如超前进位加法器和并行计算技术。运算器的设计需兼顾功能完备性和性能优化,未来将向更高集成度和更低功耗发展。
1220 0
vue3 element-ui-plus Carousel 跑马灯 的使用 及 踩坑记录
本文介绍了在Vue 3中使用Element UI Plus的Carousel组件实现跑马灯效果的方法,并分享了在实现过程中遇到的常见问题和解决方案。
vue3 element-ui-plus Carousel 跑马灯 的使用 及 踩坑记录
Qt Style And Style Sheet
Qt Style And Style Sheet
145 1
|
JavaScript 索引
JS数组常用方法总结,含ES6新方法,附示例代码
JS数组常用方法总结,含ES6新方法,附示例代码
|
Web App开发 网络协议 Unix
客户端请求的端口号是什么?
TCP 协议里面会有两个端口,一个是浏览器监听的端口(通常是随机生成的),一个是 Web 服务器监听的端口(HTTP 默认端口号是 80, HTTPS 默认端口号是 443)。
客户端请求的端口号是什么?
|
安全 Shell PHP
干货 | 命令执行(RCE)面对各种过滤,骚姿势绕过总结
干货 | 命令执行(RCE)面对各种过滤,骚姿势绕过总结
2510 0

热门文章

最新文章