让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。

输入格式:

每个测试输入包含 1 个测试用例,给出正整数 n(<)。

输出格式:

每个测试用例的输出占一行,用规定的格式输出 n。

输入样例 1:

234

输出样例 1:

BBSSS1234

输入样例 2:

23

输出样例 2:

SS123

这里我采用的是获取位数上的数字然后做字符操作的办法,反正还是一如既往的全绿案例!阿希吧!
#!/bin/bash
read n if [ $n -gt 0 -a $n -le 999 ]
then
B_w=$( echo "scale=0; $n / 100 "|bc) #浮点数计算expr不支持
S_w=$( echo "scale=0; ($n - $B_w * 100) / 10 "|bc)
G_w=$( echo "scale=0; ($n - $B_w * 100 - $S_w * 10 ) "|bc)
str1=$(seq -s 'B' $(expr $B_w + 1) |sed 's/[0-9]//g') #seq -s 可以将指定字符前插数字, 1a2a3
str2=$(seq -s 'S' $(expr $S_w + 1) |sed 's/[0-9]//g')
i=1
for ((i >= 1; i <=$G_w ; i++ ))
do
str_t[ $(expr $i - 1) ]=$i
done
str3=$(echo ${str_t[@]} |sed 's/ //g')
else
echo "input number not in [0-999]"
exit 1
fi echo ${str1}${str2}${str3}

  修改了一下,通过数组和关联数组,使脚本扩展到13位数字的转换

#!/bin/bash
read -t 10 -p "请输入需要转换的数字:" n W_n=(G S B Q W sw bw qw Y sy by qy wy) declare -A Num_p length=$(echo $n |awk '{print length($0)}') (( $n - 0 )); #算术运算 判断是否为数字
if [ $? -eq 0 ] && [ $length -lt 13 ]
then
i=0
for ((i >= 0;i < $length; i++ ))
do
a=$(expr $length - $i - 1 )
str[ $a ]=$(echo $n |cut -c $(expr $i + 1 )) #给数组str 按元素位置赋值
Num_p[$(echo ${W_n[$a]})]=${str[$a]}
# echo "${W_n[$a]}: ${str[$a]}"
if [[ "${W_n[$a]}x" == "Gx" ]] #判断个数位
then
str_n[$i]=$(seq -s '' ${str[$a]} ) #个数位的数字自增,但个位为0的情况,此处为空
else
str_n[$i]=$(seq -s "${W_n[$a]}" $(expr ${str[$a]} + 1) | sed 's/[0-9]//g') #把数组W_n的对应的值作为间隔符
fi
done
else
echo " $n is out of range or no number!"
exit 1
fi echo ${str_n[@]} | sed 's/ //g'

  

2019年7月25日 shell练习--PAT题目1006:换个格式输出整数(失败案例)的更多相关文章

  1. shell练习--PAT题目1001:卡拉兹(Callatz)猜想(失败案例)

    卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ( 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 年的世界 ...

  2. shell练习--PAT题目1004: 成绩排名 !(失败案例,shell运行超时)

    读入 n(>)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行:第 1 个学生的姓 ...

  3. 'Rem EverythingAutoSetup.VBS 安装Everything的VBS脚本 2019年11月25日写

    'Rem EverythingAutoSetup.VBS 安装Everything的VBS脚本 2019年11月25日写 'Rem Everything是voidtools开发的一款本地NTFS文件和 ...

  4. 批量添加删除Windows server DNS服务 恶意域名 * A记录 指向 127.0.0.1(2019年6月5日更新)

    下载链接:https://pan.baidu.com/s/1OUHyvnIfXYF0PdiT-VRyHw  密码:7gjj 注意!本解决方案在本地的Windows server服务器上把恶意域名指向1 ...

  5. 36.React基础介绍——2019年12月24日

    2019年12月24日16:47:12 2019年10月25日11:24:29 主要介绍react入门知识. 1.jsx语法介绍 1.1 介绍 jsx语法是一种类似于html标签的语法,它的作用相当于 ...

  6. 2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥?

    2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥? 转 https://www.ithome.com/html/android/372234.htm   据泰尔终端实验室公众微信 ...

  7. 2019年5月22日 AY 程序员调侃语录

    我是AY,杨洋,做wpf开发的,最近得了一种病,程序员患得患失综合征.同事说,我年纪在变大,技术跟不上.业余之间,我原创了写了一些语录,给大家中午休息,累疲惫的时候,开心放松下. 1.活着的每一天都无 ...

  8. 【2019年05月20日】A股滚动市盈率PE历史新低排名

    2010年01月01日 到 2019年05月20日 之间,滚动市盈率历史新低排名. 上市三年以上的公司, 2019年05月20日市盈率在300以下的公司. 1 - 阳光照明(SH600261) - 历 ...

  9. 19.go语言基础学习(下)——2019年12月16日

    2019年12月16日16:57:04 5.接口 2019年11月01日15:56:09 5.1 duck typing 1. 2. 接口 3.介绍 Go 语言的接口设计是非侵入式的,接口编写者无须知 ...

随机推荐

  1. 容易忽略的javascript知识点的总结

    /** 对代码行进行折行 **/您可以在文本字符串中使用反斜杠对代码行进行换行.下面的例子会正确地显示:document.write("Hello \World!"); 不过,您不 ...

  2. 实验仓 #779.【CSP2019模拟 Day 1】A题

    题目传送门 考场上面做了一个暴力的做法,然后,然后他$WA$了. emmm...($T$就算了吧,$WA$了算什么事啊) 好吧,这道题,其实好像...是一道思维题来着. 如果出现了这样两个打X的格子上 ...

  3. linux 磁盘命令

    用到共享软件为:samba 配置文件为  /etc/samba/smb.conf sudo fdisk -l 查看磁盘 sudo df -lh 查看磁盘挂载情况 sudo mount /dev/sdb ...

  4. python 包的概念

    包的概念 包的概念: 在python中包即使模块,是一系列功能的集合体, 为什么要用包? 提高开发效率 如何用包 import ... from ... import ..... 如何认识它就是一包 ...

  5. 利用三层交换机实现VLAN间路由

    利用三层交换机实现VLAN间路由 本实验模拟企业网络场景.公司有两个部门一销 售部和客服部,分别规划使用VLAN 10和VLAN 20.其中销售部下有两台终端PC-1和PC-2,客服部下有一台终端PC ...

  6. CSS基本样式-背景属性

    代码是敲出来的,建议一个一个过一遍 背景属性 背景颜色 background-color 背景颜色 默认值是transparent(透明的) 示例代码 <!DOCTYPE html> &l ...

  7. mysql分表规则(转)

    author:skatetime:2013/05/14 Mysql分表准则 在大量使用mysql时,数据量大.高访问时,为了提高性能需要分表处理,简介下mysql分表的标准,后续会继续补充 环境:业务 ...

  8. ubuntu 安装 TensorFlow、opencv3 的 tips

    安装tensorflow: 创建tensorflow虚拟环境 conda create -n  tensorflow python=2.7 输入命令查看可用版本的tensorflow-gpu cond ...

  9. sql server 对数运算函数log(x)和log10(x)

    --LOG(x)返回x的自然对数,x相对于基数e的对数 --LOG10(x)返回x的基数为10的对数 示例:select LOG(3),LOG(6),LOG10(1),LOG10(100),LOG10 ...

  10. 吴恩达深度学习:2.16关于python/numpy