试题

试题 试卷

logo

题型:填空题 题类: 难易度:普通

浙江省绍兴市2023-2024学年高二上学期信息技术期中考试选考试卷

一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数。现求所有小于等于n的与7无关的正整数的平方和。实现上述功能的部分Python程序如下,请在划线处填入合适的代码。

n=int(input())

for i in range(n+1):

    flag=False

    if i%7==0:

        flag=True

    m=i

    while :

        if m%10==7:

            flag=True

        m//=10

    if :

        sum=sum+i*i

print(sum)

举一反三
从产品库里面的product数据表中读出产品信息(ID,类别,产品名,图片路径,格式5个字段)。已知product表中已经按ID排序,读出后的数据直接连接成字符串在List1中显示,现在希望能不改变原有列表顺序的情况下,在list2中显示按产品名排序的结果。一般的方法是按产品名建立索引(不存在重复的产品名)。基本思路如下:

⑴用一个数组product()来存放产品名。

⑵用另一个数组a()来存放产品名数据的下标(已经按产品名排序的)。

按产品名排序的方法是:取第一个产品名product(0),与后面所有的产品名比较一遍,如果有比第一个产品名大的,M+1,M用来计该产品名的位次。一轮结束后在a(M)元素记下第一个产品名的下标0。然后再取product(1)与其它所有产品名比较一遍,其余同第一个产品名。依次完成每一个产品名位次的计算并记录在a()数组中。

⑶最后按a()数组指定的位置取出list1中的项添加到list2中。

程序代码如下,请补充完整下面的空缺。

Dim products(100) As String  '存放产品名的数组

Dim num As Integer          '从数据库中读出的记录数

Private Sub Command1_Click()

Dim a(100) As Integer           '存放按产品名索引的产品数组下标

Dim i As Integer, j As Integer, m As Integer    'm比当前产品名大的产品名个数

For i = 0 To 100

    a(i) = 0

Next i

For i = 0 To num

   m = 0

   For j = {#blank#}1{#/blank#} 

     If i <> j And products(i) > products(j) Then m = m + 1

   Next j

   {#blank#}2{#/blank#} 

Next i

For i = 1 To num

 List2.AddItem  {#blank#}3{#/blank#}     '按a数组的索引从list1中取出项添加到list2

Next i

End Sub

Private Sub Form_Load()

Dim conn As New ADODB.Connection

Dim rs As New ADODB.Recordset

Dim s As String, i As Integer

conn.ConnectionString = "provider=microsoft.ace.oledB.12.0;data source=" & App.Path & "\产品库.accdb "

conn.Open

Set rs.ActiveConnection = conn

rs.Open "select * from product"

num = 0

Do While Not rs.EOF And num <= 100

    s = ""

    For i = 1 To 5

     products(num) = rs.Fields(2)           '读出当前记录的产品名保存到products数组

     s = s & rs.Fields(i - 1) & " ,"        '将一条记录的各字段内容连接成字符串

    Next i

    List1.AddItem s

    {#blank#}4{#/blank#}

    num = num + 1

 Loop

 num = num - 1

 rs.Close

 conn.Close

 Set rs = Nothing

 Set conn = Nothing

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#} 

返回首页

试题篮