2022届高三信息技术选考总复习 专题19 进制转换的程序实现 课件-(59张PPT)

文档属性

名称 2022届高三信息技术选考总复习 专题19 进制转换的程序实现 课件-(59张PPT)
格式 pptx
文件大小 1.8MB
资源类型 教案
版本资源 浙教版(2019)
科目 信息技术(信息科技)
更新时间 2021-11-01 10:30:29

图片预览

文档简介

(共59张PPT)
专题19 进制转换的程序实现
在计算机中,存储信息的基本单位是______,且所有的信息都是__________表示,但二进制比较冗长,把一个字节的____个位分成高4位和低4位两部分,每部分转换成____位十六进制数,即一个字节在计算机中用8个位存储,但在查看内码或其他操作时,可以用____个十六进制数表示。因此经常进行二进制、十进制和十六进制之间的转换。
一、十进制数向其他进制数转换
1.十进制数向二进制或十六进制转换时,用该数除以____或______,如果商不为0,把____作为被除数,反复计算,直到得到的商为0为止,把每次的余数____向连接起来,组成新的进制数。
字节
二进制数
8
1
2
2
16


2.十六进制数的基数为0-9及______,因此将每次在0-15之间的余数t转换为对应字符方法:一是在”0123456789ABCDEF”字符串中用_____函数取出相对应t+1位置的字符,二是利用字符内码,先计算对应字符ASCII码值,再用Chr函数转换成相应的字符。在转换之前要进行判断余数t所在区间,如果余数t在0-9之间,对应字符ASCII码值计算公式为(___________);如果余数t在10-15之间,计算公式为(________________)。
3.数值小于255的正整数n,求转换成二进制数后的高4位和低4位对应的十进制数,实际上就是求该数转换为十六进制后的左边第1位和左边第2位。如94D=1011110B,高4位为______B,低4位为_____B,转换成十进制数为5和14,可以直接用_____和__________快速求出对应的值。
A-F
Mid
Asc(”0”)+t
Asc(”A”)+t-10
0101
1110
n\16
n Mod 16
4.取出一个十进制数x的个位数的VB表达式是x Mod 10,去除一个十进制数x的个位数的VB表达式是x\10。在R进制数中,当累加到R时,向高位进一,因此求R进制的最后一位数字的方法是x Mod R,去除最后一位数字的方法是x\R。
二、其他进制数向十进制数转换
1.如果是一位十六进制数字符转十进制,分0-9和A-F两种情况,0-9的可以用_____函数进行转换,A-F字符可以用其ASCII码值减去55(因为“A”的ASCII码值为65)进行转换。
Val
2.按权展开相加法。从低位开始,把每一位上的数乘以该位数的权,把每次的乘积相加。如(1011)2=1×20+1×21+0×22+1×23,38H=8×160+3×161=8+48=56D。
根据这个算法思想,①从字符串的最右边(i的初值为Len(s))开始取字符,对取出的字符(0-9或A-F)进行转换成0-15之间的数字;②找出取出的字符的指数与位置i的关系;③将取出字符值与位权相乘并累加。
3.从左边第1位开始,将每位上的字母转换成对应的数字t1,计算下一位时,先将计算的结果左移一位(在后面添加1个0,扩大R倍),再加上该位上的数字。如将十六进制数A1B2H转换成十进制数的过程,依次读出A、1、B、2,计算结果分别为A、A*16+1、(A*16+1)*16+B、((A*16+1)*16+B)*16+2。
考点一 十进制转换向其他进制转换
把二进制和十六进制等其他进制统称为R进制。通常可以有辗转相除法、减去权值法和数组累加法三种方法进行十进制向R进制的转换。
1.辗转相除法
R进制的基数有R个,一个十进制数除以R的余数就是转换后的最低位,接着把最低位去除,即把整个数缩小R倍,重复取出最低位,就是所称的辗转相除法。
【例1】 奇偶校验是一种校验数据传输正确性的方法。其中奇校验方法:统计二进制数据的数位中“1”的个数,若个数为奇数,则校验位值为0,否则校验位值为1。小李编写了一个计算奇校验位值的VB程序,功能如下:在文本框Text1中输入1~255十进制待校验数,单击“计算”按钮Command1后,在文本框Text2中显示该数对应的二进制值,并在标签Label3中显示该数的校验位值。程序运行界面如图所示。
(1)在设计程序界面时,要清空文本框中的显示内容,应修改该文本框中的________属性。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
Dim a As Integer,s As String
Dim n As Integer,t As Integer,v As Integer
n=Val(Text1.Text)
t=0
s=””
Do While n>0
a=n Mod 2
n=n\2
t=____①____
s=Str(a)+s
Loop
v=t Mod 2
Text2.Text=s
Label3.Caption=”校验位值:”+____②____
End Sub
(3)运行该程序,在文本框Text1中输入22,单击“计算”按钮,则显示的校验位值是________。
答案 (1)Text (2)①t+a ②Str(1-v) (3)0
解析 (1)本小题考查对象的属性设置,文本框中的显示内容为文本框的“Text”属性。(2)该算法通过“除二取余”将十进制的待校验数n转换为二进制数s,变量t将二进制数各数位上的“0”或“1”累加起来(统计二进制数据中“1”的个数),即“t=t+a”。v=t Mod 2用于判断t的奇偶性,当v=1时,t为奇数,当v=0时,t为偶数,校验位值可以从t的奇偶性来判断,校验位值为(1-v)或(v-1),通过Label3的Caption属性值输出,需转化为文本型,②处应为Str(1-v)或Str(Abs(v-1))。(3)十进制数22转化为二进制数为“10110”,各数位上的“0”或“1”相加得3,为奇数,校验位值为0。
【变式1】 (2020·4月杭州)有如下VB程序段:
 n=0
 For i=32 To 64
 k=i
 t=0
 Do While k>0
   m=k Mod 2
   k=k\2
   t=t+m
