解析算法及程序实现 知识点题库

现要求编写VB程序实现如下功能:在文本框Text1中输入正整数n(n为奇数),单击“生成”命令按钮后,如下图所示,在文本框Text2中会显示一个有规律的对称数字串,形式为“1 3 … n-2 n n-2 3 1”。 例如n=9时,显示的数字串为“1 3 5 7 9 7 5 3 1”。

 

  1. (1) 根据代码可知,命令按钮“生成”的对象名是
  2. (2) 实现上述功能的VB程序如下。请在划线处填入合适代码。

    Private Sub Com1Click()

       Dim n As Integer, i As Integer, s As String

      

       s = ""

       For i = 1 To n

         If i <= n \ 2 + 1 Then

            s = s + Str(2 * i - 1)

         Else

           s = s +

         End If

       Next i

       Text2.Text = s

    End Sub

  3. (3) 当n=9时,在实现程序功能的情况下,如果将程序中加框处的代码换成“s = Str(2 * i - 1) + s”,单击“生成”按钮,其输出结果为
模拟一个简单计算器,输入两个数和一个运算符(加、减、乘、除),进行算术运算,并输出运算结果。程序界面如第14题图所示,在文本框Text1输入第一个数a,在文本框Text2输入第二个数b,在文本框Text3输入运算符ch,在文本框Text4中输出结果。

当输入的运算符不是加、减、乘、除四种运算符时,则输出“运算符不正确”;当进行除法运算时,如果除数为0,提示输出“除数不能为零”。相应的Visual Basic程序如下,在①和②划线处,填入合适的语句或表达式,把程序补充完整。

Private Sub Command1_Click()

    Dim a As Single, b As Single, ch As String

    a = Val(Text1.Text)

    b = Val(Text2.Text)

             ①      

    If ch = "+" Then

        Text4.Text = Str(a + b)

    ElseIf ch = "*" Then

        Text4.Text = Str(a * b)

    ElseIf ch = "-" Then

        Text4.Text = Str(a - b)

    ElseIf ch = "/" Then

        If  ②  Then Text4.Text = Str(a / b) Else Text4.Text = "除数不能是零"

    Else

                 ③     

    End If

End Sub

  1. (1) 解决此问题采用的算法是。(填:解析算法/枚举算法/查找算法)
  2. (2) 程序中划线处①应填入

    程序中划线处②应填入

    程序中划线处③应填入

编写VB程序,实现如下功能:在文本框Textl和Text2中分别输入一个整数,单击命令按钮Command1,在列表框List1中显示结果,运行效果如图1所示。结果包含两列数据,第1列为两数之间的摄氏温度值(间隔1度、升序),第2列为对应的华氏温度值。

  1. (1) 要使命令按钮Command1上显示的文本改为“转换”,可在其属性窗口(图2)中将属性的属性值修改为“转换”。
  2. (2) 为实现上述功能,请在划线处填入合适代码或选项。

    Private Sub Command1_Click()

    Dim t1 As Integer, t2 As Integer

    Dim i As Integer, t As Integer

    Dim f As Single

    List1.Clear

    t1 = Val(Text1.Text)

    t2 = Val(Text2.Text)

    If ① Then  '(选填字母,从下列A、B、C、D四个选项中选取一项)

      t = t1: t1 = t2: t2 = t

    End If

    i = t1

    Do While ②  '(选填字母,从下列A、B、C、D四个选项中选取一项)

    f = i * 9 / 5 + 32    '摄氏温度转换为华氏温度

    List1.AddItem Str(i) + "          " + Str(f)

      '(填程序代码)

    Loop

    End Sub

    划线①、②处的选项: A. i <= t2    B.f <= t2    C.t1 > t2    D. i < f

已知 a =1 , b = 2 ,c =3 计算下列表达式的值:
  1. (1) a+b * c :  
  2. (2) (a-b)/a+b :  
  3. (3) a-b/a+b :  
  4. (4) (a+b)\b mod c 
  5. (5) c mod b + a : 
【加试题】神性的数学黑洞数6174。一个任意的四位正整数(四位数字完全相同除外),将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。如取四位数5462,按以上方法作运算如下:

①6542-2456=4086  ②8640-0468=8172  ③8721-1278=7443  ④7443-3447=3996

⑤9963-3699=6264  ⑥6642-2466=4176  ⑦7641-1467=6174

