常用标准函数 知识点题库

小明设计了一个加密程序,对于任意输入的一个字符串,运行程序后会输出相应的密文。其中,字符串加密算法的思路如下:

⑴只针对英文字符和数字进行加密,其余字符保持不变;

⑵将原文中的小写字母转换成大写字母;

⑶根据第2步所得结果,若是英文字符,则逐个后移4位(例如“A”→“E”,“Z”→“D”);若是数字,则逐个前移2位(例如:“3”→“1”,“1”→“9”)。

实现上述要求的某Python程序如下,但程序加框处代码有误,请修改。

s1=input("请输入明文:")

s2="

for i in range(len(s1)):

     s=""

    if s1[i]>="a" and s1[i]<="z":

        s=chr(ord(s1[i])-32)

        s=chr((ord(s)-ord("A")+4) % 26 +ord("A"))

    elif s1[i]>="A" and s1[i]<= "Z":

        s=chr((ord(s1[i])-ord("A")+4)%26 +ord("A"))

    elif s1[i]>="0" and s1[i]<="9":

             #①

    else:

              #②

    s2=s2+s

print("得到的密文是:",s2)

为保证信息传输的准确性,可在一段ASCII字符后面插入一个验证字符加以验证。验证字符生成规则如下:

①从左往右依次获取各字符的ASCII码值;

②对奇数位字符的ASCII码值做加法处理,对偶数位字符的ASCII码值做减法处理;

③将上述结果取绝对值后除以26求余数,余数为0~25,分别对应大写字母A~Z,则该大写字母即为验证字符。

小李编写字符串验证程序,功能如下:在文本框Text1中输入待检验字符串(最后一位为验证字符),点击按钮Command1,在标签Label1中显示输入字符串是否验证成功。程序运行界面如图所示。

  1. (1) 按照该规则,字符串“2021”的校验码是(注:字符“0”的ASCII码值为 48,字符“A”的ASCII码值为65,数字、字母 ASCII 码值均按序以 1 递增)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim s As String, t As String

        Dim cha As Integer, ans As Integer

        Dim a As Integer, b As Integer, i As Integer

        s =

        t = Mid(s, Len(s), 1)

        ans = 0

        For i = 1 To Len(s) - 1

            cha = Asc(Mid(s, i, 1))

            If Then

                ans = ans - cha

            Else

                ans = ans + cha

            End If

        Next i

        ans = Abs(ans) Mod 26

        If  Then

            Label1.Caption = "验证成功!"

        Else

            Label1.Caption = "验证失败!"

        End If

    End Sub

  3. (3) 程序中加框处代码有误,请改正。
有如下VB程序段:

flag=True: i=1

Do While i<=6

    k=Int(Rnd*99)+1

    If k mod 2=1 Or flag Then

        a(i)=k

        i=i+1

        flag=Not flag

    End If

Loop

执行该程序段后,在下列选项中,a(1)~a(6)各元素的值可能的是(    )

A . 15,10,80,29,5,17 B . 53,11,99,67,2,57 C . 65,41,100,71,33,63 D . 63,43,10,69,91,0
某算法程序段如下:

Dim s1 As String, s2 As String, ch As String

Const code = "@*()^&#"

s1 = Text1.Text

For i = 1 To Len(s1)

    ch = Mid(s1, i, 1)

    If ch >= "a" And ch <= "z" Then

        t = (Asc(ch) - 65 + i) Mod 7

        s2 = Mid(code, t + 1, 1) + s2

    Else

        s2 = s2 + ch

    End If

Next i

Text2.Text = s2

若 text1 中输入字符“AbCd”,则 text2 中输出的是 (     )