B
 Loop
 If t=5 Then n=n+1
 Next i
 Label1.Caption=Str(n)
执行该程序段后,则在标签Label1中显示的内容是(  )
A.4 B. 5 C.6 D.7
解析 本题是考核将32至64之间的数转换成二进制数中,包含5个1的数有几个。
2.减去权值法
先求出该十进制数转换为二进制数的位数k(最右边的数为第1位),第k位的权值为2k-1,若该数大于等于k位上的权值,转换后的二进制数k位的值为1,否则为0;将该数减去k位上的权值,再去判断下一位,值到k等于0为止。如11D转换为二进制数,转换后有4位二进制数,第4位上权值为8,因此转换后的二进制数第4位为1,减去8后,该数为3,比第3位权值4小,第3位为0,重复操作,最终可得1011B。
【例2】 编写一个“十进制转二进制”的VB程序,功能如下:在文本框Text1中输入0-255之间的整数,单击转换按钮,在Text2中显示对应二进制数。程序运行界面和代码如右:
Private Sub Command1_Click()
Dim i As Integer,n As Integer,s As String
n=Val(Text1.Text)
k=1: s=””
Do While 2 ^ kk=k+1
Loop
Do While n <>0
If n>=2 ^ (k-1) Then
s=s+”1”
  ________ ′填空
