3.3 简单算法及其程序实现 知识点题库

自定义函数f的功能是计算自然数n的阶乘值,即f=n!。下面VB程序通过调用函数来计算S=1!+2!+3!+4!+5!+6!:

Function f(n as integer) as long

    Dim j As Integer

    f=1

    For j=1 to n

   f=f*j

    Next j

End Function

 Private Sub Command1_Click()

  Dim s As Long, AS Integer

  S=0

  For i=1 to 6

  Next i

  Text1.text=str(s)

 End Sub

方框中正确的语句是  (   )

A . s=f(i) B . s=s+f(i) C . s=f(n) D . s=s+f(n)
下列问题中适合使用枚举算法解决的是(   )
A . 计算两个数的乘积 B . 计算50个同学的平均分     C . 查找200以内所有能被7整除且个位数字为5的自然数 D . 设计主题班会
国内特快专递每200克为一个计费单位,200克以内22元,200克以上每续重200克(不足200克以200克计算)8元,现在要编写一个程序输入包裹重量自动计算出价格。解决上述问题,最合适的算法是(   )
A . 解析算法 B . 枚举算法 C . 排序算法 D . 递归算法
【加试题】《孙子算经》中提出“物不知其数”的问题,此数以3除余2,以5除余3,以7除余2。下列VB程序用来求指定范围内满足该条件的自然数及其个数。程序界面如图所示,VB程序段如下:Private Sub Command1_Click(   )

  k = 0                 '用来计数

  Max = 600             '指定范围600以内

  n = 9                                  

  Do While n <= Max

  Loop

  Label1.Caption = Str(Max) & "范围内满足问题的数有" & Str(k) & "个"

End Sub

方框中的代码由以下五部分组成:

① n=n+7

② k = k + 1

③ List1.AddItem Str(n)

④ End If

⑤ If n Mod 3 = 2 And n Mod 5 = 3 Then

代码顺序正确的选项是(  )

A . ⑤①②③④ B . ②⑤③①④ C . ⑤③②④① D . ⑤①③④②
填空题
  1. (1) 使用二分法从数据1,3,6,9,15,16,45中查找数据16,共经过次查找就可以找到。
  2. (2) 定义一个数组如下:

    Dim a(10 to 20) as integer

    则此数组中元素的个数为

  3. (3) 法就是在分析具体问题的基础上,抽取出一个数学模型,这个数学模型能用若干个解析式表示出来,解决了这些表达式,问题也就得以解决。
  4. (4) 表达式Abs(-5)的值是
  5. (5) 将数学表达式gt2改写为VB表达式
【加试题】小柯编写了一个多位数乘法的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

 ② 

简化的VB词频统计程序。程序功能为:在文本框Text1中输入一篇英文文章,在文本框Text2中输入一个英文单词,单机“统计”按钮Command1后,在文本框Text3中显示这个英文单词出现的次数。程序运行界面如图所示。

查找的英文单词由连续的ASCII英文字符(a~z或A~Z)组成。组合词程序会进行分解,如river-small可拆分为2个单词river和small,查找的英文单词不区分大小写。程序代码如下,但加框处代码有错,请改正:

Private Sub Command1_Click()

Dim article As String,f As String,count As Integer

Dim i As Intege,,begin As Integer,s As String

article=Text1.Text : f=Text2.Text : count=0

begin = 1

For i=1 To Len(article)

   t = Mid(article,i,1)

   If Not(t>="A"And t<="Z" Or t>="a" And t<="z") Then

     If i > begin Then

        s =      '①

        If LowerCase(f)=LowerCase(s) Then

            count = count+1

        End If

      End If

          begin = i + 1

     End If  

  Next i

    Text3.Text=Str(count)

End Sub

Function LowerCase(word As String) As String    '单词转化为全小写的形式

Dim i As Integer,c As String

For i=1 To Len(word)

   c = Mid(word,i,1)

   '小写英文字母的ASCII码值比大写字母的值大32

   If c>="A" And c<="Z" Then c =    '②

   LowerCase = LowerCase + c

Next i

End Function

以上程序段运行时,为了实现上述功能,加框处代码应改正为:

;②

小强在双十一购物期间忘记了支付宝账户密码,但他急用支付宝进行转账,请你帮他尽可能找回密码。他只记得自己密码的一些零星信息:

①密码是六位数字,前面两位为59;②最后两位数字相同;③能被12和38整除。

程序界面如图1所示,单击 “帮助找回密码”按钮(Command1)后,可能的密码显示在列表框List1中。

  1. (1) 应用程序界面设计时,为添加“ List1”对象,应使用图2所示的“控件工具箱”中的(填写相应编号)。
  2. (2) 请根据题意将解决此问题的相应程序补充完整。

    Private Sub  Command1_click ()

    Dim x As Integer, s As Long,

    Dim y As Integer, i As Integer

    For i = 0 To 9999

        S = 590000 + i

        If ① Then

            x= s mod 10

            y = ②

            If x = y Then

                List1.AddItem Str(s)

            End If

        End If

    Next i

    End Sub

  3. (3) 该模块采用的算法是(  )
    A . 枚举 B . 查找 C . 排序 D . 解析
