读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 1。

输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

  1. 1234567890987654321123456789

输出样例:

  1. yi san wu
  2. 分析:
      1.本题考核的是数组的相关概念;
      2.可以将n转化为str的数组,然后使用for循环获取输入n正整数的各个字段的值;
  3. 第一步,分割数字
    使用awkcutfor 按位截取数字,并将数组放入到数组中
  1. #/bin/bash
  2. n=121332332424243
  3. length=$(echo $n |awk '{print length($0)}') #通过awk 打印变量长度
    num=()                          #创建一个空数组         
  4. i=1                            #位置从1开始              
  5. for ((i > 0; i <= ${length} ; i++))
  6. do
  7. str=$(echo $n |cut -c $i)        #cut -c 按位置截取字符串
  8. echo "$i: $str"
            num[$(expr $i - 1 )]=$str        #按照数组位,将分割的字符置入数组变量中
  9. done
    echo ${num[*]}

 第二步,创建拼音的数组变量,按0-9顺序排列。

  1. #/bin/bash
  2. read n
  3. length=$(echo $n |awk '{print length($0)}') #获取正整数位置的长度
  4. pinyin=(ling yi er san si wu liu qi ba jiu)  #创建pinyin的数组变量,按数字对应关系创建
  5. num_py=()                        #创建num_py的数组变量
  6. #创建拼音匹配函数
  7. fuc_pinyin(){
  8. local x=0
  9. for ((x >=0; x <=9 ; x++))
  10. do
  11. if [ $x -eq $str ];then py=$(echo ${pinyin[$x]});fi    #判断截取字符与位置是否匹配,匹配则输出对应的拼音
  12. done
  13. }
  14. i=1
  15. for ((i >= 0; i <= ${length} ; i++))
  16. do
  17. str=$(echo $n |cut -c $i)          #截取字符
  18. fuc_pinyin #引用函数,转换数字
  19. num_py[$(expr $i - 1 )]=$py         #按位置为 数组变量num_py赋值
  20. done
  21. echo ${num_py[*]}

 

em.... 提交之后,告诉我只有答案正确!测试点,真心不知道考核的是什么,心累!

练习题存在的问题:

  1.算术运算,运算符的前后都需要保留一个空格;

  2.awk 的length 可以获取字符串的长度,配合cut可以获取字符的定义;(其余字符串的截取方法。。。。)

补充python版本

  1. #!/usr/bin/python3
  2. #-*- coding:utf-8 -*-
  3.  
  4. PY=['ling','yi','er','san','si','wu','liu','qi','ba','jiu']
  5.  
  6. nums=input()
  7. sum=0
  8. list_py=[]
  9. for i in str(nums):
  10. sum=sum+int(i)
  11.  
  12. for j in str(sum):
  13. list_py.append(PY[int(j)])
  14.  
  15. print(' '.join(list_py)) #.join()方法,用来在插入中间字符

  

shell练习--PAT题目1002:写出这个数(失败案例)的更多相关文章

  1. 【PAT】1002. 写出这个数 (20)

    1002. 写出这个数 (20) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式 ...

  2. PAT 乙级 1002.写出这个数 C++/Java

    1002 写出这个数 (20 分) 题目来源 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n ...

  3. PAT乙级 1002. 写出这个数 (20)

    1002. 写出这个数 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入一个自然数n,计算其各位数字 ...

  4. [C++]PAT乙级1002.写出这个数(20/20)

    /* 1002. 写出这个数 (20) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10^100. ...

  5. PAT 乙级 -- 1002 -- 写出这个数

    题目: 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字 ...

  6. PAT 乙级 1002. 写出这个数 (20)(C语言描述)

    读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每 ...

  7. PAT乙级1002. 写出这个数 (20)

    读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每 ...

  8. PAT Basic 1002 写出这个数 (20 分)

    读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1. 输出格式: 在一行内输出 n 的 ...

  9. 【x】 PAT/BasicLevel_C++/1002. 写出这个数 (20).cpp

    C++中的to_string()函数[C++11支持] - Bravo Yeung-羊较瘦之自留地 - CSDN博客https://blog.csdn.net/lzuacm/article/detai ...

  10. shell练习--PAT题目1007:关于素数对(失败案例)

    让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数.“素数对猜想”认为“存在无穷多对相邻且差为2的素 ...

随机推荐

  1. IDE引入mindmap插件,在项目中添加思维导图

    1.打开IDE,file--settings--plugins,搜索IDEA Mind Map 2.点击install,进行下载,然后按照提示restart重启IDEA,安装完成 3.创建mind m ...

  2. 使用TestNG框架测试用例执行顺序问题

    既然是讨论执行顺序问题,那么用例肯定是批量执行的,批量执行的方法有mvn test.直接运行testng.xml文件,其中直接运行testng.xml文件的效果与pom文件中配置执行testng.xm ...

  3. 【ABAP系列】SAP ABAP 运算符

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 运算符   前 ...

  4. finereport连接mysql8.0的解决办法

    1.具体连接操作 首先将mysql-connector-java-8.0以上的jar包放到FindReport安装目录下的webapps下的WEB-INF下的lib下. 打开finereport,找到 ...

  5. Python中文件读写之 w+ 与 r+ 到底有啥区别?

    其实r 是只读,只能读不能写,这是很明确的,但是r+是可读写,变成r+后还没太明白到底加了什么,还是照样写不了,有没有这样的体验呢,如下代码,只读时 f = open("test.txt&q ...

  6. DataAdapter的Fill方法(转)

    使用DataAdapter填充DataSet(1) 在选择了DataAdapter的类型(SqlDataAdapter或OleDbDataAdapter)并配置了DataAdapter来执行所需的任务 ...

  7. [Web 前端] 028 jQuery 事件

    目录 jQuery 的事件 1. 事件绑定 1.1 事件的获取 1.2 基本绑定 1.3 动态绑定 2. 事件触发 2.1 触发的写法 2.2 常用的鼠标事件 3. 事件冒泡和默认行为 3.1 事件冒 ...

  8. [Web 前端] 026 jQuery 初探

    目录 1. jQuery 简介 2. jQuery 的简单操作 2.1 jQuery 选择器 2.1.1 简介 2.1.2 基础选择器 2.2 过滤获取 2.3 父子关系获取 3. jQuery 元素 ...

  9. RocketMQ事务性消息及持久化

    TransactionProducer(事务消息): 在分布式系统中,我们时常会遇到分布式事务的问题,除了常规的解决方案之外,我们还可以利用RocketMQ的事务性消息来解决分布式事务的问题.Rock ...

  10. 数组转字符串 java8

    public static String arrayToString(int[] arr) { // 1,2,3... StringBuffer sb = new StringBuffer(); fo ...