A .  AC^@ B .  ^@AC C .  ^(@& D . A^C@
一位茶叶商人从南方收购了 n 吨新茶,由于产地偏僻不通铁路,茶商准备先沿水路运到武汉,再发往全国各地销售。码头上只有 10 条规格不同的小货船,每条船舶都不足以装载全部茶叶。各船舶的最大载重量分别为 W(i)吨,需 f(i)费用(该艘船每吨的费用)(1≤i≤10)。当然,由于茶商是老主顾,而且货船舶还可以搭配载其他货物,因此船主比较客气,声称可以装一部分货物,按实际装多少货物计费(例如,只装了 1/3 吨,则费用为 1/3*f(i))请问茶商应该选择哪些货船,使得费用最低。若有费用相同,输出用船数最少的。

解题思路:随机生成 10 条船的载重量[1,10]和费用[1,30],然后将它们按费用从小到大排序,若费用相同,则载重大的在前,运输时,先把费用低的船装满,再按费用向下将船装好,运输。

  1. (1) 根据图a所示,可以发现有 (填数字)个对象没有 caption属性。

    图 a

  2. (2) 根据上述描述设计如下 VB 程序,请在划线处填入合适的代码。

    Dim f(1 To 10) As Integer, w(1 To 10) As Integer, b(1 To 10) As Integer

    Private Sub Command2_Click()

        Dim n As Integer, count As Integer, yf As Integer

        Dim s As String, i as integer

        n = Val(Text1.Text)

        count = 0

        yf = 0

        cz = n

        i = 1

        Do While n > 0

            If n >= w(b(i)) Then

               

            Else

                yf = yf + n * f(b(i))

            End If

            count=count+1

            s = s + Str(b(i)) + "号船"

            i=i+1

           

        Loop

        Label2.Caption = "总计费用为:" + Str(yf) + "元 " + Str(count) + " 条船,分

    别为 " + s

    End Sub

    Private Sub form_load()

        Dim t As Integer, i as integer, j as integer

        List1.Clear

        List1.AddItem "编号 载重 费用'"

        For i = 1 To 10

            w(i) = Int(Rnd * 10 + 1)

            f(i) = Int(Rnd * 30 + 1)

            b(i) = i

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

        Next i

        For i = 1 To 9

            For j = 10 To i + 1 Step -1

                If  Then

                    t = b(j): b(j) = b(j - 1): b(j - 1) = t

                End If

            Next j

        Next i

    End Sub

亲戚寻找。小李总是因为认不清亲戚而苦恼,于是他设计了如下程序来模拟亲戚寻找的过程。已知:如果1和2是亲戚,1和3是亲戚,则2和3也是亲戚。代码思维如下:

1)将每个人看成是一个钩码,能挂在另一个挂钩底下,自己底下也能挂其他挂钩。

2)如果两个钩码在同一条钩码串上,则为亲戚(如2、3都能找到1)。

3)如果两个是亲戚但不在一串钩码上,则可将其中一串的最上面的钩码挂在另一串的下方。

图片_x0020_100016 图片_x0020_100017

例如从图a加框处的前三行数据可得到图b所示的钩码串1和钩码串2,从第四行数据可知9、5也为亲戚,则可将两串钩码合并,合并后3为2的顶端,5为3的顶端,其余数据以此类推。

