让我们用字母 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. 简单通讯聊天 群聊功能 Windows下的客户端 Linux下的epoll服务器

    1 服务器代码  Linux eclipse C++ //======================================================================= ...

  2. MyView 的无奈问题

    这不是为难我吗这种问题  据说这是内置库!!!!!可是: 找不到呀!!!!!!!!!! 后期补充: 是因为我的一个目录名字起了冲突

  3. 【Ruby on Rails 学习三】Ruby 基本数据类型(类、类的实例、对象)

    数字.文本.范围.符合.True.False.Nil 1为什么是一个类的对象,使用methods方法可以查看一个对象的所有函数(方法) $ irb irb(main)::> => irb( ...

  4. 【神经网络与深度学习】深度学习实战——caffe windows 下训练自己的网络模型

    1.相关准备 1.1 手写数字数据集 这篇博客上有.jpg格式的图片下载,附带标签信息,有需要的自行下载,博客附带百度云盘下载地址(手写数字.jpg 格式):http://blog.csdn.net/ ...

  5. 封装jquery插件

    最近要到使用别的jquery插件,但部分功能并不能满足,为满足功能,只能对插件进行修改来满足,要修改插件,先要了解插件如何封装, 明白了如何封装插件,才能更好修改插件:如何封装插件? 1.插件封装类型 ...

  6. 模板变量设置 set 和 with

    from flask import Flask,render_template app = Flask(__name__) @app.route('/') def hello_world(): ret ...

  7. 创建可执行bin安装文件

    [应用场景] 简化操作,对于有些安装操作而言,需要包含安装脚本和脚本需要的文件两部分,封装成可执行bin文件之后就只有一个安装包了. 代码保护,在很多情况下,我们并不希望用户可以直接接触到代码部分,这 ...

  8. ArrayList和LinkedList的底层代码实现思想

    ArrayList是Java众多集合类中的一个,实现List接口,List的父接口是Collection.ArrayList底层的数据结构是线性表中的顺序表,底层是一个长度可以动态增长的数组.数组有很 ...

  9. C语言 --- 高级指针

    1. 指针赋值: C语言允许使用赋值运算进行指针的赋值,前提是两个指针具有相同的类型.                 int i,*p,*q;                 p = &i; ...

  10. 生成url的二维码图片

    <?php require_once "./phpqrcode.php"; //生成二维码 $img = \QRcode::png("https://www.bai ...