程序设计习题 第 5 章 一把抓

 

5.1 集合运算

1. 看代码写结果


A

B

1

=to(10,1)


2

=A1.to(2,6)

=A1.to(9,3)

3

=A2|B2

=B2|A2

4

=A2&B2

=B2&A2

5

=A2^B2

=B2^A2

6

=A2\B2

=B2\A2

7

=[A2,B2,A3]

=[A3,A4,B2]

8

=A7|A5

=A7|[A5]

9

=A8(2|to(3,5))

=A7(1)([1,3,5])

10

=A7&B7

=A10([2,3])(1)([6,3,2])

11

=A7^B7


12

=A7\B7


2. 将序列[2,0,6,1,77,0,52,1,25,7]中大于等于10的成员选出来,并放入新的序列

3. 编程找出1000以内的所有完数,结果放入序列。(用集合运算)

4. 定义一个序列其中包含多个数字。用集合运算的方式实现奇数放在序列的左边,偶数放在序列的右边。(可以创建其他序列,不必在原序列中改变)

5. 任意输入8个整数存放在一个序列中,然后将奇数和偶数分别存入到两个不同的序列中,并按奇数、偶数交替的顺序输出这两个序列中的所有数据(先交替输出,如果奇数个数多,则再输出剩下的奇数,如果偶数个数多,则再输出剩下的偶数)。

6. 序列去重。

需求:

1. 输入一个长度为10的整型序列,并存入10个整数,其中有一些数据是重复的

2. 对序列进行去重,存入新的序列,不能改变序列中原来数字的大小顺序

7. 产生101-20之间的随机数放入入列,要求随机数不能重复

5.2 循环函数

1. 1)使用循环函数生成一个长度为10的序列A1,序列值为随机数

2)将A1的每个成员值减去5,得到序列A2

3)求A2成员值的平方和

2. 计算2+4+6+……+100的和

3. 计算n的阶乘,前20

4. 计算级数:S=1+1/3+1/5+1/7+……的前100项之和

5. 编程计算表达式..n取值100

6. 1/(1x(1+1))+1/(2x(2+1))+1/(3x(3+1))+1/(4x(4+1))+1/(5x(5+1))...............1/(n(n+1)),计算前 100 项和

7. 大衍数列 0、2、4、8、12、18、24、32、40、50------

通项式:

an=(n×n-1)÷2 (n 为奇数)

an=n×n÷2 (n 为偶数)

求其前 100 项

8. 1/2-2/3+3/4-……+(-1)n-1n/n+1,求前20项和

9. ..,取前10项求ln2的近似值

10. 用幂级数展开式..,求..的近似值,取前 5 项。

5.3 循环函数进阶

1. 序列 [2,5,-3,8,9,7],对奇数项计算绝对值,偶数项计算平方

2. 序列[1,2,1,5,3,4,8]中的奇数加5,偶数乘2,然后求均值

3. 将两个长度相同的序列[2,5,-3,8,9,7][1,2,3,4,5,6]对位相减

4. 用循环函数将序列逆序,如[2,5,-3,8,9,7],变为[7,9,8,-3,5,2]

5. 使用循环函数生成序列[[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]

6. 一个34列的二级序列,序列元素的值是其对应行号的平方与对应列号之和,求其所有元素之和。

7. 某股票20日价格数据[15.8,15.92,16.05,16.4,16.28,16.39,15.75,15.38,15.21,14.68,14.85,14.98,15.2,15,15.18,14.59,14.7,14.45,14.31,13.68]

1)求最大的日增长额

2)求5日移动均值MA 5MA 5 = (前四天价格+前三天价格+前天价格+昨天价格+当天价格)/5

8. 某股票20日涨跌幅数据[-0.7538,-0.81,-2.1341,0.7371,-0.6711,4.0635,2.4057,1.1177,3.6104,-1.1448,-0.8678,-1.4474,1.3333,-1.1858,4.0439,-0.7483,1.7301,0.9783,4.6053,-5.5901],计算每日的累计涨跌幅。

9. 一个44列的二层序列,用循环函数计算该序列主对角线之和。

10. 输入六个随机数到23列的二级序列a中, 将二级序列a中的序列成员转置,即行列互换,存储到32列的二级序列b中。(用循环函数实现)

5.4 迭代函数

看代码写结果


A

1

=[2,222,22,122,2222]

2

=A1.iterate(~*2)

3

=A1.iterate@a(~*2)

4

=A1.iterate(~~*2,3)

5

=A1.iterate(~~*2,5,~>500)

5.5 定位选出

1. 序列[2,0,6,1,77,0,52,1,25,7]

1)取出倒数第2个成员

2)取出第236-3个成员

3)从第1个成员开始,每隔3个取一个

4)选出大于等于10的成员

5)选出不为0的成员

6)选出奇数号成员

7)找出所有0出现的位置

8)找出所有奇数成员位置

