最新消息:

VB_Python代码对照算法百题(031)

Python 少儿编程 1469浏览 0评论

VB代码:(2018年8月浙江名校新高考联盟)17. 【加试题】回文数是从左向右读和从右向左读结果一样的数字串,例如:1 和 363 都是回文数。编写 VB 程序,构造一个大于给定正整n的最小回文数p。构造方法如下:
⑴根据数字串n的左半部分子串st,构造对称的右半部分,生成回文数p;
⑵若p>n,则p即为最小回文数,如:98712→98789。
⑶若p<=n,则需重新构造p,方法是:从右向左查找字符串st中第一个非“9”的字符;
若不存在,则形成“10…01”的回文数p,p的长度比n的长度多1为,如9999→10001。
若存在,则将第一个非“9”字符加1,并将该字符后面部分用字符“0”填充,最后构造对称的右半部分,生成回文数p,如:98992→99099。

VB_Python代码对照算法百题(031)

(1) 如 果 n 为 69999, 则 p 为      
(2)请在划线处填入合适的代码。Private Sub Command1
Click()
Dim n As String, st As String, p As String
Dim ln As Integer, i As Integer, j As Integer
n = Text1.Text
ln = Len(n)
st = Mid(n, 1, (ln + 1) 2)
p = st
for i = ln2 To 1 Step -1

    p = p +Mid(n,i,1)
Next i
If      ① Then

    i = (ln + 1) 2

    Do While i > 0

        If Mid(st, i, 1) = “9″ Then      ② Else Exit Do

    Loop

    If i < 1 Then

        p = “1″

        For i = 2 To ln

            p = p + “0″

        Next i

        p = p + “1″

    Else

        p = Mid(st, 1, i – 1)

        p = p + Chr(Asc(Mid(st, i, 1)) + 1)

        For j = i + 1 To ln – i

            p = p + “0″

        Next j

        If          ③ Then p = p + Mid(p, i, 1)

        For j = i – 1 To 1 Step -1

            p = p + Mid(p, j, 1) ‘ok

        Next j

    End If
End If
Text2.Text = p End Sub
参考答案:

(1)70007 (1分)
(2) ①p <= n (1分)

         ②i=i-1 (2分)

        ③ln Mod 2 = 0 Or i < (ln + 1) 2 (2分)

Python参考代码:

n=input(‘请输入正整数n:n’)
ln = len(n)
st=n[0:(ln+1)//2]
p=st
for i in range(ln//2-1,-1,-1):

    p=p+n[i]
if p <= n:

    i=(ln+1)//2-1

    while i>=0:

        if st[i]==’9′:

            i=i-1

        else:

            break

    if i<0:

        p=’1′

        for i in range(1,ln):

            p=p+’0′

        p=p+’1′

    else:

        p=st[0:i]

        p=p+chr(ord(st[i])+1)

        for j in range(i+1,ln-i):

            p=p+’0′

        if ln %2 == 0 or i < (ln + 1) // 2:

            p=p+p[i]

        for j in range(i-1,-1,-1):

        p=p+p[j]
print(p)

VB_Python代码对照算法百题(031)

VB_Python代码对照算法百题(031)Python代码运行结果:

VB_Python代码对照算法百题(031)

您必须 登录 才能发表评论!