试题

试题 试卷

logo

题型:填空题 题类:常考题 难易度:困难

浙江省名校协作体2018届高三下学期信息技术3月选考试题

【加试题】德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对。

小敏编写了一个VB程序,用来求一个偶数(6到100之间)可能存在多少这样的素数对(注: A+B与B+A认为是相同素数对,不重复统计),并把这些结果输出到一个列表框中,通过逻辑推理,小敏发现这些素数对都是奇数,所以她只需要验证奇数的素数对即可。运行界面如图所示,程序代码如下。但加框处代码有错,请改正。

 

Dim IsPrime(100) As Boolean  '用来存储是否素数,True为素数,False为非素数

Private Sub Command1_Click()

    Dim x As Integer, y As Integer, i As Integer, num As Integer

Call Init  '调用Init函数

    x = Val(Text1.Text)

y = x \ 2

num = 0

For i = 3 To y Step 2

                 '①

num = num + 1

            List1.AddItem Str(x) + "=" + Str(i) + "+" + Str(x - i)

        End If

    Next i

    Label2.Caption = "偶数" + Str(x) + "共有" + Str(num) + "个素数对。"

End Sub

Sub Init() '初始化IsPrime数组的值

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

    For i = 3 To 100 Step 2

        x = Int(Sqr(i))

                            '②

            If i Mod j = 0 Then Exit For

        Next j

        If j > x Then IsPrime(i) = True Else IsPrime(i) = False

    Next i

End Sub

 ② 
举一反三
【加试题】输入一个表达式(运算符号只有加减乘除和小括号,表达式是正确的,不需要检查),求表达式中最后一次运算的运算符号位置。比如表达式a*(b+c)-4+d最后一次运算的运算符号是在第10个位置的“+”,输出10。算法的思想是:从表达式右边开始往左边查找,对碰到的字符分四种情况考虑:

1)若是运算符“+”或“-”保存该位置并结束查找。

2)若是第一次碰到“*”或“/”,保存该位置,若不是第一次碰到“*”或“/”,继续往左边查找。

3)若是“)”,调用函数找到和它对应的“(”位置,跳过该括号,继续往左查找。

4)若是非运算符,继续往左查找。

运行界面如下图:

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

Function find(y As String , x As Integer ) As Integer

’该函数的功能是:返回表达式 y 中和位于第 x 位置的“)”配对的“(”的位置,代码略

End Function

Private Sub Commandl _ Click ()

Dim s As String ,  t As Integer ,  temp As Integer ,  p As Integer

s = Text1.  Text ‘输入表达式

t = Len (s):p = 0

Do While t>0

    If Mid ( s, t , 1) =“*” Or Mid ( s, t , 1) =“-” Then    ‘处理+、-

        temp=t

        Exit Do

    End If

    If ①  Then  处理 *、/

        temp = t

P=1 ‘用来标记乘号或除号已经出现了

    End If

    If Mid(s, t, 1)= ")"  Then     ‘处理括号

       

    End If

    t=t -1

Loop

Text 2.Text = Str (temp)

End Sub

①{#blank#}1{#/blank#} ②{#blank#}2{#/blank#} 

返回首页

试题篮