9)对序列中的成员求正弦,求正弦最大值,最大值位置以及对应的原序列成员

2. 计算1+2+3+……+100中所有奇数和偶数的和。用step()函数

3. 某产品销售数量和价格关系如图,有订单数量[221,87,33,73,162,227,403,288,78,213,374,152],求其对应的价格

..

4. 用选出函数,选出1~100之间每位数的乘积大于每位数的和的数

5. [95,92,83,89,76,98,58,77,85,90]为十名同学的成绩,找出大于平均分的学生序号。

6. 从序列中[221,87,33,73,162,227,403,288,78,213,374,152]定位成员[227,33,288]对应的位置

7. 交换最大值和最小值位置,例如[2,1,3,15,7,9],交换后[2,15,3,1,7,9]

8. 定义一个序列其中包含多个数字,实现奇数放在序列的左边,偶数放在序列的右边。

9. 给定一个整数序列nums 和一个整数目标值 target,请你在该序列中找出和为目标值 target的那两个整数,并输出它们的位置。

假设每种输入只会对应一个答案。但是,序列中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1

输入:nums = [2,7,11,15], target = 9

输出:[1,2]

解释:因为2+7=9,输出27的位置[1, 2]

示例 2

输入:nums = [3,2,4], target = 6

输出:[2,3]

5.6 排序相关

1. 一组学生的身高和体重数据如下

身高:[1.21,1.35,1.32,1.18,1.46,1.25,1.33,1.37,1.29,1.40]

体重: [24,31,35,28,33,36,37,42,29,32]

1)将学生身高从高到低排序

2)返回身高降序排列的学生序号

3)取前3名身高

4)取前3BMI

5)取前3BMI的学生序号

6)取前3BMI值的学生身高数据

2. 给定一个序列,返回序列在排序之后,相邻元素之间最大的差值 。如果序列元素个数小于 2,则返回 0

示例 1:

输入: nums = [3,6,9,1]

输出: 3

解释: 排序后的序列是 [1,3,6,9], 其中相邻元素 (3,6) (6,9) 之间都存在最大差值 3

示例 2:

输入: nums = [10]

输出: 0

解释: 序列元素个数小于 2,因此返回 0

3. 给定整数序列 nums 和整数 k,请返回序列中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

示例 1:

输入: [3,2,1,5,6,4], k = 2

输出: 5

示例 2:

输入: [3,2,3,1,2,4,5,5,6], k = 4

输出: 4

4. 给定一个包含 [0, n] n 个数的序列 nums ,找出 [0, n] 这个范围内没有出现在序列中的那个数。

示例 1

输入:nums = [3,0,1]

输出:2

解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。

示例 2

输入:nums = [0,1]

输出:2

解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。

示例 3

输入:nums = [9,6,4,2,3,5,7,0,1]

输出:8

解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。8 是丢失的数字,因为它没有出现在 nums 中。

示例 4

输入:nums = [0]

输出:1

解释:n = 1,因为有 1 个数字,所以所有的数字都在范围 [0,1] 内。1 是丢失的数字,因为它没有出现在 nums 中。

参考答案:

5.1 集合运算

2.


A

B

C

1

=[2,0,6,1,77,0,52,1,25,7]



2

for A1

if A2>=10

>B1=B1|A2

3.


A

B

C

D

1

0

=[]



2

for 1000




3


for A2-1

if A2%B3==0

>A1+=B3

4


if A1==A2

>B1=B1|A2


5


>A1=0



4.


A

B

C

1

[1,2,3,4,5,6,7,8,9,10]



2

for A1

if A2%2!=0

>B1=A2|B1

3


else

>B1=B1|A2

5.


A

B

C

D

1

=[46,68,99,28,50,41,76,39]




2





3

for A1

if A3%2==0

>C1|=A3

>C2+=1

4


else

>B1|=A3

>B2+=1

5

if B2<C2

for B2

>output(B1(B5),C1(B5))


6


for B2+1,C2

>output(C1(B6))


7

elseif B2==C2

for B2

>output(B1(B7),C1(B7))


8

else

for C2

>output(B1(B8),C1(B8))


9


for C2+1,B2

>output(B1(B9))


6.


A

B

C

1

=[46,68,99,28,50,41,76,39,99,50]

=[]


2

for A1

if !B1.contain(A2)

>B1=B1|A2

7.


A

B

C

D

1

=[]




2

for 10

=rand(20)+1

if !A1.contain(B2)

>A1|=B2

3



else

goto B2

5.2 循环函数

1.


A

1

=10.(rand(100))

2

=A1.(~-5)

3

=A2.sum(~*~)

2.


A

1

=50.sum(2*~)

3.


A

1

=(nf=1,20.((nf*=~,nf)))

4.


A

1

=100.sum(1/(2*~-1))

5.


A

1

=(n=100,n.sum(~*~)/n)

6.


A

1

