
●变化段:数组中相邻两个元素构成一个变化段。变化段有上升段(a(i)>a(i-1))、下降段(a(i)<a(i-1))和持平段(a(i)=a(i-1))。数组a中的n个元素可构成n-1个依次排列的变化段。
●波峰:从上升段转到下降段形成一个波峰。波峰的起点是峰顶前所有连续上升段中的第1个,终点是峰顶后所有连续下降段中的最后1个。
●对称波峰:上升段与下降段个数相同的波峰称为对称波峰。
下图为一组数据的变化段及波峰示意图。
现要求统计数组a各元素依次变化过程中“对称波峰”的个数。小李依据上述描述设计了如下VB程序。请回答下列问题:
Const n=20
Dim a(1 To n)As Integer
Private Sub FormLoad()
‘读取数据,并存储到数组a中。代码略
End Sub
Private Sub Command1_Click()
Dim flag As Integer ‘存储变化段的状态:1表示升;-1表示降;0表示平
Dim count As Integer ‘存储对称波峰的个数
Dim steps As Integer
Dim i As Integer
flag=0:steps=0:count=0
For i= ① To n
If a(i)>a(i-1)Then
If IsSymPeak(flag,steps)Then count count+1
If flag=0 Or flag=-1 Then
②
Else
steps=steps+1
End If
flag=1
EIself a(i)=a(i-1)Then
If IsSymPeak(flag,steps)Then count=count+1
steps=0
flag=0
Else
steps=steps-1
flag=-1
End If
Next i
If IsSymPeak(flag,steps)Then count=count+1
Text1.Text=Str(count)
End Sub
Function IsSymPeak(flag As Integer,steps As Integer)As Boolean
If ③ Then
IsSymPeak=True
Else
IsSymPeak=False
End If
End Function
① ② ③
实现上述功能的VB程序如下,请回答下列问题:
Dim sName(100) As String
Dim kh(100) as string
Private Sub Command1_Click()
Dim y As Integer
Dim start As Integer '考场第1位数据元素的下标
Dim pa As Integer '数据库导入VB时学生数据下标
Dim pb As Integer '考场座位数据下标
Dim i As Integer,j As Integer,k As Integer,m As Integer
Dim kcsName(100) As String
start = 1
pa = start
recCount = x-1
If recCount Mod 30 <> 0 Then
For i = 1 To y ‘将当前考生人数添加到30的整数倍
recCount = recCount +1
sName(recCount) = " "
Next i
End If
For j = 1 To recCount / 30
pa = start
pb = start
For i = 1 To 30
kcsName(pb) = sName(pa)
pb = pb +1
If i Mod 5 = 0 Then
pa = start +i \5
Else
End If
Next i
start = start +30
Next j
Text1.Text = " "
start = 1
For k = 1 To recCount /30
m = start
Text1.Text = Text1.Text + "第" + Str(k) + "考场" + vbCrLf
'vbCrLf为换行标志符,实现Text1中内容换行显示
For i = 1 To 6
For j = 1 To 5
Text1.Text = Text1.Text +" " +kcsName(m)
m = m +1
Next j
Text1.Text = Text1.Text +vbCrLf
Next i
Text1.Text = Text1.Text +vbCrLf +vbCrLf
Next k
End Sub
Private Sub form_load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=" & App.Path & "/kaochang.accdb"
conn.Open
Set rs.ActiveConnection = conn
rs.Open "select * from banji"
x = 1
List1.AddItem " 考号 姓名"
Do While Not rs.EOF '
kh(x) = rs.fields("kh")
sName(x) = rs.fields("xm")
List1.AddItem kh(x) + " " + sName(x)
x = x + 1
rs.MoveNext
Loop
rs.Close
End Sub
⑴原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小;
⑵反码表示法规定:正数的反码与其原码相同:负数的反码是对其原码逐位取反,但符号位除外。如二进制原码10010,则反码11101(注:在10010中,左边的1为符号码,故为负);
⑶补码表示法规定:正数的补码与其原码相同:负数的补码是在其反码的末位加1,符号位除外。
根据以上运算规则,二进制有符号数100011的补码的十进制表示是( )
依次对音频文件进行如下操作:
①将后 5 秒音频设为静音
②将右声道上音频删除
③直接保存处理后的音频文件
则处理后的音频文件与原文件的存储容量之比约为( )
以下说法中正确的是( )
文件存储容量为2.94GB,则该视频的时长约为( )
当计算到第50项时,数据为12586269025,此时就无用普通数据类型表示位数这么多的计算结果,所以可以采用高精度加法。即运用数组,用程序模拟列竖式计算的过程。若以100位及以内的两个正整数进行高精度加法计算的一般算法如下: ⑴将前一个整数各位上的数字按照从低位到高位的顺序依次存入数组a(1)、a(2)、a(3)…、a(100)中,将后一个整数各位上的数字按照从低位到高位的顺序依次存入数组b(1)、b(2)、b(3)、…、b(100)中;
⑵按照从低位到高位的顺序,将两个整数各位数值进行逐位相加计算,a(1)和b(1)相加,结果存入c(1)中,a(2)和b(2)相加,结果存入c(2)中…;
⑶对数组c中的计算结果进行从低位到高位的进位处理;
⑷按照从高位到低位的顺序输出数组c中的计算结果。
问题:为实现上述功能,代码如下,将划线处的代码补充完整。
Private Sub Command1 _Click ( )
Const t = 1000
Dim a(t) As Integer, b(t) As Integer
Dim c(t) As Integer
n = Val(Text1. Text)
Text2. Text =“”
For i = 1 To t
a(i) = 0: b(i)=0: c(i)=0
Next i
a(1) =1
b(1) = 1
For i =3 To n
For j = 1 To t
c(j)= ①
Next j
For j = 2 To t
c(j)= ②
c(j-1) = c(j-1) Mod 10
Next j
For j = 1 To t
a(j)=b(j): b(j)=c(j): c(j)=0
Next j
Next i
i=t
Do While b(i)=0
③
Loop
Do While i > 0
Text2. Text = Text2. Text & b(i)
i =i-1
Loop
End sub
① ② ③
在当前状态下,下列说法错误的是( )