Private Sub Cmd_Click()
Dim dec As Integer, n As Integer, i As Integer, w As Integer
Dim s As String, c As String, sd As String
s = Text1.Text
n =
sd=""
For i = 1 To n
c =
If c <> "|" Then
If c = "/" Then
w = 0
Else
w = 1
End If
dec =
Else
sd = sd + Str(dec) + ","
dec = 0
End If
Next i
Text2.Text = sd
End Sub
①将该字符的ASCII码转换为8位二进制数;
②将后4位二进制数逐位取反(1变0,0变1)
③将操作②生成的4位二进制数均右移一-位, 原第4位变成新的第1位;
④将原来的前4位二进制数连接新的后4位二进制数成为最终加密后字符的内码。
例如字符“A”经过上述加密运算,可得到字符“M”。
ASCII码 |
转二进制数 |
后4位取反 |
后4位右移 |
拼合 |
转十进制 |
转字符 |
65D |
0100 0001B |
1110 |
0111 |
0100 0111B |
71D |
G |
Private Sub Command1_ Click()
Dim s As String, s1 As String, s2 As String, n As Integer
Dim x As Integer, i As Integer, j As Integer, C As Integer
Dim a(15) As String
a(0) = "000": a(1) = "0001": a(2) = "0010": a(3) =“011": a(4) = "0100":a(5) = "0101": a(6) ="0110": a(7) = "111": a(8) = "1000" a(9) ="1001":a(10) = "1010": a(11) ="1011": a(12) = "1100"a(13) = "1101": a(14)= "1110":a(15) ="1111"
s2 = "": s = Text1. Text
For i=1 To Len(s)
n = Asc(Mid(s, i, 1))
c=n Mod 16
s1 =
x = Va1(Mid(s1, 1,1))
For j=2 To 4
x=x+
Next j
x=(n/16)*16
s2 = s2 + Chr(x)
Next i
Text2. Text = s2
End Sub
①取字符串的首字符为压缩后的第一个字符。
②统计该字符连续的个数,两者间使用逗号分隔。
③按此方法进行后续字符的压缩,各段压缩结果用“/”分隔。
④重复上述过程,直到将所有字符压缩完成。
例如:字符串"1100000000000011110"压缩后的字符串为"1,2/0,12/1,4/0,1/"。依据上述描述编写VB程序,实现此算法的解压缩功能:在文本框Text1中输入待解压缩的字符串,单击“解压缩”按钮,在文本框2中输出解压缩的字符串。运行效果如下图所示。
Private Sub Command1_Click()
Dim i As Integer, x1 As Integer, x2 As Integer, s As String
Dim ch As String, result As String
s= Text1.Text
i= 1: result =”
Do While i<= Len(s)
①
If ch< "O" Or ch> "9" Then
If ch= "/" Then
x2 = tmp
For j=1 To x2
result = result & CSstr(x1) ‘Cstr函数的功能是将数字转为字符串
Next j
Else
②
End If
tmp= 0
Else
③
End If
i=i+ 1
Loop
Text2.Text = result
End Sub
① ② ③
⑴在输入的数字字符串中依次提取有效的密文,有效的密文的特点:
①是一组连续的,都小于5的三位数字串;②每个位置上的数字不能被重复提取;
⑵对有效密文进行解密的过程:
将密文作为一个五进制数转换为对应的十进制数值,根据ASCII字符的十进制编码表,得出对应的明文字符(提示:空格符所对应的ASCII码值为十进制数32,小写字母”z”所对应的ASCII码值为十进制数122)。
例如,密文242转换成十进制数为72,对应的明文字符为大写字母“H”。
程序运行界面如下图所示,在文本框Text1中输入密文,单击“解密”按钮,在文本框Text2中输出解密后的明文密码。
'以下代码是将有效密文数字转换为十进制数的函数
Function conv(p As String) As Integer
Dim k As Integer, q As String, i As Integer
k = 0: g = ""
For i = 1 To 3
q = Mid(p, i, 1)
Next i
conv = k
End Function
Private Sub Command1_Click()
Dim st As String, p As String, res As String
Dim c1 As String, c2 As String, c3 As String
Dim i As Integer, d As Integer, n As Integer
st = Text1.Text: n = Len(st)
i = 1: res = ""
Do While i <= n – 2 '提取有效密文,并进行转换
c1 = Mid(st, i, 1): c2 = Mid(st, i + 1, 1): c3 = Mid(st, i + 2, 1)
If Then
d=conv(p)
If d >= 32 And d <= 122 Then res = res + Chr(d)
Else
i = i + 1
End If
Loop
Text2.Text = res
End Sub
1)将明文中每个字符用8位二进制ASCII码(不足八位的左端补0,凑足八位)表示;如“A”的二进制ASCII码值为01000001;
2)对8位二进制编码进行取反码(0变1,1变0)操作,如01000001的反码是10111110;
3)将8位二进制反码用2位十六进制表示,得到该字符的密文;
4)将每个字符的密文按照明文的倒序连接。
实现上述功能的VB程序如下:
Private Sub Command1_Click()
Dim i As Integer, j As Integer, m As Integer, k As Integer
Dim c As String, x As Integer, y As Integer
Dim d(1 To 8) As Integer '数组d存储字符ASCII码二进制从左到右的各位数码
Dim mw As String 'mw存储密文
mw = ""
For i = 1 To Len(Text1.Text)
c = Mid(Text1.Text, i, 1)
For j = 1 To 8
‘I处
Next j
m = Asc(c)
k = 8
Do While ‘II处
d(k)= ①
m = m \ 2
k = k - 1
Loop
mw = btoh(d) + mw
Next i
Text2.Text = mw
End Sub
Function btoh(m() As Integer) As String
′自定义函数是将m数组中的二进制数转换成对应的十六进制数
Dim s As Integer, i As Integer
Dim str As String, ch As String
str = "0123456789ABCDEF"
s = 0: ch = ""
For i = 1 To 8
s = s * 2 + m(i)
If ② Then
btoh =btoh+ Mid(str, s + 1, 1)
s = 0
End If
Next i
End Function
阅读分析程序代码,请回答下列问题:
① ②
s = Text1.Text
For i = 1 To Len(s)
ch = Mid(s, i, 1)
nk = Asc(ch) - i
If nk < 0 Then nk = nk + 127
Text2.Text = Text2.Text + Chr(nk)
Next i
已知大写字母A的ASCII码值为65,小写字母a的ASCII码值为97,在文本框Text1中输入内容“yhT5”,执行程序段后,文本框Text2显示的内容为( )
Dim m2 As String
Private Sub Command1_Click()
Dim flag(1 To 26) As Boolean
Dim num As Integer,t As Integer
Randomize
num = 1
Text3.Text = “”
For i = 1 To 26
flag(i) = False
Next i
Do While num <= 26
x = Int(Rnd * 26) + 97
If flag(t) = False Then
m2 = m2 + Chr(x)
num = num + 1
End If
Loop
Text3.Text = m2
End Sub
Private Sub Command2_Click()
Dim s As String, m As String, result As String
Dim k As String, c As Integer
s = Text1.Text
m = “abcdefghijklmnopqrstuvwxyz”
For i = 1 To Len(s)
k = Mid(s, i, 1)
If k >= ”A” And k <= “Z” Then
k = Chr(Asc(k) + 32)
End If
c = 1: continue = True
Do While
If k = Mid(m, c, 1) Then
continue = False
End If
c = c + 1
Loop
Next i
Text2.Text = result
End Sub
1)将该字符的ASCII码转换成对应的2位十六进制数;
2)将产生的十六进制数互换位置;
3)步骤2)产生的二位十六进制数即为该明文字符加密后的密文字符。
小明按照上述方法,设计了一个字符串加密的VB程序,功能如下:单击“生成密文”按钮Command1,程序依次将文本框Text1中每个字符按上述规则进行加密处理,连接这些加密字符,最后在文本框Text2中输出加密结果。程序运行界面如图所示。
实现上述功能的VB程序如下:
Private Sub Command2_Click()
Dim s As String, a As String, ans As String
Dim c As Integer, i As Integer
Dim s1 As String
s=Text1.Text
ans=” ”
For i=1 To Len(s)
a=Mid(s, i, 1)
s1=
ans=
Next i
Text2.Text=ans
End Sub
Function DToh(x As Integer) As String
Dim str As String
str=”0123456789ABCDEF”
Do While x <> 0
t=x Mod 16
x=x \16
Loop
End Function
1)以字节为单位进行加密处理;
2)将1个字节的8位二进制数分割成前4位与后4位两个二进制数;
3)分别将上述两个4位二进制数转换成十进制数;
4)将每个十进制数转换为1个加密字符,对应的“密码表”如下:
值(十进制) |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
加密字符 |
I |
l |
i |
k |
e |
C |
H |
N |
p |
o |
s |
t |
c |
a |
r |
d |
小华按照上述方法,设计了一个字符串(仅包含ASCII字符)解密的VB程序,功能如下:在文本框Text1中输入一串密文,单击“解密”按钮Command1,在文本框Text2中显示解密结果。
下表显示了字符串中一个字符的加密过程:
m |
←转换前字符m |
|||||||
109 |
←字符m的ASCII码十进制值 |
|||||||
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
←对应的二进制数 |
6 |
13 |
←分割、转换后的十进制数 |
||||||
H |
a |
←对应的加密字符 |
||||||
程序运行效果如图所示。
Private Sub Command1_Click()
Dim a(1 To 100) As Integer
Dim s1 As String, s2 As String, c As String
Dim x As Integer, k As Integer, i As Integer, j As Integer
Const code = "IlikeCHNpostcard"
n = Len(code)
s1 = Text1.Text
x = 0: k = 0
For i = 1 To Len(s1)
c = Mid(s1, i, 1)
For j = 1 To n
If Then
pos = j - 1
x = x * 16 + pos
Exit For '退出当前For循环
End If
Next j
If i Mod 2 = 0 Then
a(k) = x
x = 0
End If
Next i
For i = 1 To k
Next i
Text2.Text = s2
End Sub
编写解密的VB程序,功能如下:在文本框Text1中输入密文,单击“解密”按钮Command1,在文本框Text2中显示去重后的文本,并在标签Label1中显示明文。程序运行界面如图所示。
Private Sub Command1Click( )
Dim s1 As String, s2 As String, c As String, mw As String
Dim i As Integer
s1= Text1.Text
s2 = Mid(s1, 1, 1)
For i=2 To
c=Mid(s1, i, 1)
If c>="A" And c<= "Z" Then
IfThen s2 =s2 +c
Else
s2 =s2+c
End If
Next i
mw=“”
i=6
Do While i<= Len(s2)
mw = mw + Mid(s2, i, 1)
Loop
Text2. Text= s2
Label1. Caption =mw
End Sub
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中显示经过加密的字符。程序界面如图所示,请完成下列问题。
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
s= Text1.Text
s1=" "
For i=1 To Len(s)
c= Mid(s, i, 1)
If c>="A" And c<="Z" Then
t=(Asc©-asc("A")+25)Mod 26
c=Chr(t+ Asc("A"))
End If
s1=s1+c
Next i
Text2.Text=s1
s1=s1+c
在文本框Text1中输入“ABcd2XY”,执行上述程序段后,文本框Text2中输出( )
def encrypt(msg,key):
result = ""
size = len(msg)
for i in range(0,size):
result = result + msg[(i - key) % size]
return result
msg = input("请输入明文:")
key = int(input("请输入密钥:"))
re =
print(re)
①输入密钥a(0<a<26的正整数) ②设置i的初值为0,s1的初值为空串 ③获取待加密字符串s的第i个字母c ④按字母表顺序用字母c后面第a个字母代替字母c;如果字母c后面第a个字母超出了“z”,则返回“a”后再按次序后移(说明:字母“z”后移2位应该变为“b”) ⑤将加密完成的字母c连接到s1中 ⑥i增加1 ⑦如果i的值小于等于待加密字符串s的长度-1,则返回第③步,否则输出密文字符串s1 |
1)将该字符的ASCII码转换成对应的2位十六进制数;
2)将产生的十六进制数互换位置;
3)步骤(2)产生的二位十六进制数即为该明文字符加密后的密文字符。
小明按照上述方法,设计了一个字符串加密的VB程序,功能如下:单击“生成密文”按钮Command1,程序依次将文本框Text1中每个字符按上述规则进行加密处理,连接这些加密字符,最后在文本框Text2中输出加密结果。程序运行界面如图所示
实现上述功能的VB程序如下:
Private Sub Command1_ Click()
Dim s As String, a As String, ans As String
Dim c As Integer, i As Integer
Dim c1 As Integer, c2 As Integer
Dim d1 As String, d2 As String
s= Text1. Text
ans =“”
For i=1 To Len(s)
a=Mid(s, i, 1)
c= Asc(a)
c1=c \16
c2= ①
d1= Mid(Str(c1), 2, 1) '使用Str(c1)将在字符c1前增加一个空字符
If c2>>=10 Then ② Else d2 = Mid(Str(c2), 2, 1)
ans= ③
Next i
Text2. Text= ans
End Sub
① ② ③
图 a
图 b
根据上述加密算法编写解密程序。程序在启动时读取密钥矩阵存入列表a中,根据程序提示,输入 密文,然后显示明文。运行界面如下图 c所示。
图 c
def getmm(x,n):
col = (x-1) % n
row = (x-1) //n
getmm = a[col*n+row]
if row % 2 == 1:
getmm =
return getmm n = 3
#存储密文数据,偶数位存储加密值,奇数位存储该数据在原文中的位置
#生成规模为 n*n 的密钥矩阵存入列表 a 中
mw=[]
a=[]
for i in range(n*n):
a.append(i+1)
p=input("请输入密文:") #2,1,6,2,10,3,12,4,10,5, t=0
k=0
for i in range(len(p)):
c=p[i]
if c!=",":
t=t*10+int(c)
else:
mw.append(t)
t=0 print("原文为:",end="")
yw=[]
for i in range(k//2): #对密文解密,结果存入列表 yw 中
yw.append(mw[2*i]-getmm(mw[2*i+1],n))
s=""
for i in range(k//2):
s=s+ #转换为字母输出
print(s)
图1 |
图2 |
图3 |
选择加密时,在明文文本框中输入明文,点击“加密”按钮,网页显示密文与对应的密钥。加密规则为打乱明文对应的索引作为密钥,再利用该索引逐个取明文字符连接成密文,例如:明文为“信息技术”,若被打乱的索引为[2,0,1,3],则密文为“技信息术”,密钥为“2,0,1,3”
选择解密时,在密文文本框中输入密文,密钥文本框输入密钥,点击“解密”按钮,网页显示明文。
from flask import render_template,request,Flask
import random
app=Flask(__name__) #创建应用实例
@app.route('/') #选择页面路由
def index():
return render_template('')
#加密功能代码略,以下为解密代码:
@app.route('/jiemi1/',methods=["GET","POST"])
def jiemi1():
wb=request.form["wb"] #利用request获取网页文本框内容,返回示例:“1,4,2,3,0”
keyo=request.form["key"] #变量wb存储密文,变量keyo存储密钥
keyn=list(map(int,keyo.split(","))) #将字符串keyo转换为数值列表,示例:[1,4,2,3,0]
result=""
for i in range(len(keyn)):
for j in range(len(keyn)):
if :
break
result+=wb[j]
return render_template("jie.html",WB=wb,KEY=keyo,RESULT=result)
if __name__=="__main__":
def cal(lst): #计算样本lst的信息熵
x,y,z=0,len(lst),0 #x表示该样本信息熵,y表示该样本数量,z表示某信息发生的概率
num={}
for i in lst:
if i not in num:
num[i]+=1
for k in num:
z=num[k]/y #计算该信息发生的概率
x-=z*log(z,2) #根据公式计算信息熵,log(b,a)等价于logab
return x
def check(x,y):
#根据节点x,对样本y进行划分,返回示例:{'否': [1, 1, 0, 0, 1, 1, 1, 1], '是': [1, 1, 0, 1, 0, 0]}
dic={'是否有风': ['否', '否', '否', '否', '否', '否', '否', '否', '是', '是', '是', '是', '是', '是'],
'天气': ['多云', '多云', '晴', '晴', '晴', '雨', '雨', '雨', '多云', '多云', '晴', '晴', '雨', '雨'],
'温度': [28, 27, 29, 22, 21, 21, 20, 24, 18, 22, 26, 24, 18, 21],
'湿度': [78, 75, 85, 90, 68, 96, 80, 80, 65, 90, 88, 63, 70, 80],
'是否前往': [1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0]}
xm=list(dic.keys())
entropy=cal(dic[xm[-1]]) #调用函数计算样本原始信息熵entropy
#计算各节点信息增益
m=0;p=""
col=xm[:-1] #“是否前往”是结果项,不参与计算
for i in col:
size=len(dic[i]);entropy_1=0
zyb= #调用函数对样本按照当前节点进行划分
for j in zyb: #根据划分情况逐个求子样本信息熵并按比例累加
entropy_1+=len(zyb[j])/size*cal(zyb[j])
zy=entropy-entropy_1
print(i,"的信息增益:",zy)
if zy>m: #计算最大信息增益与信息增益最大的节点
m=zy
print("信息增益最大的节点:",p)
图1 |
图2 |
通过了解当天的是否有风、天气、温度和湿度这4个节点参数即可预测当天是否有人来游乐场。
不同的节点划分顺序可以绘制不同的决策树,为了选出最优的节点划分顺序,需要采用“信息熵”与“信息增益”指标。
信息熵,又称香农熵,被用来度量信息量的大小,信息熵越大表示信息量越大;
信息增益,表示样本经某节点划分后的信息熵变化大小。我们绘制决策树时应当逐次选择信息增益最大的节点作为当前节点。
对于有n个信息的样本D,记第k个信息发生的概率为,信息熵计算公式为E(D)=,
例如游乐场14个样本中“去”(9个)、“不去”(5个),则信息熵==0.940
若样本按“是否有风”节点划分,“是”(6个,其中3个去,3个不去)信息熵==1;
“否”(8个,其中6个去,2个不去)信息熵==0.811;经过此节点划分后的信息增益=原始信息熵按此节点划分后样本信息熵比例和=0.940(0.811)=0.048。
from flask import render_template,request,Flask
import random
app=Flask(__name__) #创建应用实例
@app.route('/') #选择页面路由
def index():
return render_template('')
#加密功能代码略,以下为解密代码:
@app.route('/jiemi1/',methods=["GET","POST"])
def jiemi1():
wb=request.form["wb"] #利用request获取网页文本框内容,返回示例:“1,4,2,3,0”
keyo=request.form["key"] #变量wb存储密文,变量keyo存储密钥
keyn=list(map(int,keyo.split(","))) #将字符串keyo转换为数值列表,示例:[1,4,2,3,0]
result=""
for i in range(len(keyn)):
for j in range(len(keyn)):
if :
break
result+=wb[j]
return render_template("jie.html",WB=wb,KEY=keyo,RESULT=result)
if __name__=="__main__":
def cal(lst): #计算样本lst的信息熵
x,y,z=0,len(lst),0 #x表示该样本信息熵,y表示该样本数量,z表示某信息发生的概率
num={}
for i in lst:
if i not in num:
num[i]+=1
for k in num:
z=num[k]/y #计算该信息发生的概率
x-=z*log(z,2) #根据公式计算信息熵,log(b,a)等价于logab
return x
def check(x,y):
#根据节点x,对样本y进行划分,返回示例:{'否': [1, 1, 0, 0, 1, 1, 1, 1], '是': [1, 1, 0, 1, 0, 0]}
dic={'是否有风': ['否', '否', '否', '否', '否', '否', '否', '否', '是', '是', '是', '是', '是', '是'],
'天气': ['多云', '多云', '晴', '晴', '晴', '雨', '雨', '雨', '多云', '多云', '晴', '晴', '雨', '雨'],
'温度': [28, 27, 29, 22, 21, 21, 20, 24, 18, 22, 26, 24, 18, 21],
'湿度': [78, 75, 85, 90, 68, 96, 80, 80, 65, 90, 88, 63, 70, 80],
'是否前往': [1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0]}
xm=list(dic.keys())
entropy=cal(dic[xm[-1]]) #调用函数计算样本原始信息熵entropy
#计算各节点信息增益
m=0;p=""
col=xm[:-1] #“是否前往”是结果项,不参与计算
for i in col:
size=len(dic[i]);entropy_1=0
zyb= #调用函数对样本按照当前节点进行划分
for j in zyb: #根据划分情况逐个求子样本信息熵并按比例累加
entropy_1+=len(zyb[j])/size*cal(zyb[j])
zy=entropy-entropy_1
print(i,"的信息增益:",zy)
if zy>m: #计算最大信息增益与信息增益最大的节点
m=zy
print("信息增益最大的节点:",p)
1)将该字符的ASCII码转换成 8 位二进制数(不足8位的,高位补上相应数量的0);
2)将上述 8 位二进制循环左移 3 次(移出的数位放在最右边);
3)将上述处理后的 8 位二进制数依次取反(1 变 0,0 变 1);
4)最后将这 8 位二进制分成左右两个 4 位二进制数,分别转换成十进制数,然后从密钥字符串中取出相应的字符作为密码。密钥见下表:
值(十进制) |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
加密字符 |
W |
g |
Q |
# |
f |
0 |
2 |
y |
* |
? |
S |
c |
A |
p |
x |
T |
例如,明文小写字母“a”,通过上述加密算法加密后的密文是“Tf”,加密过程如下:
“a的ASCII码为97,转换成二进制是01100001”→“逐位取反后为10011110”→“循环左移3次为11110100”→“转换为两个十进制数分别为15,4”→“得到密文Tf”。
程序运行界面如下图所示:
实现上述功能的程序如下,请回答下列问题:
def miyao(b): #从密钥中得到相应的密码
s=0
my={0:"W",1:"g",2:"Q",3:"#",4:"f",5:"0",6:"2",7:"y",8:"*",9:"?",10:"S",11:"c",12:"A",13:"p",14:"x",15:"T"}
for i in range(8):
if i==3:
zh=my[s]
s=0
zh=
return zh
st=input("输入明文:")
ans=""
for i in range(len(st)):
a=[]
k=ord(st[i])
for j in range(8):
a.append(1)
while :
r=1-k%2
k=k//2
a[j]=r
j=j-1
a=a[3:8]+a[0:3]
ans=ans+miyao(a)
print(ans)
划线处,请填入合适的选项。(单选,填字母)。
A.s=s*2+b[i] B.s=s+b[i]*2 C.zh=zh+my[s]
D.zh=my[s]+zh E.k<0 F.k>0
def jiami(x):
if "A"<=x<="Z":
y=chr(ord(x)+32)
elif "0"<=x<="9":
y=str((int(x)+1)%10)
else:
y=x
return y
mingwen=input("请输入明文")
miwen=""
for x in mingwen:
miwen=miwen+jiami(x)
print("密文为:",miwen)
输入“Abc@789”并运行程序,输出结果是( )