bThen5>4=true执行then后的语句Label1.Caption="请重新输入"ElseLabel" />
第一套
1.有如下Visual Basic程序段:
a=12:b=20
b=a+b+28b=12+20+28=60
a=b+a–5a=60+12-5=67
b=a+b b=67+60=127
该程序段运行后,变量b的值为127。
2.有如下Visual Basic程序段:
a=5
b=Len("1011")b=字符串“1011”的长度4
If a>b Then5>4=true执行then后的语句
Label1.Caption="请重新输入"
Else
Label1.Caption="欢迎光临"
End If
该程序段运行后,在标签Label1上显示的是___请重新输入_________。
3.以下Visual Basic程序的功能是:计算表达式1×1+2×2+3×3+4×4+5×5+6×6的值,并在文本框Text_1中输出结果。
Private Sub Command1_Click()
Dim a(1To6)As Integer
Dim s As Integer,i As Integer
s=0
For i=1To6
a(i)=i*i a(i)=i*i所以a(5)=5*5=25
s=s+a(i)
Next i
_____=str(s)s的值在文本框text1的text属性中输出即text1.text=str(s) End Sub
问:
(1)为了计算上述表达式的值,上面程序段划线处应填入__text1.text_______。(2)该程序段运行后,a(5)的值是____25________。
4.用辗转相除法求最大公约数。
已知用辗转相除法求两个正整数m、n的最大公约数的算法如下:(用num1,num2,r分别表示被除数m、除数n和余数)
①求num1/num2的余数r;
②若r=0,则执行第⑤步;即r=0时跳出循环,所以r<>0时执行循环
③将num2的值放在num1中,将r的值放在num2中;
④重新执行第①步;
⑤输出最大公约数num2。
下列Visual Basic程序用于求三个正整数的最大公约数。程序界面如图所示,在文本框Text1、Text2和Text3中分别输入三个数a、b和c,单击"求最大公约数"按钮(Command1)后,在文本框Text4中输出a、b、c的最大公约数y。
Function temp (num1as Integer,num2as Integer)as Integer Dim r as Integer '此函数用于计算两个正整数的最大公约数r =num1Mod num2Do While ①即r=0时跳出循环,所以r<>0时执行循环num1=num2num2=r
r =num1Mod num2Loop
temp =num2End Function
Private Sub Command1_Click()
Dim a as Integer,b as Integer,c as Integer,x as Integer,y as Integer a =Val(Text1.Text)
b =Val(Text2.Text)
c =Val(Text3.Text)
x =②
y =temp(x ,c)
Text4.Text =Str(y)
End Sub
(1)解决此问题的算法是。(选填:解析法或枚举法)在程序①和②划线处,填入适当的语句或表达式,把程序补充完整:(2)程序中①划线处应填入___________________。(3)程序中②划线处应填入___________________。
本题是求3个数的最大公约数,temp 函数的作用是输入2个数返回这2个数的最大公约数,所以要先求出a ,b 的最大公约数x ,可以调用temp 函数求x 即x=temp (a ,b ),再求出x 和c 的最大公约数即②划线处的下个语句y =temp(x,c)
第二套
1.有如下Visual Basic程序段:m =-5n =-2
s =m +Int(n)s=-5+(-2)=-7
该程序段运行后,变量s 的值为____________。2.有如下Visual Basic程序段:a =10b =8
If a >b Then 10>8=true,执行then后面的语句,所以Label1上显示的是morning Label1.Caption ="morning"Else
Label1.Caption ="byebye"End If
该程序段运行后,在标签Label1上显示的是____________。3.有如下Visual
Basic程序段:
s =0
a =5
For i =1To 10Step 2
a =a +i
s =a *i
Next i
问:该程序段运行后,
(1)变量i的值是___________。(2)变量s 的值是___________。4.某超市打折促销,规定如下:①购物未超过500元按原价支付;
②购物超过500元但未超过1000元,超过500元部分按9折优惠计价;③购物超过1000元但未超过1500元,超过1000元部分按8折优惠计价;④购物超过1500元但未超过3000元,超过1500元部分按7折优惠计价;⑤购物超过3000元,超过3000元部分按6折优惠计价。根据以上规定,假定购物货款为x元,则实付金额y为:
程序界面如图所示,在"输入购物金额(单位:元)"后的文本框orgtext中输入购物金额(单位:元),单击"实付金额计算"按钮(Command1)后,在"实际支付金额(单位:元)为"后的文本框cashText中输出实付金额。
变量i 是循环变量,程序运行后i 的值与循环变量的初值,终值和步长值有关,但可以肯定的是必须超过终值才能结束循环从而结束程序,比如本题i 的初值是1步长值是2,那么i 的变化是每次循环都加2,(1,3,5,7,9)i=9是最后一次循环,因为i=9之后执行next i,相当于i=i+步长值即i=9+2=11,这时候在回到for 语句去判断i=11已经超过它的终值10,故循环结束,所以i 的值最终等于11.s 的值等于a*i,a 和i 的值在循环过程中不断的在变化,所以s 的值也是不断在变化,但是程序运行后s 的值是指最后一遍循环即i=9的时
候a*i 的值,a=a+i 所以a 是一个累加值,就是把每次循环时i 的值累加起来(1,3,5,7,9)再加上a 的初值5,a=1+3+5+7+9+5=30,
所以最终s=30*9=270
解决此问题相应的Visual Basic程序如下:Private Sub Command1_Click()Dim x As Single,y As Single x =Val(orgtext.Text)If x <=500Then y =x ElseIf ①Then y =500+(x -500)*0.9ElseIf x <=1500Then
y =500+500*0.9+(x -1000)*0.8ElseIf x <=3000Then
y =500+500*0.9+500*0.8+(x -1500)*0.7Else
y =500+500*0.9+500*0.8+1500*0.7+(x -3000)*0.6End If
②
End Sub
(1)解决此问题的算法是_______________。(选填:解析法或枚举法)在程序①和②划线处,填入适当的语句或表达式,把程序补充完整。(2)程序中①划线处应填入_______________。(3)程序中②划线处应填入_______________。
本题中没有循环结构所以一定是解析算法,(枚举算法中一定有循环结构,但是有循环结构的不一定是枚举算法,要注意),
①划线处应该填的是y =500+(x -500)*0.9的判断条件,从题目中看是500<,但是在填空处只需填写x<=1000,因为在if 语句中else 和elseif 的意思是否则和否则如果,也就是把已经判断过的情况排除掉了,在本题中在elseif 之前有if x <=500then 这个语句,也就是把x <=500的情况排除了,那么剩下的就都是大于500了,所以不需要判断x 是否大于500.
②划线处位于程序结束之前,一般考虑是最终结果的输出,本题中通过if 结构算出y 后根据题目的意思应该把y 的值在文本框cashText 中输出,由于y 的值是单精度实数型,在输出时要加上str 函数使得=两边类型匹配。cashtext.text=str(y)
第三套
1.有如下Visual Basic程序段:m ="sch"
n =Mid("tools",2,3)
n等于”tools ”字符串中第二个字符起的三个字符”ool ”s =m +n m和n都是字符串,字符串相加是把字符串连接起来得到school 该程序段运行后,变量s 的值为__________。2.有如下Visual Basic程序段:a =3:b =4:c =5
If a >b And b >c Then 3>4and 4>5即false and false结果还是false Label1.Caption ="happy"执行else后面的语句即显示better Else
Label1.Caption ="better"End If
该程序段运行后,在标签Label1上显示的是____________。3.有如下Visual Basic程序段:
Dim i As Integer,s As Integer s =0i =1:a =5Do While i <=100s =s +a *i i =i *5Loop 问:该程序段运行后,(1)变量i的值是____________。(2)变量s的值为____________。
4.
要求从某一字符串中删除指定的字符(假设所含的英文字母均为小写字母),并将处理后的字符串重新输出。程序界面如图所示,在文本框Text_1中输入原始字符串,在文本框Text_2中输入需要删除的字符,单击"删除此字符"按钮(Command1)后,在文本框Text_3中输出处理后的结果。
解决此问题的算法流程图如图所示,相应的Visual Basic程序如下:Dim p As String,k As String Private Sub Command1_Click()
Dim s As Integer,result As String ,flag As Boolean
变量i 是do 语句判断条件中的关键变量,当i>100时循环结束,而i 的变化规律从i =i *5可以看出每次是原来的5倍,i 的初值是1,第一次循环后是5,第二次循环后是25,第三次循环后是125超过100所以i 的值最终是125.s 的值是a*i 的累加,总过三次循环,第一次a*i=5*1=5,第二次5*5=25,第三次5*25=125把三次的结果累加起来就是155
result =""
p =Text_1.Text
k =Text_2.Text
For s =1To Len(p)
flag =f(s)
If Not flag Then
result =result +①
End If
Next s
②
End Sub
Function f(s As Integer)As Boolean
If Mid(p,s,1)=k Then f =True
End Function
(1)解决此问题的算法是________________。(2)(选填:顺序查找或对分查找)
在程序①和②划线处,填入适当的语句或表达式,
把程序补充完整。
(2)程序中①划线处应填入________________。(3)程序中②划线处应填入________________。本题程序中无左边界i 右边界j 和重点m 所以肯定是顺序查找本题中最后3行程序是一个自定义函数f ,通过这个函数去判断输入的字符串p 中的第s 个字符是否和要删除的k 字符相同(通过Mid(p,s,1)取字符),如果相同则f=true,并在主程序中赋值给变量flag,在if 语句中判断not flag 为真是把这一个字符还是要加到result 变量中(只有当flag 为false 时not flag 才为真,也就是当取出来的字符等于k 时,函数返回的值赋值给flag 是true,那么这个字符就不需要加到result 中,相当于删除了这个字符)所以要在程序中①划线处应填入Mid(p,s,1),也就是取
出来的字符不等于k.程序中②划线处应填入的内容明显是输出最终结果result,从题中所给出的提示明显是在文本框text_3综合中输出,所以应填入text_3.text=result (result 是string
类型即字符串型的,所以不需要加str 函数)
第四套
1.有如下Visual Basic程序段:
a =-1:
b =2
c =3Mo
d b b =b +c
该程序段运行后,变量b 的值为__3____。2.有如下Visual Basic程序段:a =13:b =24:c =5
If a >b Or b >c Then 13>24or 24>5即false or true=true Label1.Caption ="monday"执行then后的语句,所以显示monday Else
Label1.Caption ="tiger"End If
该程序段运行后,在标签Label1上显示的是____________。3.有如下Visual Basic程序段:
s =10
For i =1To 20Step 3
s =s +i
Next i
For j =1To 3
s =s *j
Next j
问:该程序段运行后,
(1)语句“s=s*j ”
执行的次数为_________。
(2)变量s 的值为_________。
4.某协会进行钓鱼比赛,最后有十人进入决赛,录入员编制了如下Visual Basic 程序,功能是根据成绩进行排序,程序中数组a保存所有参赛者的成绩,数组b 保存此成绩对应的姓名,第i位参赛者的成绩保存在a(i)中,姓名保存在b(i)中。程序界面如图所示,左边列表框List1中显示原始数据(成绩和相应的姓名),单击"排序"按钮(Command1),排序后的结果按成绩从高到低显示在列表框List2中。
解决此问题的算法流程图如图所示,排序部分的程序段如下:Dim a(1To 10)As Single
不解释本题中有2个循环结构,但它们是彼此独立而不是互相嵌套的,即for i 循环开始后在next i 这边就结束了,然后才开始j 循环,s=s*j 语句是在j 循环中,它执行的次数就是j 循环循环的次数,很明显j 是从1循环到3步长值是默认的1,3次.s 在两个循环中都被赋值所以要先算出i 循环结束后s 的值,i 循环是一个累加,i 的初值是1,步长值是3终值是20,所以i 依次经历的数字是(1,4,7,10,13,16,19)全部加起来后再加上s 的初值10等于70+10=80,而后进行j 循环,j 循环中s=s*j 是一个累乘,s 要依次乘上1,2,3最终结构是80*2*3=480.
Dim b(1To 10)As String Private Sub Command1_Click()
Dim i As Integer,j As Integer,k As Integer,x As Single,y As String For i =1To 9
k =i For j =i +1To 10If ①Then k =j Next j If k <>i Then x =a(i):a(i)=a(k):②y =b(i):b(i)=b(k):b(k)=y End If Next i For i =1To 10List2.AddItem Str(a(i))+""+b(i)Next i End Sub Private Sub Form_Load()'此过程用于对数组a和数组b进行初始赋值,代码略End Sub (1)解决此问题的算法是_________________。(选填:冒泡排序或选择排序)在程序①和②划线处,填入适当的语句或表达式,把程序补充完整:(2)程序中①划线处应填入___________________。(3)程序中②划线处应填入___________________。
本题程序中两个for 语句中间还有一个语句,而且if 选择结构不是嵌套在两个循环
语句的最中间,明显可以判断出这是选择排序.本题是按成绩从大到小排序的,成绩保存
在数组a 中,按照选择排序的思想,就要在每一遍排序中找出未排序数据中的最大的一个(用k 指向这一最大值,即程序中的k=j )那么什么时候要让k=j 呢,也就是j 指
向的数据比k 指向的数据大的时候,即
d(j)>d(k)时.程序中②划线处应填入的是交换a(i)和a(k)值的三个组合语句中的一个语句(小技巧:在这个语句组合中临时变量X
和a(i)和a(k)在等号左右各出现一次)所以应填入a(k)=x
第五套
1.有如下Visual Basic程序段:s ="expression"
a =25
b =a +Len(s)
该程序段运行后,变量b 的值为______35______。2.有如下Visual Basic程序段:a =1:b =2:c =5
If a >b And a >c Then
c =a +b
Else
c =a +5En
d If
Label1.Caption =Str(c)
该程序段运行后,在标签Label1上显示的是____6________。3.已知某数列前二项分别为:a 1=1、a 2=2,以后每项都满足:a i =a i-1+a i-2(i>2)
有如下Visual Basic程序段:
Dim a(1To 20)As Integer
a(1)=1:a(2)=2
For i =3To
a(i)=a(i -2)+a(i -1)Next i 问:
(1)数组a存储该数列的前20项,上面程序段划线处应填入_________。(2)该程序段运行后,a(6)的值为____________。
4.王敏的E-Mail邮箱密码忘记了,但她需要收一封很重要的来信,请你帮她尽可能找出密码。她零星记得自己密码信息:①密码是六位数字,前面两位为31;②最后两位数字相同;③能被16和46整除。
程序界面如图所示,单击"帮助找回密码"按钮(Command1)后,可能的密码显
示在列表框List1中。
解决此问题的相应程序如下:Private Sub Command1_Click()
不想解释
你懂的a 数组中有20个数组元素,a(1)和a(2)已经赋值,从第3项到20项则通过for 循环进行赋值,所以终值应该是20.从程序中可以看出第三项开始每一项都是前面2项之和,即a(3)=1+2=3,a(4)=2+3=5,a(5)=3+5=8,a(6)=5+8=13
Dim a As Integer,s As long,b As Integer,i As Integer For i =0To 9999①
s =310000+i If s Mod 46=0Then ②b =(s Mod 100)\10If a =b Then List1.AddItem Str(s)End If End If Next i End Sub
(1)解决此问题的算法是________________。(选填:枚举算法或排序算法)在程序①和②划线处,填入适当的语句或表达式,把程序补充完整:
(2)程序中①划线处应填入__________________。(3)程序中②划线处应填入__________________。
本题中已知解的大概取值范围,需要通过条件判断去找出真正的解,这是枚举算法的算法思想.
在for 语句终值后应该填写的肯定是for 循环的步长
值,而这一个步长值我们可以从流程图中i=i+16知道是16,所以应该填上step 16.(密码中有一个条件是能
被16和46整除,而在程序中只判断s mod 46=0,原因是310000正好能被16整除,以后每次加上16也就是步长值取16就能保证这个数一定是能被16整除的)密码是否正确的还有一个判断条件是最后2位数字相同,也就是程序中的判断a=b,而在这一判断之前是b =(s Mod 100)\10,分析一下可知b 是s 的十位数上的数字,那么划线处我们应该取出s 个位上的数字赋值给a,即a=s mod 10.
第六套
1.有如下Visual Basic程序段:
a =15
b =Val("256")a =a *2+b
该程序段运行后,变量a 的值为___286_________。2.有如下Visual Basic程序段:
a =Mid("Please input",4,2)a是从引号中的字符串的第四个字符开始取2个字符
b ="Please"
If Len(a) Label1.Caption ="不合格"End If 该程序段运行后,在标签Label1上显示的是____标准________。3.已知某数列前二项分别为:a 1=1,a 2=2,以后每项都满足:a i =a i-1+a i-2(i>2) 有如下Visual Basic程序段: Dim a(1To 20)As Integer a(1)=1:a(2)=2 For i =3To 20 a(i)=+a(i -2) Next i 问: (1)如果用数组a存储该数列的前20项,程序段划线处应填入_________。(2)该程序段运行后,a(4)的值为____________。 4.小明设计了某单位的公积金查询系统,输入职工的公积金账号,可以查出该账号对应的余额。所有职工的公积金账号和相应的余额已分别保存在数组a(按从小到大排序)和数组b中,第i个职工的账号保存在a(i)中,对应的账号余额保存在b(i)中。 程序界面如图所示,左边列表框List1中显示的是部分职工的账号和余额,在文本框Text1中输入职工的公积金账号,单击"查询余额"按钮(Command1)后,如果找到此账号,则在标签Label2中显示"此账号余额为"和账号对应的余额值,如果未找到则显示"找不到此账号,请重新输入"。 无需解释从题中a i =a i-1+a i-2可知划线处应该填a(i-1).a(4)=a(4-1)+a(4-2)=a(3)+a(2)a(3)=a(2)+a(1)=3所以a (4)=3+2=5 解决此问题的算法流程图如图所示,相应的查找部分程序段如下:Dim a(1To n)As Long Dim b(1To n)As Single Private Sub Command1_Click() Dim x As Long,i As Long,j As Long,m As Long,f As Boolean x =Val(Text1.Text)i =1:j =n:f =False '设账号总数为n Do While (i <=j)And Not f ①