Else
s=s+”0”
End If
(1)程序代码中实线框处代码有错误,请改正。
(2)请在程序代码划线处填入正确的代码。
(3)若删除虚线框处代码,运行程序,在文本框Text1中输入12,单击“转换”按钮,则文本框Text2中显示的内容是________。
(4)若删除虚线框处代码,同时保证程序能正确运行,应将程序中加下划线的代码Do While n <>0 修改为Do While____________。
答案 (1)n=n- 2 ^ (k-1) (2)k=k-1 (3)11 (4)n <>0 Or k<>0或等价答案
解析 以13D=1101B=1*2^3+1*2^2+0*2^1+1*2^0为例,转换后的二进制数为4位,其中第1、2、4位上数字为1,依次用n减去该位上数字与该位上权的乘积,如果不够减,表示该位上数字为0。即k=4,最大位权是2^(k-1),13-8=5,5-4=1,1-2不够减,该位是0,最后减2^0。12-8=4,4-4=0,此时k=2,如果删除虚线框处代码,将输出11。为了实现n已经是0,而k不是0的情况,可以改变循环条件,即当n或k不等于0时,需要继续循环。
构造一个数组a,把转换后的数值分别放在数组中,其中把最低位放在a(1)中。在一个十进制数x转换为R进制数,变量i从1开始,每次对a(1)加1,循环x次。若增加后的a(1)等于R,则需把a(1)置0,把a(2)的值加1,若a(2)等于R,再次进位,依次类推。最后把数组中从最后一个元素依次读到a(1),就是转换后的数值。
3.数组累加法
【例3】 有如下VB程序段:
For i=1 To 8
a(i)=0
Next i
For i=1 To 16
j=1
a(j)=a(j)+1
Do While a(j)>=8
a(j)=0: j=j+1: a(j)=a(j)+1
  If kLoop
A
Next i
For i=k To 1 Step -1
s=s & a(i)
Next i
运行程序,则s的结果是 (  )
A.20 B.1000 C.19 D.21
解析 本题实际是一个八进制数累加程序,a数组从低位到高位依次对应a(1)、a(2)……a(8),当向a(j)累加1后到达8,则需向高位进1,即满8进1的运算法则。变量i从1循环到16,对a(1)累加了16次,因此是把十进制数16转化成八进制。
【例4】 编写“构造字符串”程序,实现如下功能:
输入不重复的N个字符(2≤N≤5),构造由该N个字符(允许重复)组成的N位的字符串,输出所构造的字符串及构造的方法种数。程序运行界面如图所示,实现上述功能的VB代码如下:
Private Sub Command1_Click()
  Dim a(0 To 4) As String,i As Integer
  Dim b(0 To 4) As Integer,c As Integer
  s=T1.Text: n=Len(s)
  For i=0 To n-1
 a(i)=Mid(s,i+1,1)
 b(i)=0
 Next i
 c=0
 r=””
 For j=0 To n-1
  ____①______    ′填空
 Next j
 c=c+1
 List1.AddItem r
 k=0
 b(k)=b(k)+1
 Do While b(k)=n And k<4
  ____②____      ′填空
   k=k+1
   b(k)=b(k)+1
 Loop
  Next i
  T2.Text=Str(c)