编写程序实现实现上述功能。从文本框Text1中输入一个任意的数字不完全相同的四位正整数,在文本框Text2中输出掉进黑洞的步数。实现上述功能的VB代码如下,但加框处代码有错,请改正:

Private Sub Command1_Click()

 Dim a(1 To 4) As Integer, c As Integer, t As Integer

 Dim x As Integer, y As Integer, i As Integer, j As Integer

x = Val(Text1.Text)

c = 0

 Do While x <> 6174

 For i = 1 To 4     '把四位正整数x的每一位数字取出并存放到数组a中

a(i) = x Mod 10

       ' (1)

Next i

 For i = 1 To 3

  For j = i + 1 To 4

  If  Then  ' (2)

t = a(i): a(i) = a(j): a(j) = t

End If

  Next j

 Next i

 x = a(1) * 1000 + a(2) * 100 + a(3) * 10 + a(4)

 y = a(1) + a(2) * 10 + a(3) * 100 + a(4) * 1000

 x = x - y

 c = c + 1

 Loop

 Text2.Text = Str(c)

End Sub

  ⑵

一个大于1的自然数,除了1和它本身外,不能被其他自然数整除的数称为质数又称素数,下列程序用来判断文本框text1中输入的数是否素数,请完善以下三处代码。

Dim i As Integer, m As Integer ,flag as Boolean

m =

flag=

For  i = 2  To  int(sqr(m)) 

If    Then

 flag=false

 Exit For

End if

Next  i 

If flag=true Then 

Text2.Text = str(m) +"是素数" 

Else 

Text2.Text = str(m)  +"不是素数"

End if

编写“字母出现频率测试”程序,实现如下功能:在文本框Text1中输入英文句子,单击“统计”按钮,在列表框List1中显示小写字母出现的次数,同时显示字母出现频率最高的次数。程序运行界面如图1所示。

图1

  1. (1) 在设计程序界面时,使应使用图2所示“控件工具箱”中的(填写相应编号)添加“统计”按钮。

    图2

  2. (2) 实现“统计”功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub CmdTJ_Click()

    Dim count(25) As Integer

    Dim ch, ch2 As String

    Dim m As Integer

    ch = Text1.Text

    For k = 1 To Len(ch)

          ①  

       n =  Asc(ch2)-Asc(“a”)

       If n >= 0 And n <= 25 Then

         count(n) = count(n) + 1

         List1.AddItem "字母" + ch2 + "出现" + Str(count(n)) + "次"

       End If

    Next k

    m = count(0)

    For k = 1 To 25

       If    ②    Then  m = count(k)

    Next k

    Label1.Caption = "字母最高出现" + Str(m) + "次"

    End Sub

     ② 

  3. (3) 分析如上代码,“统计”按钮的对象名称为(单选,填字母:A . Command1 / B . CmdTJ / C . CmdTJ_Click / D .统计)
  4. (4) 运行该程序,在文本框中输入It's never too late to mend.,单击“统计”按钮后,对语句m = count(k)执行次数的描述,最合理的是

    (单选,填字母:A .执行次数介于1-10; B .执行次数介于10-20; C .执行次数介于20-25)

编写“判断素单词”程序,实现如下功能,在文本框内输入一下单词,每个单词由a~z以及A~Z的字母组成。每个字母对应一个特定的值,字母a对应1,字母b对应2,以此类推,字母z对应26;类似的字母A对应27,字母B对应28,字母Z对应52。若这个单词的各字母对应数值的总和是素数,则这个单词是素单词(prime word)。例如“AcM”各字母对应数值的总和是69,不是素数,则在Label1中输出“It is not a prime word.”否则输出“It is a prime word.”。(素数是只能被1和它本身整除的整数。字母“A”的ASCII码值是65,“a”的ASCII码值是97)

  1. (1) 在设计程序界面时,要清空文本框中的显示内容,应修改文本框的属性。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

    Dim s As String, n As Integer

    Dim i As Integer, m As Integer

    Dim f As Boolean

    s = Text1.Text

    n = Len(s)

    For i = 1 To n

        t = Mid(s, i, 1)

          If t >= "A" And t <= "Z" Then

                m = m + Asc(t) - 38

             ElseIf t >= "a" And t <= "z" Then

                m =

             End If

    Next i

    f = True

    For i = 2 To m - 1

             If m Mod i = 0 Then f = False

    Next i

    IfThen

             Label1.Caption = "It is a prime word."

    Else

             Label1.Caption = "It is not a prime word."

    End If

    End Sub

  3. (3) 运行该程序,在文本框Text1中输入“Are”,单击“判断”按钮,则在Label1中显示的结果是
