资源简介 第2节 进制问题模拟演练1.十进制数转换为二进制数。小明用VB编写了一个程序,把输入的十进制数转换为二进制数,并判断二进制数中的“0”和“1”的个数是否相等。程序运行界面如图所示,在文本框Text1中输入要转换的十进制数。单击“确定”按钮Command1后,在文本框Text2中输出其对应的二进制数,在标签Label3中显示“相等”或“不相等”。/ (1)程序运行界面中使用的象个数为 ,要使按钮Command1上的文字显示为“确定”,应修改的属性名为 。?(2)为实现上述功能,请在划线处填入合适代码。Private Sub Command1_Click()Dim st As String, x As Integer, xl As IntegerDim i As Integer, j As Integer, v As Integer, c0 As Integer, cl As Integer c0 = 0 : cl = 0 : st = “” x = ① ?Do While x<>0 y= ② ? If y=0 Then c0=c0+1 Else c1=c1+1 st=y&st x=x2LoopText2.Text=stIf ③ Then? Label3.Caption=“相等”Else Label3.Caption=“不相等”End IfEnd Sub答案 (1)7 Caption (2) ①Val(Text1.Text ) ②x Mod 2 ③c0 = c12.在计算机系统中,数值一律用补码来表示和存储。求负整数的补码是将该数对应的正数转换为二进制数(不足8位时高位补0),最高位作为符号位为1,其余每位二进制数取反(1变成0,0变成1),末位加1。小明编写了一个VB程序,功能如下:在文本框Text1中输入一个负整数,单击“转换”按钮Command1后,在文本框Text2中显示该数对应的补码。程序运行界面如图所示。/ (1)在设计程序界面时,要使按钮Command1显示为“转换”,应修改该按钮的 属性。?(2)实现上述功能的VB程序如下,请在划线处填入合适代码。Private Sub Command1_Click()Dim a(1 To 8) As Integer, x As Integer, b As Stringx = Abs(Val(Text1.Text))For i = 1 To 7 ’求反码 a(i) = ① ? x = x 2Next ib = “1”: i = 1a(1) = a(1) + 1Do While ② And i < 7? a(i) = 0 ③ ? i=i+1LoopFor i = 7 To 1 Step -1 b = b + Trim(Str(a(i)))’Trim()函数去除字符前后空格Next iText2.Text = bEnd Sub(3)运行该程序,在文本框Text1中输入-10,单击“转换”按钮,则显示的补码是 。?答案 (1)Caption (2)①(x+1) Mod 2 ②a(i)=2 ③a(i + 1) = a(i+1) + 1 (3)11110110解析 本题解题的关键在于理解求负整数的补码流程。(1)略。(2)①此步骤是求反码,(x+1)Mod 2可求反码。②处理进位,a(i)=2时需要进位。③当a(i)=2时,给a(i+1)进位,因此此处填a(i+1)=a(i+1)+1。(3)略。3.在n个连续的方格内填字母A或B,但相邻两格都不能填B,求所有可能方案。可以用枚举算法解决,此题可以采用进制转换来解决。考虑到只包含了 A与B两个字母,我们可以用二进制的0和1来代替。程序部分代码如下:Private Sub Command1_Click()Dim n, m, s, i, j, count As LongDim flag As BooleanDim a(1 To 100) As Integern = Val(Text1.Text)count = 0 ① ?For i = 0 to s-1 m = i For j = 1 To n a(j) = m Mod 2 m = m 2Next jflag = TrueFor j = 1 To n - 1 If ② Then flag = false: exit For?Next jIf flag = True Then ③ ?Next iLabel1.Caption =“可行方案共”+ Str(count) + “种”End Sub(1)将代码补充完整;(2)若Text1中输入5,则可行方案共 种。?答案 (1)①s=2^n ②a(j)=1 And a(j+1)=1 ③count=count+1 (2)13解析 (1)①下面一句代码For i=0 to s-1中出现了变量s,所以此处需要给变量s赋值,考虑到从0到s-1,也就是s种可能,而n位2进制最多能表示的范围是0~2^n-1,所以s=2^n。②当出现相邻两个1时这个方案不可行,flag设置为False,所以答案是a(j)=1 And a(j+1)=1。③后面代码中出现变量count,此空需要给变量count赋值,count=count+1。(2)可以尝试把五位二进制全部写出来,设A=0,B=1,当出现连续两个1时不统计,最后结果为13个。4.小明编写了一个输出十进制数与二进制数对应表的VB程序。程序运行时,单击“输出”按钮Command1后,在列表框List1中输出运行结果,如下图所示。实现上述功能的VB代码如下,但①②加框处代码有错,请改正。/ Dim b(4) As Integer ’数组b按位存储二进制数Private Sub pprint(m As Integer)’本过程打印输出十进制数m和对应的二进制数’代码略End SubPrivate Sub Command1_Click()Dim i As Integer,j As IntegerList1.ClearList1.AddItem “十进制数 二进制数”For i = 0 To 4 b(i)=0Next iFor i = 0 To 15 Call pprint(i)’打印输出一行 j= 1 ’① b(j)=b(j)+1 Do Whileb(j)=0 ’② b(j)=0 j=j-1 b(j)=b(j)+1 LoopNext iEnd Sub(1)第①处修改为 ;?(2)第②处修改为 。?答案 (1)4 (2)b(j)=2 或 b(j)>1解析 本题考查VB程序的综合运用。对0~15这16个十进制数,该程序利用数组b的递推,根据二进制“逢二进一”的运算法则,产生相对应的二进制。如十进制3,对应的b数组为0011,那么十进制数4的二进制产生过程如下:程序给b(4)元素加1,变成0012,然后从b(4)开始,如果当前位等于2,则取0,前面一位加1(逢二进一),一直到无需进位为止,此时b数组为0100。(1)b(4)存放的是二进制的低位,所以每次都是从b(4)往前推。(2)如果需要进位,只有b(j)=2时,才需要依次进位。课件6张PPT。第2节 进制问题1.n进制思想:(1)运算规则:进位规则是逢n进一,借位规则是借一当n。 (2)基本数码:[0,n-1]教材研读 同理,八进制的基本数码为[0,7]。五进制的基本数码为[0,4]。 (3)一个n进制数后面加一个0变成原数的n倍;加两个0变成原数的n*n倍……;去一个零变成原数的1/n,去两个零变成原数的1/n^2……。 2.十进制转二进制、十六进制:除2或除16取余法 3.二进制转十进制、十六进制转十进制:按权相加法十进制与其他进制间的转换都可以采用类似的方法。4.求十进制数N的二进制反码:s=“”Do While n>0 r=(n+1) Mod 2 ’取余时,n加1再取余可得到反码 s=Str(r)+s n=n2loop 5.求字符c的ASCII码的后m位的十进制值: 表示式为Asc(c) Mod 2^m, 如c=“A”, m=4, 即求后4位。则Asc(c)=65, 65 Mod 16=1,转成二进制为0001。“A”的ASCII码为01000001,因此该式求出了后4位二进制的十进制值。常用于字符的加密解密问题。 6.字符c的ASCII码,删去后n位: 表达式为Asc(c) 2^n,如c=“A”,n=4,即删去后4位,则6516=4,转成二进制为0100。“A”的ASCII码为01000001,因此该式相当于求出了前4位(删去后4位)二进制的十进制值。常用于字符的加密解密问题。 展开更多...... 收起↑ 资源列表 模拟演练.docx 第2节 进制问题.pptx