End Sub
(1)代码“T2.Text=Str(c)”中的T2是__________。(单选,填字母:A.对象名/B.属性名/C.方法名/D.属性值)
(2)程序代码中,For语句加框处有错,请改正。
(3)程序代码中,将划线处语句补充完整。
答案 (1)A (2)1 To n ^ n (3)①r=a(b(j))+r ②b(k)=0
解析 根据排列的公式,n个字母可以看成有n个基数的n进制,每个字母代表从0到n-1的基数。n个数可以重复的排列数为n ^ n,因此方框处应修改为1 To n ^ n。以图中运行结果为例,把DEF看一个3位的三进制数,列表框中每次列出值分别为000,001,002,010,011,012……,220,221,222,共27个数,每个数是在前一个最低位加1,若该位上的数等于n,则向前(左边)进一位,若左边的数加上进位的1,也等于n,则该位数也向前进位。0至n-1的基数分别存储在数组b中,相对应代表的字符存储在数组a中,因此a(b(0))代表基础为b(0)的字符。r代表每一种组合,也代表从0开始的r进制数,因此要进行反向连接。当b(k)=n时,表示要向前进位,因此该位上的数应初始化为0。
考点二 其他进制向十进制转换
1.按权展相加法
把每位上的数值乘以位权并进行累加求和。注意其他进制数s的最低位幂的指数是0,最高位幂的指数是Len(s)-1,不同进制数的位权是不一样的。
【例5】 (1)用VB 编写二进制转十进制的程序,运行界面如图所示。程序功能如下:在文本框Text1 中输入待转换的二进制值,单击“转换后的十进制”按钮Command1,在文本框Text2 中输出转换结果。
【方法一】Private Sub Command1_Click() Dim ch As String,s As String Dim n As Integer s=Text1.Text For i=Len(s) To 1 Step -1 ch=Mid(s,i,1) n=____①____ Next i Text2.Text=Str(n) End Sub 【方法二】Private Sub Command2_Click()
Dim ch As String,s As String
Dim n As Integer
s=Text1.Text
For i=1 To Len(s)
ch=Mid(s,i,1)
n=____②____
Next i
Text2.Text=Str(n)
End Sub
答案 ①n=n+Val(ch)*2 ^ (Len(s)-i) ②n=n+Val(ch)*2 ^ (Len(s)-i)
解析 进制转换的过程是:该位上的值Val(ch)与该位上的权乘积进行累加,①是从低位向高位累加,随着i的减小,第i位上幂的指数从0增加到Len(s)-1,因此第i位上幂的指数与i相加是定值Len(s),因此可得①的答案为n=n+Val(ch)*2 ^ (Len(s)-i)。同理可得,②是从高位向低位累加,随着i的增大(从1到Len(s)),第i位上幂的指数从Len(s)-1减小到0,因此②的答案为n=n+Val(ch)*2 ^ (Len(s)-i)。
【变式2】 在文本框Text1中输入一个二进制数,单击“转换”按钮Command1,在文本框Text2中显示该二进制数对应的十进制数,若二进制数中存在不是0和1的数,则输出“非法的二进制数!”,程序运行时界面如下:
程序代码如下,请在空白处补充完整。
Private Sub Command1_Click()
Dim s As String,t As Integer,i As Integer
Dim ch As String,flag As Boolean,j As Integer
s=Text1.Text
flag=True
j=0
For i=Len(s) To 1 Step -1
ch=Mid(s,i,1)
If ch=”1” Or ch=”0” Then
  ____①____
j=j+1
Else
  ____②____
Exit For
 End If
Next i
If flag=True Then
 Text2.Text=Str(t)
Else
 Text2.Text=”非法的二进制数!”