根据算法思想,编写VB程序功能如下:程序初始化时给出6条亲戚关系显示在List1中,单击“理关系”按钮,在List2中显示每个人所在钩码的顶端编号。在Text1和Text2中分别输入两人的编号,单击“询问”按钮,输出两个人是否为亲戚关系。程序运行界面如图a所示。

  1. (1) 根据图a数据,若输入两人的编号为4和5,则两人的关系是否为亲戚(填:是/否)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const n = 9      ‘总人数

    Const m = 6     ‘已知的亲戚关系数

    Dim a(1 To n) As String , b(1 To n) As String

    Dim f(1 To n) As String    ‘记录不同的亲戚钩码串成员,每条亲戚钩码串内互为亲戚

    Dim k As Integer           ‘亲戚钩码串的数目

    Private Sub Form_Load()

    ‘初始化List1和List2,生成m条亲戚关系,每条亲戚关系的编号对应存储在数组a(i)和b(i) '中,在List1中输出a(i)和b(i),代码略

    End Sub

    Private Sub Command1_Click()

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

        f(1) = a(1) + b(1)     ‘利用a(1)、b(1)生成第一条钩码串存储在f(1)中

        k = 1                  ‘k为钩码串编号

        For i = 2 To m

            x = root(a(i), 0): y = root(b(i), 0)  ‘x为调用函数获取a(i)所在的钩码串编号

            If x = 0 And y = 0 Then k = k + 1:  ‘根据x与y分类讨论

            If x <> 0 And y = 0 Then f(x) = f(x) + b(i)

            If x = 0 And y <> 0 Then f(y) = f(y) + a(i)

            If x <> y And x <> 0 And y <> 0 Then   ‘x、y在不同钩码串则将两条钩码串合并

                f(x) = f(x) + f(y): f(y) = f(k): k = k - 1

            End If

        Next i

        For i = 1 To n         ‘输出每个人所在钩码的顶端编号

            x = root(CStr(i), 0): y = root(CStr(i), 1)   ‘Cstr()函数用于去除字符前导空格

            If x <> 0 Then

                If y = Len(f(x)) Then List2.AddItem Str(i) + " " + CStr(i)

                If y <> Len(f(x)) Then List2.AddItem Str(i) + " " +

            End If

        Next i

    End Sub

    '按钮Command2的功能为判断输入的两个人是否为亲戚关系,代码略

    Function root(a As String, b As Integer) As Integer  ‘参数a表示待查找目标,参数b

    ‘表示返回值类型,0表示返回目标所在钩码串编号,1表示返回目标在该钩码串中的位置

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

    m = 0: n = 0: i = k: j = 0

        Do While i > 0

            If a = Mid(f(i), Len(f(i)) - j, 1) Then m = i: n = Len(f(i)) - j: Exit Do

            j = j + 1

            If j = Len(f(i)) Then i = i - 1: j = 0

        Loop

        If  Then root = m Else root = n

    End Function

字符加密:用 VB 编写某字符串加密解密程序(仅针对 ASCII 码字符)。其加密过程如下:

1)对待加密的字符进行判断,如果是英文字符的,则将该字符后移2位(如:字符“A”转换成“C”,字符“Z”转换成“B”,字符“a”转换成“c”,字符“z”转换成“b”),其他字符保持不变;

2)求出每个字符的ASCII码,然后用7位二进制来表示,比如“4”的ASCII码为十进制52,转换为7位二进制为“0110100”;

