程序设计习题 第 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=22×2=4

1×3=32×3=63×3=9

……

1×9=92×9=183×9=274×9=365×9=456×9=547×9=638×9=729×9=81

7. 输入身份证号字符串如“330821198211126225”,输出类似以下格式输出:‪‪‪‪‪‫‪

你出生于19821112

你今年41周岁

你的性别为女

8. 有字符串”JanFebMarAprMayJunJulAugSepOctNovDec”,编写程序,实现月份到英文缩写的转换。输入一个112间的整数,输出其对应的月份缩写,如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的出现次数(忽略大小写,sS是同一个字母)

4)请将a字符串反转并输出。例:”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. 设定一个抽奖的时间,如:"20241111 100000",计算当前时间和抽奖时间的时间间隔,还有xxxx小时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.1818.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

20241111 100000

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(";")