End If
End Sub
答案 ①t=t+Val(ch)*2 ^ j ②flag=False
解析 理解变量的含义。s输入的二进制数,t是转换后的十进制数,ch是从低位向高位分解的字符,j从0、1、2、3……的变化规律,flag是否是二进制数的标志。
2.从高位向低位,移位相联
将R进制数从最高位(最左)到最低位,依次取出每个数字,分别转换成十进制。
如十六进制数A1B2H可以表示成A→A*16+1→(A*16+1)*16+B→((A*16+1)*16+B)*16+2,即把每次的和乘以R,将和左移一位,再联接上取出的字符。
【例6】 小红编写了一个将5位以内的十六进制正整数转化成十进制数的VB程序,功能如下:在文本框Text1中输入一个十六进制正整数,单击“转换”按钮Command1,在标签Label3中显示结果。程序运行界面如图所示。
(1)要使窗体Form1标题显示“数制转换”,则需该窗体的________(单选,填字母:A.Font/B.Caption/C.BackColor)属性。
(2)要实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim x As String,ch As String
Dim flag As Boolean,i As Integer,result As Long
x=____①____
i=1
result=0
flag=True
ch=Mid(x,1,1)
Do While i <=Len(x) And flag=True
If ch>=”0” And ch <=”9” Then
result=result*16+Val(ch)
ElseIf ch>=”A” And ch <=”F” Then
result=result*16+(Asc(ch)-Asc(”A”)+10)
ElseIf ch>=”a” And ch <=”f” Then
result=result*16+(Asc(ch)-Asc(”a”)+10)
Else
flag=False
End If
i=i+1
ch=__②____
Loop
If flag=True Then
Label3.Caption=Str(result)
Else
Label3.Caption=”输入错误”
End If
End Sub
(3)若在文本框Text1中输入5+9,单击“转换”按钮后,标签Label3中显示的内容是________ (单选,填字母:A.14/B.E/C.输入错误)。
答案 (1)B (2)①Text1.Text ②Mid(x,i,1) (3)C
解析 主线索是读出每个位上的字符,第二线索是字符进行判断,第三线索是对字符进行处理。从语句ch=Mid(x,1,1)来看,x是文本框Text1输入字符。Ch为每次取出字符,如果不是0-9或A-F或a-f的字符,则flag=False。
【例7】 RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各种各样的颜色。RGB颜色分量的值通常采用十进制数表示,而Flash软件中颜色值采用十六进制数表示。比如RGB(100,255,10)等价于十六进制颜色码#64FF0A,每个RGB颜色分量对应两位十六进制数。
颜色 R G B
十进制 100 255 10
十六进制 64 FF 0A
小杜编写一个十六进制颜色码转RGB颜色值的转换程序,程序功能如下:程序运行时在文本框Text1输入一个十六进制颜色码,输入格式为:“#”后面跟6位十六进数(其中字母均为大写)。单击“转换” 按钮Command1,在标签Label1上输出对应的RGB颜色值。程序运行界面如下图所示。
实现上述功能的VB程序如下,请回答下列问题:
(1)程序运行时,在文本框Text1输入“#C50913”,则标签Label1上显示的内容是________。
(2)请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim s As String,ch As String,ans As String
Dim i As Integer,j As Integer
Dim a(1 To 3) As Integer ′分别用于存储RGB对应的3个十进制分量
s=Text1.Text
s=Mid(s,2,6)
For i=1 To 3
a(i)=0
Next i
For i=1 To 6
j=(i+1)\2
ch=Mid(s,i,1)
a(j)=____①____
Next i
For i=1 To 3
ans=ans+Str(a(i))
If i <>3 Then ans=ans+”,”
Next i
ans=”RGB(”+ans+”)”
Label2.Caption=ans
End Sub
Function HtoD(x As String) As Integer ′将一位十六进制数转十进制数
If x>=”0” And x <=”9” Then
HtoD=Val(x)
Else
____②____
End If
End Function
答案 (1)RGB(197,9,19) (2)①a(j)*16+HtoD(ch) ②HtoD=Asc(x)-55
解析 根据语句j=(i+1)\2,j的值分别为1、1、2、2、3、3,即每两个十六进制数转换为一个十进制数,把这两个十六进制数看成前面的十六进制数添加1个0,即扩大16倍再加上第2位十六进制数。
考点三 二进制数与十六进制数互相转换
1.由于16是2的4次方幂,因此每4位二进制数转换为1位十六进制数,每1位十六进制数转换为4位二进制数,不足4位在前面补0。
2.二进制数向十六进制数转换时,从低位开始,每4位二进制数转换成十进制数,再在”0123456789ABCDEF”字符串中用Mid函数取出相对应的字符。
【例8】 小李编写了一个二进制数转十六进制数的VB程序,功能如下:在文本框Text1中输入一个二进制数,单击“转换”按钮Command1,在文本框Text2输出相对应的十六进制数,运行界面如图所示。实现上述功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim i As Integer,t As Integer,s1 As String,s2 As String,s3 As String
s2=”0123456789ABCDEF”
s=Text1.Text
i=Len(s)
s1=Mid(s,1,i)
End If
t=0
For j=1 To Len(s1)
t=t*2+Val(Mid(s1,j,1))
Next j
i=i-4
Loop
Text2.Text=s3
End Sub
答案 (1)i>=1 (2)Mid(s,i,4) (3)Mid(s2,t+1 ,1)+s3
解析 i表示字符串s中位置,从最后找到第一个位置为止。当i大于等于4时,表示可以取出4位二进制数,因此取出的字符个数为4,否则取出剩余的字符。在循环For j=1 To Len(s1)中,是计算每组二进制对应的十进制数,再在s2中找到对应的字符,并进行反向连接。
【变式3】 在文本框 Text1 中输入一组 12 位以内的二进制数,将该二进制数转化为十六进制数后在 Label1 中输出。程序运行后如图所示。
(1)程序运行时,将宽度调整为5000,则需在 Form_Load()过程中加入语句________(选填,填字母:A.Text1.Caption=5000 /B.Height=5000 /C.Text1.Width=5000 /D.Text1.Left 5000)。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
Dim a(1 To 12) As Integer  ′a 数组用以存储二进制数
Dim b(1 To 3) As Integer ′b 数组用以存储十六进制数
Dim m As String,s As String
Dim i As Integer,j As Integer,k As Integer
m=Text1.Text
For i=12 To 12- Len(m)+1 Step -1 ′将每位二进制数保存到数组 a 中
 ____①____