3)从左至右依次记为第1,2,3……7位,分别把第3,4,5位取反。即0变1,1变0,至此“0110100”变为“0101000”,将此二进制转换为ASCII码为40,对应的字符为左括号“(”,即“4”经过加密后得到加密字符为左括号“(”。

在文本框Text1中输入ASCII字符,单击“加密”按钮Command1,则在文本框Text2中显示经过加密的字符。程序界面如图所示,请完成下列问题。

  1. (1) 若在文本框Text1中输入字符“4My5”,则在文本框Text2中显示的加密字符为
  2. (2) 实现上述功能的 VB 程序如下, 请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim s As String, ch As String s = Text1.Text

        For i = 1 To Len(s)

            ch = Mid(s, i, 1)

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

               

                ElseIf ch >= "a" And ch <= "z" Then     '让小写字母后移2位,代码略

            End If

            Text2.Text = Text2.Text +

        Next i

    End Sub

    Function jm(x As String) As String

        Dim a(1 To 7) As Integer, j As Integer, n As Integer, asc1 As Integer

        asc1 = Asc(x)

        n = 0

        For j = 7 To 1 Step -1

            If j = 3 Or j = 4 Or j = 5 Then a(j) = 1 - asc1 Mod 2

            Else

                a(j) = asc1 Mod 2

            End If

            n =

            asc1 = asc1 \ 2

        Next j

        jm = Chr(n)

    End Function

在Python中,显示出信息x,并要求输入数据的是(       ) 。
A . abs(x) B . print(x) C . float(x) D . input(x)
程序运行后,键盘输入31,其输出结果为

s=int(input("请输入一个两位数:"))

s=s//6

print(s)

编写程序,实现从键盘输入数据,数据前三位的ASCII值加2,从第四位开始ASCII值加3.
    小明和小红喜欢传纸条,为防同学偷看,约定使用Diffie-Hellman算法来加密,该算法的简化模型如下:二人先约定两个正整数g和n,然后小明私下随机生成一个数x,并计算U=gx Mod n;小红也私下生成一个数y,并计算V=gy Mod n。随后二人交换计算出的U,V。接着小明独自计算出自己的密码mkey=Vx Mod n,小红也独自计算出自己的密码hkey=Uy Mod n,且mkey=hkey。
    事实上,依上述算法,即便同学们知道g,n,U,V的值,也无法计算出二人的密码,必须再取得x或y才可以,而x,y仅他俩各自保留,外人无从知晓。
    已知消息加密的步骤(该步骤可逆)为:①将消息字符串倒序→②将各个字符转换为ASCII码数值→③对各个数值用密码进行异或操作(已知异或运算可逆,即a Xor k=b, b Xor k=a)→④用逗号间隔各异或运算后的结果。
    小红依加密的步骤可逆,编制了一个如下的VB程序,该程序用于解密小明的密文,程序运行界面如图所示。回答下列问题:

Private Sub decrypt_ Click()

    Dim g,n,U,y,hkey As Integer

    Dim mw, xx As string

    Dim a(1 To 100) As Integer

    Dim i, L As Integer, c As String

    '经与小明的协商,小红已获得g,n,U,y的值

    g=2:n=7           '约定两个数g和n的值分别为2和7

    U=2:y=5           '小红随机生成的数y的值为5

    mw = Text1.Text    '小明的密文,由数字和逗号组成

    hkey =     ①    

    L=1

    For i = 1 To Len(mw)

        c = Mid(mw, i, 1)

        If  Then

            a(L)=a(L)*10+Val(c)

        Else

            L=     ②    

        End If

    Next i

    For i=1 To L

        a(i) = a(i) Xor hkey

            ③   

    Next i

    Text2.Text = xx

End Sub

  1. (1) 加框处代码有错,请改正。
  2. (2) 在程序划线处填入合适代码,使程序完整。

     ② ③ 

VB表达式Int(Rnd*2) *30+ 10+ Int(Rnd * 100) Mod 10的值可能是(    )
A . 6 B . 16 C . 26 D . 36
某查找算法 VB程序段如下:

ans = 0: L  = 0: R = 7

key = 2 ^ (Int(Rnd * 5))

Do While L <= R

    m = (L + R + 1) \ 2

    If a(m) > key Then

        L = m + 1

        ans = ans + 1

    Else

        R = m - 1

        ans = ans - 1

    End If

Loop

数组 a(0)到 a(7)的值依次为16,16,8,8,4,2,2,1,该程序运行后,ans 的值不可能的是(     )

A . 0 B . -4 C . 1 D . -1
有如下VB程序段:

a=Int(Rnd*20)*2+11

r=0:s=""

Do While a>0

    r=a Mod 7

    s=r&s

    a=a\7

Loop

执行该程序段后,变量s的值不可能是(    )

A . "16" B . "23" C . "64" D . "100"
以下选项中,不是Python中文件操作的相关函数。

①open ( ) ②load ( ) ③read ( ) ④write ( )

下列VB表达式中,计算结果与其他三项不同的是(    )
A . 1+18Mod11\2 B . Val(Mid("20220101",2,2))+(-1) *2 C . Asc("d")- Asc("a" )+ Int(Sqr(2)) D . -(7Mod3- 2-2)+ 1
执行语句score=input('请输入分数:'),键盘输入98,则score的值为(   )
A . 98.0 B . 98 C . '98' D . '98.0'
Python语言中的“ord”是将字符转换为对应存储编码的函数,编码值以十进制数形式显示,例如>>>ORD(‘a’),输出的结果是:97,则>>>ord(d)输出结果为(    )
A . 102 B . 100 C . 98 D . 110
有以下Python程序段:

a=[1,2,3,4,5]

b=[1,3,5,7,9]

for i in range(10):

    if i in a:

    if i in b:

        print(i,end=“→”)

  以上程序段执行后的输出结果是(    )

A . 1→3→5→ B . 1→3→5 C . 1 3 5 D . 报错
在Python中将一个数(任何其他类型)转换为字型串类型的函数是(   )
A . float( )  B . chr( )  C . int( ) D . str( ) 
最近更新