分析完善程序。

假设我国目前人口数为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) 写出参考程序中空白处表达式 。
分析完善程序。

一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少?设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,这里x,y,z为正整数 , 设计算法并编写程序输出所有的买鸡方案。

Dim x As Integer, y As Integer, z As Integer

For x = 1 To 20

For y = 1 To 33

For z = 3 To 99 Step 3

If               Then

Print "公鸡:" & x, "母鸡:" & y, "小鸡:" & z

Next z

Next y

Next x

End Sub 代码可以简化,思路大致是这样的。

结果是: 公鸡:4 母鸡:18 小鸡:78

公鸡:8 母鸡:11 小鸡:81

公鸡:12 母鸡:4 小鸡:84

根据上述回答如下问题

  1. (1) 本题采用的算法是(填写:解析法/穷举法/排序法/递归法)
  2. (2) 程序代码中空白处应填写的条件是            
    A . x+y+z=100 and 5x+3y+z/3=100 B . x+y+z=100 or 5x+3y+z/3=100 C . x+y+z=100 and 5*x+3*y+z/3=100 D . x+y+z=100 or 5*x+3*y+z/3=100
BP(back propagation)神经网络是目前应用最广泛的算法,它是一种按照逆向传播算法训练的多层前馈神经网络。神经网络的算法由信息的与误差的两部分组成,它们由可修正的互连。在正向传播过程中,输入信息从输入层经逐层计算传向输出层,当前层神经元的状态只影响神经元的状态。如果输出层没有得到期望的输出,则  输出层的误差变化值,然后转向传播,通过网络将误差信号沿原来的连接通路,修改各层神经元的直至达到期望目标。
编写VB程序,实现如下功能:在文本框Text1和Text2中分别输入体重(单位:kg)和身高(单位:m),单击命令按钮Command1,计算BMI(体重指数)(体重指数等于体重(kg)除以身高(m)的平方)。

如果BMI<18.5,则在标签Label5中显示“体重过轻!”;如果18.5≤BMI≤25,则在标签Label5中显示“体重正常!”;如果BMI>25,则在标签Label5中显示“体重过重!”。运行效果如图所示。

  1. (1) 若要删除标签Label5中显示的内容“Label5”,可在其属性窗口中将属性的属性值删除。
  2. (2) 为实现上述功能,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim h As Single, m As Single, bmi As Single

      Dim x As String

      m=Val(Text 1.Text)

      h=Val(Text2.Text)

          ①    

      If bmi<18.5Then

        x="体重过轻!"

      Else

        If    ②    Then x="体重正常!"Else x="体重过重!"

      End If

      Label5.Caption=x

    End Sub

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

  3. (3) 若某同学的身高为160cm,体重为110斤,则Label5显示的结果为
某股于3月21日起停牌进入配股缴款期,配股缴款截止日期为3月27日。由于配股后股价将除权,忘记或者不参与配股者或不是全额参与配股者,复牌后将面临损失。根据安排,该股本次配股价格为7.02元/股,按照每10股配售1.9股的比例向全体股东配售,其中:

配股除权价=(除权登记日收盘价+配股价×每股配股比例)/( 1+每股配股比例)

全额参与配股的最大配售量计算规则如下:

1)该股的配售比例是0.19。也就是说,假如你有10000股该股股份,最大配售量即为10000×0.19=1900(股)。

2)如果所获配股份额不足1股,那么0.65股及以上的为1股,0.65股以下的为0股。

回答下列问题:

  1. (1) 若该股的除权登记日收盘价为16.05元,则此次该股的配股除权价为元。
  2. (2) 假如你有15000股该股股份,最大配售量为股。
  3. (3) 如果不参与配股,该股配股除权后,将直接损失%。
  4. (4) 编写程序。用变量spj、pgj、bili、num、cqj、maxps分别存储除权登记日收盘价、配股价、每股配股比例持有的该股股份数、配股除权价和最大配售量。计算此次该股的配股除权价和最大参与配股配售量的Python程序如下,请在划线处添加合适的代码,完善程序,实现程序功能。

    flag=False

    pgj=7.02    #配股价

    bili=0.19    #每股配股比例

    spi-flatinput("请输入除权登记日收盘价:")

    num =floatinput("请输入持有的股份数:")

    cqj =     ①            #配股除权价

    maxps= num*bili      #最大配售量

    if      ②       :

        flag=True

    if flag :

        print("配股除权价", cqj,"最大配售量:" ,int(maxps)+1)

    else:

        print("配股除权价:", cq,"最大配售量:" ,nt(maxps))

     ② 