Next i
For i=1 To 3 ′将每 4 位二进制数转化为十进制数后保存到数组 b 中
For j=4 To 1 Step -1
b(i)=b(i)+a(____②____)*2 ^ (j-1)
Next j
Next i
For i=1 To 3
If b(i)<10 Then
m=Chr(b(i)+48)
Else
m=Chr(b(i)+55)
End If
s=s+m
Next i
Label1.Caption=”转换后的十六进制数为:”+s
End Sub
(3)若程序运行后,若在文本框中输入二进制数 1101101101,则变量s的值为________。
答案 (1)C (2)①a(i)=Val(Mid(m,i,1)) ②i*4-j+1 (3)36D
解析 先把二进制数m每一位数字存储在数组a中,再从低位开始,每4位转换为一位十六进制数。
【变式4】 字符加密:用VB编写某字符串加密解密程序(仅针对ASCII码字符),其加密过程如下:首先,分别求出待加密ASCII字符的ASCII码,然后用7位二进制来表示,比如“4”的ASCII码为十进制52,转换为7位二进制为“0110100”;其次,从左至右依次记为第1、2、3……7位,分别把第3、4、5位取反,即0变1,1变0,至此“0110100”变为“0101000”,将此二进制转换为ASCII码为40,对应的字符为左括号“(”, 即“4”经过加密后得到加密字符左括号“(”。
在文本框Text1中输入ASCII字符,单击命令按钮Command1,则在文本框Text2中显示经过加密的字符。VB代码如下,程序界面如图所示。上述加密与解密过程实际上是可以互逆的,请完成下列问题。
请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim a(1 To 7) As Integer
Dim i As Integer,j As Integer,n As Integer
Dim asc1 As Integer,s As String,s1 As String
i=1
s=Text1.Text
Text2.Text=””
Do While i <=Len(Text1.Text)
s1=Mid(s,i,1)
asc1=Asc(s1)
n=0
For j=7 To 1 Step -1
If j=3 Or j=4 Or j=5 Then
    a(j)=____①____
Else
    a(j)=asc1 Mod 2
End If
asc1=asc1\2
n=____②____
Next j
Text2.Text=Text2.Text+____③____
i=i+1
Loop
End Sub
答案 ①(asc1 Mod 2+1) Mod 2 ②n+a(j)*2 ^ (7-j)  ③Chr(n)
解析 s1表示每个待加密的字母,asc1为S1的ASCII值,采用除2倒取余数(asc1 Mod 2)法,把各个位的值依次存放在数组a中,当j=3 Or j=4 Or j=5需要取反,取反的方法是把该位加1后再Mod 2,计算各位后,还需转化成十进制数,因此采用按权展开相加法,把计算的十进制值存放在变量n中,再到n转换成相对应的字母。
1.有如下VB程序段:
x=123
Do While x>0
y=x Mod 10
For i=1 To y
t=t+i
Next i
ans=ans+t
x=x\10
Loop
程序运行后,变量ans的值是(  )
A.6 B.10 C.14 D.25
解析 外循环对数字x进行逐位拆分,内循环对拆分出来的数字y进行1到y的累加,注意累加过程中t没有清零。当y等于3,2,1时,对应的t为6,6+1+2,6+1+2+1。
D
2.有如下VB程序段:
C
x=Int(Rnd*15+12)*2
y=0: k=0
Do While x <>0
r=x Mod 8
y=y+r*10 ^ k
x=x\8
k=k+1
Loop
经过该程序段运行后,变量y的值可能为(  )
A.28 B.31 C.32 D.66
解析 本题考核的知识点是算法及对单循环程序的分析。首先确定x的取值范围为[24,52]间的偶数,该程序段的功能是将十进制数x转换为八进制,则y的取值范围为[30,64]间的偶数。
3.有如下VB程序段:
n=Val(Text1.Text)
For i=1 To n
p=i: cnt=0
Do While p>0
If p Mod 2=1 Then cnt=cnt+1
p=p\2
Loop
If cnt=2 Then ans=ans+1
Next i
Text2.Text=Str(ans)
程序运行后,在文本框Text1中输入”8”,单击按钮,则输出为(  )
A.0 B.5 C.2 D.3
解析 本题考查对进制的理解和VB程序的应用。不难发现程序功能为找出1到n之间所有“二进制下恰好包含两个1”的数字个数。模拟运算即可,分别是3、5、6,对应的二进制为11、101、110,另外若数据较大难以运算,则可利用数学的排列组合求解。
D
4.有如下VB程序段:
s=Text1.Text
For i=1 To Len(s)
c=Mid(s,i,1)
If c>=”A” Then n=Asc(c)-55 Else n=Val(c)
s2=””
For j=1 To 4
a=n Mod 2
s2=a & s2
n=n\2
Next j
Text2.Text=Text2.Text & s2
Next i
程序运行时,若在文本框Text1中输入34,则在文本框Text2中显示的结果是(  )
A.10010 B.11100
C.00101100 D.00110100
解析 将数转换成二进制,若不足4位,前面补0。
D
5.有如下VB程序段:
A
s=Text1.Text
n=Len(s) :ans=0
For i=1 To n
ch=Mid(s,i,1)
ans=ans*2+Val(ch)
Next i
Text2.Text=ans
若程序运行后Text2中显示的是“38”,则Text1中输入的是(  )
A.100110 B.209 C.45 D.19
解析 程序的功能是把二进制数转换成十进制数。
6.有如下VB程序段:
C
a(1)=0: a(2)=0: a(3)=0
For i=1 To 100
j=3: a(j)=a(j)+1
Do While a(j)=8
a(j)=0
j=j-1
a(j)=a(j)+1
Loop
Next i
s=a(1) & a(2) & a(3)
执行程序后,变量s的值是(  )
A.2 B.3 C.144 D.5
解析 程序的功能是每循环一次,a(3)加1,当a(3)或a(2)等于8时,将向前进1,即把100转换成8进制。
7.有如下VB程序段:
A
For i=1 To 49
j=1: a(j)=a(j)+1
Do While a(j)=5
a(j)=0
j=j+1
a(j)=a(j)+1
Loop
Next i
数组a中各元素初始值均为0,该程序段执行后,数组a中各元素之和为(  )
A.9 B.10 C.13 D.49
解析 a(1)每次增加1个,当满了5个以后,向a(2)进1,当a(2)满了5个以后,向a(3)进1,因此a(3)=1,a(2)=4,a(1)=4,
同课章节目录