题库 高中信息

题干

给定一个数组a,有n个元素(1≤n≤100),有以下两种操作:
操作1:在文本框中分别输入L、R、T(1≤L≤R≤n),对数组下标为L到R之内(包含L和R)的每个元素增加T(1≤T≤100)
操作2:在文本框中输入K(1≤K≤n),在标签中输出a(K)的值。
为了提高算法的效率,小明设计了如下算法,以n=10为例,如下表所示。
数组下标
l
2
3
4
5
6
7
8
9
l0
元素的值
7
l2
3
6
7
1l
8
24
9
5
 
①将n个元素依次分成段(表示对石向下取整,每段的元素个数为,若最后有不足个元素,则自成一段。给每段设置一个标记,初始值都为0,如下表所示。
数组下标
l
2
3
4
5
6
7
8
9
10
元素的值
7
12
3
6
7
1l
8
24
9
5
段编号
第l段
第2段
第3段
第4段
段标记值
0
0
0
0
 
②对于操作1,输入的L、R属于同一段,则直接对a(L to R)的每个元素加上T。如输入4,6,3,则第2段中的每个数加上3,操作后如下表所示。
数组下标
1
2
3
4
5
6
7
8
9
10
元素的值
7
l2
3
9
10
14
8
24
9
5
段编号
第1段
第2段
第3段
第4段
段标记值
0
0
0
0
 
③对于操作1,若输入的L,R不属于同一段,则对元素a(L)所在段中从a(L)开始到该段最后一个元素为止的每个元素加上T,并对元素a(R)所在段中从该段第一个元素开始到a(R)为止的每个元素加上T,对a(L)元素所在段的下一段开始到a(R)元素所在段的前一段为止的每个段标记值增加T,这些段中的元素保持不变。如在上表的其础上再输入1,8,2,则第1段的3个数和第3段中的前2个数都加上2,第2段的段标记位增加2,如下表所示。
数组下标
l
2
3
4
5
6
7
8
9
l0
元素的值
9
14
5
9
l0
l‘l
10
26
9
5
段编号
第1段
第2段
第3段
第4段
段标记位
0
2
0
0
 
④对于操作2,若输入K的值为5,则输出a(5)的值,a(5)的值为该数组元素的值+段标记值,即a(5)=12。程序运行界面如下。请回答下列问题:
(1)若数组元素为“3,2,6,8,7,9,3,4,7,9,6”,依次进行以下3次操作后第3段的标记值为__________

操作1:依次输入1,11,1
操作1:依次输入7,9,2
操作2:输入8
(2)请在划线处填入合适的代码。
Const n = 10
Dim a(1 To n) As Integer
Dim f(1 T on) As Integer 'f数组元素依次表示每段的标记值
Dim bk As Integer     'bk表示每段的元素个数
Function BL(x As Integer) As Integer 'BL函数返回数组元素a(x)的段编号
BL=________________
End Function
Private Sub Form_Load()
’读取数据,并存储到数组a中,代码略
bk=Int(Sgr(n))
End Sub
Private Sub Command1_Click()
Dim L As Integer,R As Integer,T As Integer,i As Integer
L=Val(Text1.Text):R=Val(Text2.Text):T=Val(Text3.Text)
If BL(L)=BL(R) Then

For i=L To R

a(i)=a(i)+T
Next i

EIse

For i=______________
a(i)= a(i)+T
Next i
For i=BL(L)+1 To BL(R)-1
f(i)= f(i)+T
Next i
For i=(BL(R)-1)* bk+1 To R
a(i)= a(i) +T
Next i

End If

End Sub
Private Sub Command2_Click()
Dim K As Integer
K=Val(Text4.Text)
Labe.15.Caption="经过一系列操作后.a("+Str(K)+ ")的值为:"+___________
End Sub
上一题 下一题 0.99难度 填空题 更新时间:2019-11-20 12:47:36

答案(点此获取答案解析)

同类题4

算法设计与程序实现
判断车牌的单双号
(背景知识)

 为了保障空气质量,减少雾霾,某市决定当空气污染严重时,实行汽车单双号限行,违反规定的车辆将予以处罚。

如何让高清摄像头自动判断车牌的单双号,交警犯了愁,他需要编程高手的你帮忙,完善下面的程序。(提示:(1)所有车牌号中都含有数字,并且车牌号的长度都是6;(2)以车牌中最后一位阿拉伯数字的奇、偶来决定单双号。)

 (1)输入:AD2367

(2)输入:A8888A

(3)输入:A8963C

输出:单号

输出:双号

输出:单号

 

(算法描述)

(1)自然语言

第1步:输入车牌号

第2步:取车牌号的最后一位x;

第3步:判断x是否为数字,如果是,转第4步;如果不是,则依次取得倒数第二、三……位判断,直到找到数字为止;

第4步:判断x 是奇数还是偶数,然后输出相应的结果。

(2)流程图

请根据上述算法描述补全代码

  Dim n As Integer

  Dim s As String ‘定义s 为字符串类型

  Dim x As String

  s=InputBox(“s=”,s)   ‘将输入的车牌号赋值给s

  n=6 ‘车牌号的长度为6

  x=Mid(s,n,1) ‘取车牌号s的第n位

  Do While x<”0” Or x>”9”  ‘x不是数字字符,则取x的前一位

   

   x=Mid(s,n,1) ‘取车牌号s的第n位

  Loop

  If       then

Print “双号”

   Else

Print “单号”

   End If

(提示:Mid(s,m,n)的功能:从字符串s的第m位开始,截取长度为n的子串。例如:Mid(“A8963C”,5,1)的返回值是“3”。)

1. 根据题意,程序中空白①处应填写:_______________________________ 。
2. 根据题意,程序中空白②处应填写:______(填写字母:A/B/C/D)。

A、Val(x)\ 2= 0   B、Val(x)Mod 2 = 1   C、Val(x) Mod 2=0   D、Val(x) Mod 2 <> 0