【加试题】小柯编写了一个多位数乘法的VB程序,运行界面如图所示。在文本框Text1中输入一个小于等于1000位的被乘数,在文本框Text2中输入1位乘数,点击“开始计算”按钮Command1后,在文本框Text3中显示计算结果。

实现上述功能的VB程序如下,但加框代码有错,请改正。

   Private Sub Command1_Click()

Dim d(1 To 1001) As Integer

Dim str1 As String, str2 As String

Dim i As Integer, n As Integer, k As Integer, s As Integer

str1 = Text1.Text

n = Len(str1)

For i = 1 To n

    D(i) = Val(Mid(str1, i, 1))

Next i

s = 0

k = Val(Text2.Text)

For i = n To 1 Step -1

          ①

      s = d(i) \ 10

   D(i) = d(i) Mod 10

Next i

If s <> 0 Then str2 = CStr(s) Else str2 = ""  'CStr()不会在返回的字串前加1个空格。

For i = 1 To n

          ②

Next i

Text3.Text = str2

End Sub

 ② 

下列程序所计算的数学式子是(  )

PRIVATE SUB FORM__CLICK( )

S=0

FOR A= 1 TO 5

    S=S+(10^A-1)/3

NEXT A

PRINT S

END SUB

A . 10+100+1000+10000+100000 B . 1+11+111+1111+11111 C . 3+33+333+3333+33333 D . 9+99+999+9999+99999
小宇为选定班级参赛作品编了一个VB程序,设计如下:在文本框Textl中输人5位评委对3个作品的评分依据(评委对作品的评分数据由3位十进制数组成,第1位对应作品编号,第2、3位对应作品得分,分值范围为[60,99]。如“275”表示2号作品得分75)。单击“计分”按钮后,在标签Iabell中输出3个作品的平均分,在Label2中输出参赛的作品(选择最高平均分作品参赛,若最高平均分存在并列,则从并列作品中随机抽取)。程序运行界面如图所示。

  1. (1) “计分”按钮的对象名为
  2. (2) 程序部分代码如下,请在划线处填入合适的代码.

    Private Sub jf_Click()

    Dim s As String, d As String, i As Integer

    Dim f1 As Single, f2 As Single, f3 As Single

    s = Text1.Text

    i = 1

    Do While   ①   

      d = Mid( s, i, 3)

      If Mid(d, 1, 1)= "1" Then

        fI = fl + Val(Mid(d,  2, 2))

      Elself Mid(d, 1, 1)="2" Then

        f2 = f2 + Val(Mid(d,  2,  2))

      Else

        f3 = f3 + Val(Mid(d,  2, 2))

      End If

         ②   

    Loop

    Label1.Caption = "作品1平均分为:"+Str(fl/5)+"作品2平均分为:"+Str(f2/5)+"作品3平均分为:"+Str(f3/5)

    '以下省略“处理并列最高平均分,并在 Label2中输出选取的参赛作品”的代码

    End Sub

  3. (3) 运行该程序时,在文本框Textl中以不同的顺序输入原评分数据:380/295/283/170/180/385/372/285/190/180/390/384/272/170/276,单击“计分”按钮,则Labell中显示的结果(选填:会/不会)发生改变。
  编写“十六进制加法”程序。程序运行时,在文本框Textl和文本框Text2分别输入两个十六进制数,单击“计算”按钮后在文本框 Text3上输出两个十六进制相加后的结果。程序运行如图所示。

  1. (1) 观察代码,触发代码执行的事件名是
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Cmd1_Click( )

    Dim a1 As String,a2 As String,sum As String,t As String

    Dim b1 As Integer,b2 As Integer

    Dim dist As Integer,x As Integer,jw As Integer

    a1=Text1.Text: a2=Text2.Text: sum=" "

    dist=Len(a1)-Len(a2)

    If dist<0 Then

    t=a1: a1=a2: a2=t

    End If

    For i=1 To dist

    a2="0"+a2

    Next i

    jw=0

    For i=

    If Mid(a1, i, 1)>="A" And Mid(a1, i, 1)<="F" Then

    b1=Asc(a1)-55

    Else

    b1=Val(Mid(a1, i, 1))

    End If

    If Mid(a2, i, 1)>="A" And Mid(a2, i, 1)<="F" Then

    b2=Asc(a2)-55

    Else

    b2=Val(Mid(a2, i, 1))

    End If

    x=b1+b2+jw

    If Then

    sum=Chr(x Mod 16+55)+sum

    Else

    sum=Str(x Mod 16)+sum

    End If

    Next i

    If jw=1 Then sum="1"+sum

    Text3. Text=sum

    End Sub