一辆卡车运矿石,晴天每天运20次,雨天每天最多运12次,他一共运了8天,共112次,则晴天和雨天各有几天。用VB程序来解决这个问题,单击按钮Command1,在文本框Text1中输出晴天的天数,在文本框Text2中输出雨天的天数,程序代码如下:

Private Sub Command1_Click()

    i=1

    j=7

    Do While _______

        i=_______

        j=________

    Loop

    Text1.Text=Str(i)

    Text2.Text=Str(j)

End Sub

则下列说法正确的是(   )

A . ①应填的代码为 i*20+j*12<>112 B . ②应填的代码为i-1 C . ③应填的代码为j+1 D . 描述该算法的思想为解析算法
编写“素数查找”程序,实现如下功能:单击“生成”按钮,随机生成50个150至200(包括150和200)之间的正整数,显示在下方,每行显示10个,共5行。单击“筛选”按钮,从上面50个数中筛选出是素数的数,重复的只显示一次。程序运行界面如图所示。

请根据算法将下列程序补充完整。

Private Sub Command1_Click()

    Label3.Caption = ""

    For i = 1 To 50

        a(i) =

        If i Mod 10 = 0 Then

            Label3.Caption = Label3.Caption + CStr(a(i)) + vbCrLf '换行

        Else

            Label3.Caption = Label3.Caption + CStr(a(i)) + " "

        End If

    Next i

End Sub

Private Sub Command2_Click()

    Label4.Caption = ""

    n = 0

    For i = 1 To 50

        For k = 2 To a(i) - 1

            If Then Exit For

        Next k

        If k = a(i) Then

            n = n + 1

        If n = 1 Then b(n) = a(i)

        For j = 1 To n - 1

            If b(j) = a(i) Then: Exit For

            If j = n - 1 Then b(n) = a(i)

        Next j

    End If

Next i

For j = 1 To n

    Label4.Caption = Label4.Caption + + " "

Next j

学校开展“奇妙的数字”研究性学习活动。张轩小组4人决定把课题定为《探秘水仙花数》。
  1. (1) 张轩使用百度搜索引擎搜索到“水仙花数”是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153 = 13+53+33 , 那么这个数就是一个“水仙花数”。百度属于搜索引擎(全文,分类)
  2. (2) 为了求解100-999这些数字中,哪些数字是“水仙花数”?张轩小组进行了算法设计,并使用python编写了一段程序来求解所有的“水仙花数”,程序和运行结果下图:

    k是可以重新赋值的,k是变量还是常量?

    程序中①处有空缺,请补充完整①处的代码。

    程序中逐一验证了100到999之间所有的三位数是否符合“水仙花数”的定义条件,这种算法叫做(解析法,枚举法,递归法,二分法)。

  3. (3) 在研究成果展示环节,张轩小组可以使用什么软件制作《探秘水仙花数》的研究成果报告?
利用VB程序计算三角形面积。在文本框Text1、Text2、Text3中分别输入三角形三条边长a,b,c,半周长p = (a + b + c) / 2,单击按钮Command1计算三角形的面积s= ,并把结果显示在文本框Text4中。界面如图a所示,请回答下列问题:

  1. (1) 结合图b,若要把窗体背景色改为白色,可通过其属性进行设置。

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

    Private Sub Command1_Click()

        Dim a, b, c, p, s As Integer

        a = Val(Text1.Text)

        b =

        c = Val(Text3.Text)

        p =(a + b + c) / 2

        If a+b>c And a+c>b And b+c>a And a>0 And b>0 And c>0 Then

            s =

            Text4.Text =

        Else

            Text4.Text =“输入边长不能组成三角形!”

        End If

    End Sub

用枚举法在两个□内填入相同的数字使“□3×6528=3□×8256”表达式成立。

for i in range(1):

  if     :

    print(i,“3×6528=3”,i,“×8256”,sep=”)

下列选择正确的是(   )。

A . (i*10+3)*6528==(30+i)*8256 B . (i*3)*6528==(30+i)*8256 C . (i*10+3)*6528==(30*i)*8256 D . (i*3)*6528==(3*i)*8256)
采用盲目搜索的方法,在搜索的过程中,对所得的结果逐一筛选,排除不符合要求的结果,保留那些符合要求的结果,这种方法叫做(     )。
A . 解析法 B . 递推法 C . 枚举法 D . 选择法
某同学在做物理实验时,需要用天平测量物品的质量,过程如下:先放置200克砝码,若砝码偏重;再将砝码改为100克,若砝码偏轻;再将砝码改为150克,砝码偏重;再将砝码改为125克……以此类推。通过这种策略,该同学完成了物品的称重。此过程借鉴的算法思想是(      )
A . 排序 B . 二分查找 C . 顺序查找 D . 枚举
最近更新