=100.sum(1/(~*(~+1)))

7.


A

1

=100.(if(~%2==0,~*~\2,(~*~-1)\2))

8.


A

1

=20.sum(if(~%2==0,-~/(~+1),~/(~+1)))

9.


A

1

=10.sum(2/(2*~-1)/power(3,2*~-1))

10.


A

B

1

=pi(9/180)

>nf=1

2

=A1+to(2,5).sum(power(-1,~-1)*power(A1,2*~-1)/(nf*=(2*~-1)*(2*~-2),nf))


5.3 循环函数进阶

1.


A

1

=[2,5,-3,8,9,7]

2

=A1.(if(#%2==1,abs(~),~*~))

2.


A

1

=[1,2,1,5,3,4,8]

2

=A1.avg(if(~%2==1,~+5,2*~))

3.


A

B

1

=[2,5,-3,8,9,7]

=[1,2,3,4,5,6]

2

=A1.(~-B1(#))


4.


A

B

1

=[2,5,-3,8,9,7]

=A1.len()

2

=A1.(A1(B1+1-#))


5.


A

1

=to(5)

2

=A1.(~.(A1.~))

6.


A

1

=to(3)

2

=A1.sum(4.sum(A1.#*A1.#+#))

7.


A

1

=[15.8,15.92,16.05,16.4,16.28,16.39,15.75,15.38,15.21,14.68,14.85,14.98,15.2,15,15.18,14.59,14.7,14.45,14.31,13.68]

2

=A1.(if(#>1,~-~[-1],0))

3

=A1.(avg(~[-4:0]))

8.


A

1

=[-0.7538,-0.81,-2.1341,0.7371,-0.6711,4.0635,2.4057,1.1177,3.6104,-1.1448,-0.8678,-1.4474,1.3333,-1.1858,4.0439,-0.7483,1.7301,0.9783,4.6053,-5.5901]

2

=A1.run(~=~+~[-1])

9.


A

1

=[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]

2

=A1.sum(~(#))

10.


A

B

1

=2.(3.(rand(100)))

=3.(2.(0))

2

=B1.(~.(A1(#)(B1.#)))


5.5 定位选出

1.


A

1

=[2,0,6,1,77,0,52,1,25,7]

2

=A1.m(-2)

3

=A1.m([2,3,6,-3])

4

=A1.step(3,1)

5

=A1.select(~>=10)

6

=A1.select(~!=0)

7

=A1.select(#%2!=0)

8

=A1.pos@a(0)

9

=A1.pselect@a(~%2!=0)

10

=A1.max(sin(~))

11

=A1.pmax(sin(~))

12

=A1.maxp(sin(~))

2.


A

1

=to(100)

2

=A1.step(2,1).sum()

3

=A1.step(2,2).sum()

3.


A

1

=[221,87,33,73,162,227,403,288,78,213,374,152]

2

=[15,13.75,13,12.5]

3

=A1.([30,50,100,300,500].pseg(~))

4

=A2.m(A3)

4.


A

1

=to(100)

2

=A1.select((a=~\10,b=~%10,a*b>a+b))

5.


A

1

=[95,92,83,89,76,98,58,77,85,90]

2

=A1.pselect@a((avg=A1.avg(),~>avg))

6.


A

1

=[221,87,33,73,162,227,403,288,78,213,374,152]

2

=[227,33,288]

3

=A2.(A1.pos(~))

7.


A

1

=[2,1,3,15,7,9]

2

=A1.pmax()

3

=A1.pmin()

4

>(a=A1(A2),A1(A2)=A1(A3),A1(A3)=a)

8.


A

1

=[1,2,3,4,5,6,7,8,9,10]

2

=A1.select(~%2!=0)|A1.select(~%2==0)

9.


A

B

1

=[2,7,11,15]

9

2

=A1.(B1-~).select(~+~!=B1)


3

=A2.(A1.pos(~)).select(~>0)


5.6 排序相关

1.


A

B

1

=[1.21,1.35,1.32,1.18,1.46,1.25,1.33,1.37,1.29,1.40]

=[24,31,35,28,33,36,37,42,29,32]

2

=A1.sort@z()


3

=A1.psort@z()


4

=A1.top(-3)


5

=A1.top(-3,B1(#)/~/~)


6

=A1.ptop(-3,B1(#)/~/~)


7

=A1.top(3;-B1(#)/~/~)


2.


A

1

=[3,6,9,1]

2

=A1.sort()

3

=A2.max(if(#>1,~-~[-1],0))

3.


A

B

1

=[3,2,1,5,6,4]

>k=2

2

=A1.sort@z()(k)


4.


A

B

1

=[9,6,4,2,3,5,7,0,1]


2

=A1.sort()


3

if A2(1)!=0

>B1=0

4

else if A2.m(-1)!=A1.len()

>B1=A1.len()

5

else

>B1=A2.select(~-~[-1]>1)(1)-1