分析完善程序。

假设我国目前人口数为13亿,如果每年增长率为1.2%,填写程序,计算多少年后我国人口数超过20亿。设n年后,我国人口数超过20亿,根据题意得出数学关系式:13*(1+1.2%)n>20,求最小的n。

Dim p as single

Dim r as single

Dim n as integer

p=13

r=0.012

n=0

Do while          

   n=n+1

p=p*(1+r)

Loop

Print n;”年后”:”人口超过”;p

根据上述回答下列问题

  1. (1) 本题采用的算法是(填写:解析法/穷举法/排序法/递归法)
  2. (2) 写出参考程序中空白处表达式 。
下列VB程序的功能是:程序运行时,在文本框Text1中输入正整数n,单击“计算”按钮Command1后,计算n中各位数之和,并在文本框Text2中输出结果,例如:2012的各位数之和是2+0+1+2=5,则在Text2中输出5。程序运行界面如图所示。请在画线处填入合适的代码。

Private Sub Command1_Click()

  Dim i As Integer,sum As Integer

  Dim r As Integer

  Dim n As Long

  n=Val(Text1.Text):sum=0

  Do While n>0

       ①   

    sum=sum+r

       ②   

     ③   

  Text2.Text=Str(sum)

End Sub

画线处应填入的代码为:①;②;③

