程序设计习题 第 7 章 字与时
7.1 字符串
1. 已知字符串“I want to learn esProc SPL !”,要求如下
(1)计算字符串的长度
(2)请将字符串中的字母全部改为大写
(3)获取字符串左边3位
(4)获取字符串第1位到倒数第3位
(5)获取字符串右边5位
(6)查找字符串”esProc”的位置
(7)从字符串第3位开始往后取7位
(8)从字符串第10位取到末尾
(9)去除字符串中”!” 前面多余的空格
(10)将字符中的空格替换为”_”
2. 请判断”boy”里出现的每一个字母,是否都出现在字符串”esProc SPL is a smart desktop data analysis tool”里。如果出现,则输出true,否则,则输 出false.
3. 将字符串 ”SPL” 和 ”Structured Process Language” 拼接到一起(用不同的方法实现)
4. 将序列["apple","banana","orange","pear","cherry"]中的字符串拼接数字,拼接后效果["apple_1","banana_2","orange_3","pear_4","cherry_5"]
5. 输入姓名和国家,输出句式“世界那么大,()想去()看看”。例如输入:“小明”和“埃及”,输出:“世界那么大,小明想去埃及看看”
6. 打印九九乘法表,效果如下:
1×1=1
1×2=2,2×2=4
1×3=3,2×3=6,3×3=9
……
1×9=9,2×9=18,3×9=27,4×9=36,5×9=45,6×9=54,7×9=63,8×9=72,9×9=81
7. 输入身份证号字符串如“330821198211126225”,输出类似以下格式输出:
你出生于1982年11月12日
你今年41周岁
你的性别为女
8. 有字符串”JanFebMarAprMayJunJulAugSepOctNovDec”,编写程序,实现月份到英文缩写的转换。输入一个1到12间的整数,输出其对应的月份缩写,如1对应1月(Jan),2对应2月(Feb)等。
9. 编写程序,实现人民币和美元两种货币的自由转换。从键盘输入货币及对应的货币符号。根据输入的货币符号,自动将输入的货币币值转换为另外一种货币的币值。假设汇率固定为7.10
输入:¥710
输出:710元人民币可兑换100.0美元
输入:$100
输出:100元美元可兑换710.0人民币
7.2 拆分合并
1. 已知字符串”1 SPL Means Structured Process Language 2 SPL is a smart desktop data analysis tool”,要求如下
(1)请将字符串中的字母的大写改为小写,小写改为大写
(2)请将字符串的数字取出,并组成一个新的字符串
(3)请统计字符串出现的字母s的出现次数(忽略大小写,s与S是同一个字母)
(4)请将字符串反转并输出。例:”abc”的反转是”cba”
(5)提取出字符串中的单词
2. 输入一个字符串,取出所有偶数位上的字符组成新的字符串。输入”abcd1234” 输出”bd24”
3. 输入一个字符串,统计字符串中非数字和字母的字符的个数
例如: 输入”anc2+93-sj你好” 输出:4
4. Excel中有字符串如图
将其按照”and”拆分,拆分出每种水果的名字
5. Excel文件中有一列混合了字符和数字的数据,其中数字和字符可能在多处出现,且出现规律不定
要求将每一行的数字和字符分离开来,将分离出来的数字放在B列,剩余字符放在 C 列,效果如下图
6. 有如下字符串,有多个关键字 Key,每个 Key 有一个对应值 Value
把关键字和其对应的值解析出来,效果如下图:
7. 自己练习将某个路径下多个结构相同的文件合并
7.3 日期与时间
1. 获取当前系统时间,以及3天后这一刻的时间
2. 将当前系统时间以"MMM-d-yy HH🇲🇲ss"格式输出
3. 输入某人生日,格式为"yyyy-MM-dd",计算到现在为止经过了多少周。
4. 定义一个时间"2000-08-08 08:08:08",求这一年是平年还是闰年
5. 设定一个抽奖的时间,如:"2024年11月11日 10点00分00秒",计算当前时间和抽奖时间的时间间隔,还有xx天xx小时xx秒
6. 输入某年某月某日,求输入日期是当年中的第几天?例如输入2023-03-05,计算31+28+5=64天
7. 计算日期” 2023-12-29”,5个工作日后的日期是哪天
8. 计算某给定日期时间”yyyy-MM-dd hh🇲🇲s”再过n秒后的日期时间值(超过23:59:59就是新的一天)。
9. 有一组字符串,包含了日期信息如 6.5.18、18.7.19
“6.5.18 - no int in zone 1 but int in zone 2. 18.7.19 - summer update.” 请将日期部分提取出来
参考答案
7.1 字符串
1.
A |
|
1 |
I want to learn esProc SPL ! |
2 |
=len(A1) |
3 |
=upper(A1) |
4 |
=left(A1,3) |
5 |
=left(A1,-3) |
6 |
=right(A1,5) |
7 |
=pos(A1,"esProc") |
8 |
=mid(A1,3,7) |
9 |
=mid(A1,10) |
10 |
=trim@a(A1) |
11 |
=replace(A1,"","_") |
2.
A |
|
1 |
esProc SPL is a smart desktop data analysis tool |
2 |
=len(A1).(mid(A1,~,1)).contain("b","o","y") |
3.
A |
B |
|
1 |
SPL |
Structured Process Language |
2 |
=A1+B1 |
|
3 |
=A1/B1 |
|
4 |
=concat(A1,B1) |
|
5 |
=pad(B1,A1,len(A1)+len(B1)) |
4.
A |
|
1 |
=["apple","banana","orange","pear","cherry"] |
2 |
=A1.(~/"_"/#) |
5.
A |
B |
|
1 |
小明 |
埃及 |
2 |
>output("世界那么大"+A1+"想去"+B1+"看看") |
6.
A |
B |
C |
|
1 |
for 9 |
||
2 |
for A1 |
>output@s(B2/"×"/A1/"="/${B2*A1}/if(B2==A1,"",", ")) |
|
3 |
>output("") |
7.
A |
B |
|
1 |
="330821198211126225" |
2023 |
2 |
>output("你出生于"/mid(A1,7,4)/"年"/mid(A1,11,2)/"月"/mid(A1,13,2)/"日") |
|
3 |
>output("你今年"/${B1-number(mid(A1,7,4))}/"岁") |
|
4 |
>output("你的性别为"/if(number(mid(A1,-2,1))%2==0,"女","男")) |
8.
A |
|
1 |
6 |
2 |
JanFebMarAprMayJunJulAugSepOctNovDec |
3 |
=mid(A2,(A1)*3-2,3) |
9.
A |
B |
|
1 |
'$100 |
|
2 |
if left(A1,1)=="¥" |
>output(right(A1,-2)/"元人民币可兑换"/(number(right(A1,-2))/7.1)/"美元") |
3 |
elseif left(A1,1)=="$" |
>output(right(A1,-2)/"元美元可兑换"/(number(right(A1,-2))*7.1)/"人民币") |
4 |
else |
>output("输入错误") |
7.2 拆分合并
1.
A |
|
1 |
1 SPL Means Structured Process Language 2 SPL is a smart desktop data analysis tool |
2 |
=A1.split().(if(islower(~):upper(~),isupper(~):lower(~);~)).concat() |
3 |
=A1.words@d().concat() |
4 |
=A1.split().count(lower(~)=="s") |
5 |
=A1.split().rvs().concat() |
6 |
=A1.words() |
2.
A |
|
1 |
abcd1234 |
2 |
=A1.split().select(#%2==0).concat() |
3.
A |
B |
|
1 |
anc2+93-sj你好 |
|
2 |
=A1.split() |
|
3 |
for A2 |
if !(A3 <= "z" && A3>="a" || A3>="A" && A3<= "Z" || A3>="0" && A3 <= "9") |
4.
A |
|
1 |
=clipboard() |
2 |
=A1.split("and").concat("\t") |
3 |
>clipboard(A2) |
5.
A |
|
1 |
=clipboard() |
2 |
=A1.split("\n").(~.words@d().concat()/"\t"/(~.words@w()\~.words@d()).concat()) |
3 |
=A2.concat@n() |
4 |
>clipboard(A3) |
6.
A |
|
1 |
=clipboard() |
2 |
=A1.property() |
3 |
=file("D://KV.xlsx").xlsexport@tc(A2) |
7.3 日期与时间
1.
A |
|
1 |
=now() |
2 |
=A1+3 |
2.
A |
|
1 |
=now() |
2 |
=string(A1,"MMM-d-yy HH🇲🇲ss") |
3.
A |
|
1 |
2006-10-25 |
2 |
=interval(A1,now@d())\7 |
4.
A |
|
1 |
2000-08-08 08:08:08 |
2 |
=year(A1) |
3 |
=if(A2%4==0 && A2%100!=0 || A2%400==0,"闰年","平年") |
5.
A |
|
1 |
2024年11月11日 10点00分00秒 |
2 |
=A1.words@d() |
3 |
=A2.to(3).concat("-") |
4 |
=A2.to(4,).concat(":") |
5 |
=A3+" "+A4 |
6 |
=datetime(A5,"yyyy-MM-dd HH🇲🇲ss") |
7 |
=long(A6)-long(now()) |
8 |
=A7\(24*60*60*1000) |
9 |
=A7%(24*60*60*1000)\(60*60*1000) |
10 |
=A7%(24*60*60*1000)%(60*60*1000)\(60*1000) |
11 |
=A7%(24*60*60*1000)%(60*60*1000)%(60*1000)\1000 |
12 |
>output("距离抽奖时间还有"/A8/"天"/A9/"小时"/A10/"分"/A11/"秒") |
6.
A |
B |
C |
D |
|
1 |
2023-11-11 |
=day(A1) |
||
2 |
=year(A1) |
=month(A1) |
||
3 |
for B2-1 |
if [1,3,5,7,8,10,12].contain(A3) |
>B1+=31 |
|
4 |
elseif [4,6,9,11].contain(A3) |
>B1+=30 |
||
5 |
else |
if A2%4==0 && A2%100!=0 || A2%400==0 |
>B1+=29 |
|
6 |
else |
>B1+=28 |
7.
A |
B |
|
1 |
2023-12-29 |
5 |
2 |
=workday(A1,B1,[date("2024-01-01")]) |
8.
A |
|
1 |
2023-11-11 23:59:58 |
2 |
=elapse@s(A1,3) |
9.
A |
|
1 |
6.5.18 - no int in zone 1 but int in zone 2. 18.7.19 - summer update. |
2 |
=A1.split("").(date(~,"dd.MM.yy")).select(~).concat(";") |
英文版