内容正文:
2023-2024学年浙教版高一下学期第五章第二节 解析算法的程序实现
一、选择题
1.已知海伦公式:s=√p(p-a)(p-b)(p-c),p=(a+b+c)/2,a、b、c分别为三角形的边长,利用海伦公式求三角形面积的算法属于( )
A.解析法 B.查找法 C.排序法 D.穷举法
2.运行下列VB程序,在文本框Text1中输入十进制数22,单击按钮后,在标签Label1输出转换后的五进制数。
Private sub Command1_Click()
Dim y As Integer
Dim s As String,Dim r As Integer
y= Val(Text1. Text)
s=" "
Do While y < > 0
Loop
Labell. Caption =s
End sub
方框中的代码由以下三部分组成:
①s=Str(r)+s ②r=y Mod 5 ③y=y\5
代码顺序正确的选项是( )。
A.①②③ B.③②① C.②①③ D.③①②
3.下列数学问题最适合用分支结构解决的是( )
A.已知圆的半径R=5,求圆的面积S
B.求连续整数1到100的和
C.求点P(-1,3) 到直线L:3x-2y+1=0的距离
D.解不等式ax+b>0(a≠0)
4.有如下 VB 程序段:
s = Text1.Text
n = Len(s)
For i = 1 To n
c = Mid(s, i, 1)
If c >= "a" And c <= "z" Then t = Asc(c) - 32
Else t = Asc(c)
s1 = s1 + Chr(65 + (t - 63) Mod 26)
Next i
在文本框 Text1中输入“abXY”,s1的值最终是( )
A.CDZA B.cdZA C.ZACD D.ZAcd
5.有如下VB程序:
s=Text1.Text
s1=" "
For i=1 To Len(s)
c=Mid(s, i, 1)
If c>="A" And c<="Z" Then
c=Chr(Asc(c)+32) '大写字母转化为小写字母
End if
s1=s1+c
Next i
Text2.Text=s1
在文本框Textl中输入"ABcd12XY ",执行上述程序段后,文本框Textl显示的内容是( )
A.abcd12XY B.abcd12xy C.ABCD12XY D.ABcd12xy
6.表达式Len(“doodluck”)+2 Mod 3+Int(3.9999)的值为( )
A.12 B.13 C.14 D.表达式运算出错
7.某VB程序的一个事件处理过程如下:
Private Sub Commandl_Click( )
Dim a(3)As Integer
a(1)=400:a(2)=10:a(3)=30
a(0)=a(2)^2-4*a(1)*a(3)
Text1.Text = Str(Sqr(a(0)))
End Sub
程序运行时,单击命令按钮Command1后出现的错误提示为( )
A.下标越界 B.溢出 C.无效的过程调用或参数 D.要求对象
8.有下列 VB 程序段:
Dim strA As String, strB As String strA = "hongda":strB = ""
For i = 1 To Len(strA) * 2 If i / 2 = Int(i / 2) Then
strB = strB + Chr(Asc(Mid(strA, (i - 1) Mod Len(strA) + 1, 1)) + 2) End If
Next i
该程序段运行后,变量 strB 的值是( )
A."jpfqic " B."qicqic" C."phbqic" D."qicoga"
9.将一个随机排列的数组 a(a(1)~a(n),n≥4)中的奇数下标元素升序排列,偶数下标元素降序排列,小玉编写的部分VB程序段如下:
For i = 1 To n - 2
For j = ① To n Step 2
If j Mod 2 = ② Then
If a(j) < a(i) Then t = a(i): a(i) = a(j): a(j) = t
Else
If a(j) > a(i) Then t = a(i): a(i) = a(j): a(j) = t
End If
Next j Next i
上述程序段两个方框处的语句分别为( )
A.① i + 1 ② 0 B.① i + 2 ② 0 C.① i + 1 ② 1 D.① i + 2 ② 1
10.“不重复数”的特征是任何相邻两个数位上的数字都不相同。如1101是重复数,1201是不重复数。判断某数是不是重复数的VB程序段如下:
s = Text1.Text
(1)
i = 1: flag = True
Do While i <= n - 1 And flag
If (2) Then flag = False
i = i + 1
Loop
If (3) Then
Label1.Caption = "重复数"
Else
Label1.Caption = "不重复数"
End If
上述程序中方框处可选语句为:
①flag=False
②n=Len(s)
③Mid(s,i,1)=Mid(s,i+1,1)
则(1)、(2)、(3)处语句依次是( )
A.②、③、① B.①、③、② C.②、①、③ D.③、②、①
11.下图所示的流程图中 C 的值为( )
A.2 B.3 C.5 D.6
12.执行下面的程序段后,x的值为( )
x=5
For i=1 To 20 Step 2
x=x+i\5
Next i
A.21 B.22 C.23 D.24
13.【加试题】有如下VB 程序:
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As String, n As Integer, s As String
s = "abcdefghijklmn"
n = 4
List1.Clear
For i = 1 To n
k = Mid(s, i + 1, i)
For j = 1 To Len(k)
k = k + Mid(s, j, 1)
Next j
List1.AddItem k
Next i
End Sub
该程序运行后,在列表框List1中显示的是( )
A. B.
C. D.
14.有如下 VB 程序段:
str1 = Text1.Text :len1 = Len(str1)
i = 0
Do While i <= len1
m = 0 : c = Mid(str1, i, 1)
Do While c <> ","
m = m * 10 + Val(c)
i = i + 1
c = Mid(str1, i, 1)
Loop
i = i + 1
If m Mod 3 = 0 Then n = n + 1
Loop
Label1.Caption = Str(n)
在文本框 Text1 中输入“123,35,43,23,56,78,132, ”,单击命令按钮 Command1 运行程序, 则在 Label1 中显示的结果为( )
A.2 B.3 C.4 D.5
15.编写一个二进制列表程序;功能如下;在文本框Textl中输入位数n,单击“显示”按钮Command1,在列表框Listl中顺序显示n位二进制编码。程序界面及代码如下。
Private Sub Commandl_Click
Dim tmp As String
Dim n As Integer, t As Integer
Dim i As Integer, j As Integer, k As Integer
n=Val(Textl. Text)
For i=0 To (1) _
tmp=""
k=i .
For j=1 To n
t=k Mod 2
(2)
(3)
Next j
Listl. AddItem tmp
Next i
End Sub
可选的代码如下:
①2^n―1 ②2^n ③k=k\2 ④t=t\2
⑤tmp=Str(t)+tmp ⑥tmp=tmp+Str(t)
则程序(1),(2),(3)处的代码依次为( )
A.①⑤③ B.②④⑥ C.②⑤④ D.①⑥③
二、填空题
16.【加试题】小丫觉得回文字符串太优美了(回文字符串是指顺读和倒读都一样的字符串,如“123321”),为此编写了VB 程序。程序运行时,单击按钮Command1 后,根据文本框Text1 中输入的内容判断并输出是不是回文串。实现上述功能的VB 代码如下。
Private Sub Command1_Click()
Dim s As String, f As Boolean, L As Integer
s = Text1.Text
j = Len(s)
i = 1
Do while ①
i = i+1
j = j-1
Loop
If ② Then Print " 是回文串" Else Print " 不是回文串"
End Sub
在画线处填入合适代码,使程序能正常运行。
①
②
17.下列VB程序运行时,在文本框Text1中输入2,单击命令按钮Command1后,文本框Text2的内容是 。
Private Sub Command1_Click()
Dim t As Single, h1 As Single, h2 As Single
Const g = 9.8
t = Val(Text1.Text)
h1 = (g * t ^ 2) / 2
h2 = Int(h1)
Text2.Text = Str(h2)
End Sub
18.补全程序。
已知包含25项的数列:1,2/3,3/5,……,24/47,25/49
问题1:写出该数列的通项公式f(n)=
问题2:以下是计算s=1+2/3+3/5+……+24/47+25/49的程序,请补全代码。
Dim i As Integer
Dim s As Single
s = 0
For i = 1 To 25
s = s +
Next i
Print s
19.编写VB程序,实现如下功能:单击“计算”按钮,在列表框List1中产生10个[1,99]随机数,文本框Text1显示相邻两个数字之间相差最大的差值。运行界面如图所示。
(1)窗体上,“计算”按钮的对象名是 。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private sub cmd1_click( )
Dim b(1 to 10) as integer
Dim I as integer,max as integer ,a as integer, c as integer
Max=0
For i=1 to 10
Randomize
A=int(rnd*99)+1
List1.additem str(a)
Next i
For i=2 to 10
C=
If c>max then
Next I
End sub
20.下面是一段Visual Basic程序:
Private Sub Command1_Click()
Dim sum As Double,i As Integer
sum = 0
For i =" 1" To 5
sum = 2
sum = sum+i
Next i
Text1.Text = Str(sum)
End Sub
该程序运行后,语句sum=sum+i共执行了____ ____次,sum的值为 ,i的值为 。
三、操作题
21.某8位日期加密授权码生成方法描述如下:
①授权码由9位字符组成,前8位为日期的密文,最后1位为验证码。
②日期的最后1位数字k(若k的值为0,令k = 10),加密成26个大写英语字母表中该位置对应的字母。
③将26个大写英文字母向左移k(日期的最后1位数字)个位置,并将移出的k个字母依次连接到最后。例如当k = 3时,形成如图所示新的字母排列顺序。
位置
1
2
3
4
……
23
24
25
26
字母
D
E
F
G
……
Z
A
B
C
④日期的第1个数字至第7个数字的加密方法:计算第i个位置上的数字与第i + 1个位置的数字及位置i三者相加的和,在新的字母表中取出该数字和对应的字母,作为第i个位置上数字加密字符。
⑤计算日期的各个位置上数字之和sum,若和sum的值大于26,则在新的英文字母表中,sum Mod 26对应字母转换成小写字母,作为验证码,否则验证码为新的英文字母表中对应字母。
(1)根据上述加密算法,若输入日期为“20000101”,则生成的注册码为 。
(2)小张根据上述的加密算法,设计了一个对应的解密程序,其VB代码如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim i As Integer,j As Integer,s As String,k As Integer
Dim mw As String,sum As Integer,t As Integer,t1 As Integer
str1 = “0123456789”
s = Text1.Text
t = k:sum = t
s1 = Mid(str1,t + 1,1)
For i = 7 To 1 Step-1
t1 = Asc(Mid(s,i,1))-64
j =
t = j-t-i
s1 = Mid(strl,t + 1,1) + s1
sum = sum + t
Next i
mw = jm(k)
If sum > 26 Then
sum = sumMod26
ch = Chr(AsC(Mid(mw,sum,1)) + 32)
Else
ch = Mid(mw,sum,1)
End If
If ch = Mid(s,9,1) Then Text2.Text = s1 Else Text2.Text = “该系列号未能通过验证!”
End Sub,
Function jm (tAsInteger) As String
Dim i As Integer,p As Integer
If t = 0 Then t = 10
For i = 1 To 26
p = (t + i-1) Mod26
Next i
End Function
22.获取字符串中指定范围内的元素,可以通过字符编号来实现,字符编号有正向编号和反向编号。如字符串"ABCDEF",字符A的正向编号为1、反向编号为-6,如下表:
"2:4"表示获取正编号"2"到"4”的字符串,即"BCD",-5:-3、2:-3、-5:4这三种编号范围也表示的是字符串"BCD"。
小王根据上述算法设计如下程序,在文本框Textl输入字符串,在文本框Text2和Text3中输入字符编号,单击"获取"按钮,在标签Labell中显示指定范围的字符串。当Text2中的编号位置在Text3中的编号位置之前,则输出正向字符串,反之输出逆向字符串。程序运行界面如图所示。
(1)用户单击命令按钮Command1时调用的事件处理过程为 。(单选,填字母:A.Command1/
B.Caption/C.Click/D.Commandl_Click)。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim s As String, ans As String
Dim a As Integer,b As Integer, n As Integer
s=Textl.Text:n= Len(s): ans=""
a=Val(Text2.Text): b = Val(Text3.Text)
If Abs(a)>n Or Abs(b)>n Or a *b=0 Then
ans="输入范围有误"
Else
If a<0 Then a=a+n+ 1
If b<0 Then b= ①
If a<=b Then
ans= ②
Else
Fori=a To b Step-1
ans=ans+Mid(s,i,1)
Next i
End If
End If
Label1.Caption=ans
End Sub
(3)若文本框Textl中输入的内容为"123456789",文本框Text2和Text3中输入的内容分别为-3和5,单击"获取”按钮,标签框Labell中显示的内容是 。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.A
2.C
3.D
4.A
5.B
6.B
7.B
8.B
9.D
10.A
11.C
12.A
13.B
14.B
15.A
16. mid(s,i,1)=mid(s,j,1) i>=j
17.19
18. n/(2n-1) i/(2*i-1)
19. Cmd1 b(i)=a abs(b(i﹣1)﹣b(i)) max=c text2.text=str(max)
20.5、7、6
21. DCDEGHIAE Dk = Asc(Mid(s,8,1))-64Ek = Asc(Mid(s,8,1))-Asc("A") + 1 (t1-k + 26) Mod 26 jm = jm + Chr(65 + p)
22. D b+1+n Mid(s,a,b-a+1) 765
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$