某市公共自行车24小时内租车收费标准为:每次1小时内免费,超时后按1元/小时收取(超时不足1小时按1小时计),24小时内最高限额为10元。
  1. (1) 若用变量pay存储租车费用,用变量time存储租车时间,根据题中的收费标准,租车费用pay与租车时间time之间的关系可用数学公式描述为
  2. (2) 公共自行车租车费用pay的计算可用解析算法,具体描述如下,请补充完善。

    ①给定24小时内的租赁起始时间和结束时间:输入租赁开始的时间和结束的时间。注:时间的输入格式为hh:mm:ss,如10:23:11。

    ②计算租车时间time:计算租车起始时间和结束时间的时间差time。

    ③计算租车费用pay:若time小于等于1,则pay为0;若,则pay为time;若time大于10, 则pay为10。

  3. (3) 编写程序。用变量stime、etime、time、pay分别存储租车开始时间、租车结束时间、租车时间和租车费用。计算公共自行车租赁费用的某Python程序如下,请在划线处填入相应代码,实现程序功能。

    Stime=input('租车开始时间:')

    etime=input('租车结束时间:')

    #stime.split(":")[0]切出的是租车开始时间的时

    #stimespli(":")[1]切出的是租车开始时间的分

    #stime.split(":")[2]切出的是租车开始时间的秒

    if int(etime. split(":")[0])>=int(stime.split(":")[0]):

    time=int(etime. split(":")[0])-int(stime.spilt(":")[0])

    if int(etime.split(":")[1]>int (stime.split(":"))[1):

        time=time+1

    elif int (etime.split(":")[1])= int(stime.split(":")[1]) and int(etime.split(":")[2]>= int(stime.split(":")[2]):

        time= time+1

    if time<=1:

        pay=0

    elif

        pay=time

    else:

         

    print(pay)

  4. (4) 完善该程序后,运行程序,输入租车开始时间为“9:40:6”,租车结束时间为“15:35:32”,则程序运行结果为
下列问题适合用解析算法求解的是(   )
A . 寻找一堆彩球中所有的红球 B . 计算一个球从100米高的楼顶掉下来的落地速度 C . 将全班同学按身高从低到高排队 D . 从电子词库中找到Infomation这个单词
法就是在分析具体问题的基础上,抽取出一个数学模型,这个数学模型能用若干个解析式表示出来,解决了这些表达式,问题也就得以解决。
在文本框Text1中输入待加密的n个字符(仅由ASCII码字符构成,最多支持960个字符),输入后单击加密按钮,在文本框Text2中产生密文。加密方式如下:

①定义一个数组a(1 to 961)。产生一个3到6之间的随机整数k,将十进制数960均分成k份,字符在字符串中的位置除以k的余数决定该字符存放在第几份数据中(余数为1保存在第一份数据中,余数为2保存在第二份数据中……,余数为0保存在第k份数据中);

②用十进制数127减去每个字符的ASCII码值,得到的差作为该字符的密文,并保存在数组a中,同一段内的密文依次存放;

③将随机产生的数k加64后保存在数组元素a(961)中,并一起参与加密;

④将数组a中所有有密文值的数组元素从后往前依次存放到数组b中;

⑤将数组b中的每个密文用3位数字保存,不足3位的前面用0补足,然后依次连接保存在变量sc中;

⑥在文本框Text2中输出sc。

例如:

①若现有待加密的字符串为“zp123”,产生的随机数k=3,则960分成3份,每份可存放320个值,分别为a(1)至a(320),a(321)至a(640),a(641)至a(960);

②由于Asc(“z”) =122,则127-122=5。字符“z”在待加密字符串中的位置是1,除以k的余数为1,因此数字“5”放在第一份数据的第一个位置,即a(1)=5;同理可得,第一份数据为a(1)=5,a(2)=77;第二份数据为a(321)=15,a(322)=76;第三份数据为a(641)=78;

③将随机产生的k与十进制数64的和保存到a数组的最后一个值中,即a(961)=64+3=67;

④将数组a中所有有密文值的数组元素从后往前依次存放到数组b中,得到b(1)=67,b(2)=78,b(3)=76,b(4)=15,b(5)=77,b(6)=5;

⑤将数组b中的每个元素用0补足3位后依次连接并保存在sc中,得到sc=“067078076015077005”;

⑥输出sc。

注:(asc(“0”)=48,asc(“A”)=65,asc(“a”)=97)

Private Sub command1_Click()

    Dim a(1 To 961) As Integer

    Dim sr, sc As String

    Dim i, j, k, m, n, t As Integer

    Dim b(1 To 961) As Integer

    Randomize

    k = Int(Rnd * 4 + 3)

    sr = text1.Text

    For i = 1 To 961

        a(i) = -1

    Next i

    a(961) = k + 64

    t = 960 / k

    For i = 1 To Len(sr)

        m = i Mod k - 1

        n = i \ k + 1

        If i Mod k = 0 then n = n - 1: m = m + k

           ①     = 127 - Asc(Mid(sr, i, 1))      ‘将密文存储到数组a中

    Next i

    For i = 1 To Len(sr) + 1

        j = j + 1

        Do While a(j) = -1

            j = j + 1

        Loop

        b(Len(sr) + 2 - i) = a(j)      ‘将有密文值的a数组元素存储到数组b中

    Next i

    For i = 1 To Len(sr) + 1

        sc =   ②         ‘连接密文并保存到sc中

    Next i

    text2.Text = sc

End Sub

Function space(x As Integer) As String

    For i = 1 To    ③  

        space = space & "0"

    Next i

End Function

  1. (1) 若加密后的密文为“068029041”,则随机数是;在Text1中输入的明文是
  2. (2) 在填写空白处缺失的代码。

有如下程序段:

For i = 2 To 6

    For j = 1 To i - 1

        If a(j) <= a(i) And d(j) >= d(i) Then

            d(i) =d(j)+1 : pre(i) = j

        End If

    Next j

Next i

max = 0 : k = 0

For i = 1 To 6

    If d(i)>max Then max = d(i) : k = i

Next i

Do While k <> 0

    st = a(k) & ","& st

    k=pre(k)

Loop

Text1.Text = Mid(st, 1, Len(st) - 1)

数组元素a(1)到a(6)的值依次为“2,6,5,9,8,8”,数组d各元素的值初始化为1,数组pre各元素的值初始化为0,经过该程序段“加工”后,Text1中的值是(   )

A . 2,5,9 B . 2,6,8,8 C . 2,5,8,8 D . 2,5,6,8,8,9
(多选)用计算机解决以下问题,与穷举法相比更适合用解析法来解决的有(    )。
A . 输入整数m、n,输出从m到n之间的质数(素数)。 B . 输入三角形三边长,输出这个三角形面积 C . 输入一元二次方程的各个系数,输出方程的解。 D . 输入三个正整数a、b、c,输出这三个数的最小公约数。
最近更新