高二算法练习
班级姓名学号
一. vb常用控件、属性
1.在Visual Basic中,添加一个标签,在工具箱中要单击的控件是
A .
B .
C . D.
2.在Visual Basic代码中,将多个语句合并在一行上的并行符是
A.撇号(')
B.冒号(:)
C.感叹号(#)
D.问号(~)
3.下列控件中可用于接受用户输入文本,又可用于显示文本的是
A. Label 控件
B. TextBox 控件
C. Timer 控件
D. CommandButton 控件
4. Visual Basic规定窗体文件的扩展名是
A. .for
B. .frm
C. .vbp
D. .bas
5.窗体上有命令按钮OK,它的单击事件过程为CmdOK_Click(),该按钮的Name和Caption属性分别为
A.OK,Cmd B.Cmd,OK C.CmdOK,OK D.OK,CmdOK
6.下列哪语句,可使窗口的按钮Command1显示“确定”
A Command1.Show ="确定"
B Command1.Caption ="确定"
C https://www.360docs.net/doc/9d3514918.html, ="确定"
D Command1.Visible ="确定"
7.对n个元素进行排序,用冒泡法进行排序时,共需比较多少次
A. n*(n-1) B.n*(n+1) C.n*(n-1)/2 D.n*(n+1)/2
多个输出。
A.稳定性B.确定性C.正常性D.快速性
9.下列分别属于哪种算法:
需通过多重循环一列举出解决问题的所有可能解,并在逐一列举的过程中,检验每个可能的解是否是问题的真正解( )
需要从实际问题中归纳出数学解析式,就此设计出合适的算法( ) A.解析法 B.递归法 C.枚举法 D.查找法
10.算法用流程图来表示,开始/结束框是用来表示算法的开始和结束,以下哪个表示开始/结束框
A
11.Visual Basic是一种面向对象的程序设计语言,构成对象的三要素是 A.属性.事件.方法 B.控件.属性.事件
C.窗体.控件.过程
D.窗体.控件.模块
12.在程序中用到某一整型变量的数据范围为-40000至40000,则该变量类型应该说明为
A.Integer
B.Byte
C.Long
D.Boolean
13.下列每个控件都具有的属性是
https://www.360docs.net/doc/9d3514918.html,
B.Caption
C.Font
D.Interval
14.程序的三种基本结构是
A.分支结构、循环结构、树型结构
B.顺序结构、分支结构、循环结构
C.顺序结构、循环结构、树型结构
D.树型结构、顺序结构、分支结构
1.以下是合法的Visual Basic标识符是
A.abc B.Const C.9abc D.a#x
2.表达式2^4\3的值是
A.5 B.6 C.7 D.8
3.如果x=-25,运行x=Abs(x);x=Sqr(x)后,x的值是
A.5 B.-5 C.25 D.-25
4.用语句Dim A(-3 To 3) As Integer 所定义的数组的元素个数是
A.6 B.7 C.8 D.9
5.以下语句中错误的是
A.Const var1=123 B.Dim var2 as String
C.x+y = 9 D.Dim d(1 to 500) As Double
6.将文本框Text2内输入的数据送到字符型变量n 中,则应使用的语句是 A.n = text B.n = text2.text
C.n = val(text2) D.n = val(text2.text)
7.实现变量M的值与变量N的值进行交换,可用语句
A.X=M:M=N:N=X B.M=N:N=M
C.M=N D.N=M
8.如果a、b、c、d是一四位整数中千、百、十、个位上的数字,这个四位数在VB程序中可表示为
A.abcd B.a+b+c+d
C.a*1000+b*100+c*10+d D.以上都不对
9.在VB中,执行IF 4*(6—3)>10 Then A=1 Else A=0语句后,变量A 的值为
A、0
B、1
C、10
D、不一定
10.在VB中,执行"A=18 MOD 4"语句后,A的值为
A、2
B、4
C、6
D、8
11.语句Dim s As Integer的功能是
A.定义一个整型变量s B.定义一个字符型常量s
C.定义一个整型常量s D.定义一个字符型变量s
12.下列逻辑运算结果为"True"的是
A.flase or not true
B.flase and not true
C. true or not true
D.true and not true
13.设a=2,b=3,则表达式 Not(a=b)的值是:
A. True B. False C.-1 D.1
14.下面关于算法的描述,错误的是()
A.一个算法必须保证它的执行步骤是有限的
B.算法中的每个步骤必须有确切的含义
C.有0个或多个输入
D.有O个或多个输出
15.下列逻辑表达式中能完全正确表示条件 "year是闰年"的是
A. year mod 4=0
B. year mod 400=0
C. (year mod 400=0) and (year mod 4=0) or (year mod 100<>0)
D. (year mod 400=0) or (year mod 4=0) and (year mod 100<>0)
16.下列关于For ...next 语句的说法正确的是
A.循环变量、初值、终值和步长都必须为数值型
B.step后的步长只能为正数
C.初值必须小于终值
D.初值必须大于终值
17.下列各赋值语句,语法不正确的是
A. x+y=5 B. x=y<>5
C. Labell.caption =time D. x=x+y
18.下面是各种不同类型的常量,请把它归类:
12 “asd”3.12 1099 True False -78 “计算机” -1.12
整数常量:
实数常量:
字符串常量:
逻辑常量:
19.下面变量命名正确的有:
12.34 asd 2C Dim True i_tt WO%12
正确的有:
20.请做以下变量说明:
1、定义x,y为整数类型的变量:
2、定义常量Pi的值为3.14:
3、定义year为日期型的变量:
4、定义m为双精度实数型的变量:
21.写出下列函数的返回值:
1、Sqr(49) 的返回值为:
2、Abs(-3.5) 的返回值为:
3、Int(-4.1) 的返回值为:
4、cint(3.15) 的返回值为:
5、Len(“windows”) 的返回值为:
6、Mid(“windowssecond”,6,4) 的返回值为:22.计算下列表达式的值:
1、6+(6-4)=()
2、3^2 + 3\2=()
3、-3 + 8 mod 2=()
4、5 * 2^2 =()
5、3\5/2=()
6、5>8()
7、7<=10()
8、10=5 mod 3()
9、“a” <>“b”()
10、100<>10^2()
三.语句(顺序、分支、循环)
1.利用计算机程序解决累加问题时,计算"101+102+……+300"的值,往往采用
A.循环语句 B.累加语句 C.条件语句 D.顺序语句
2.在VB程序中,对于语句:
Text1.Text="admin2006@https://www.360docs.net/doc/9d3514918.html," ‘电子信箱
“‘”后面的部分为
A、注释,不是可执行代码
B、注释,是可执行代码
C、程序代码的一部分
D、程序代码的另一种写法
3.以下程序段执行后整型变量n 的值为
n=0
for i=1 to 20 step 5
n=n+i
next i
A. 50
B. 34
C. 15
D. 210
4.以下条件语句错误的是()。
A If X Then Y = Y + 1
B If X = 0 Then Y = 0
C If X > 0 Then Y = 1: Print Y
D If X > Y Then Print Y End If
5.下列Visual Basic程序段运行后,变量max的值为 a=5:b=10:max=a IF b>max Then max=b
A.5 B.10 C.5和10 D. 以上都不是
6.下列Visual Basic程序段运行后,变量x的值为 x=3:y=77
Do While x x=x+2 Loop A.7 B.8 C.9 D.10 7.有如下Visual Basic程序: Private Sub Commandl_Click() S=O If s<=99 Then For I=1 To 10 S=s+j Next j Else Print “程序出错” End If Print “最后s的值为:”;s End Sub C.顺序、条件和循环结构 D.循环结构8.有如下Visual Basic程序段: A=lO: B=20: A=A+B: B=A—B 该程序段运行后,变量A和B的值是 A.10和20 B.30和20 C.30和10 D.30和-10 9.有如下Visual Basic程序段: a=12 If a<4 Then a=a-2 Else Print a End if 该程序段运行后,变量a的值是 A.8 B.10 C.12 D.14 10.下列程序段是计算哪个公式的 s=0:t=1 for i=1 to 10 t=t*i s=s+t next i A.s=l+2+3+...+10 B.1!+2!+3! (10) C.s=1*2*3*…*10 D.s =1+2*3+3*4+4*5+……+9*10 11.Private Sub Commandl_Click() Dim i As Integer,j As Integer,x As Integer X=4 For i=1 to 4 For j=1 to 3 x=x+6 Next j Next i Print x End Sub 以上程序段,程序的循环次数是 A.4 B.12 C.3 D.6 12.有如下Visual Bastc程序段: Dim num As Integer num=3 Do While num<8 Num=num+2 Print num Loop 13.下列是一个Visual Basic程序: Sub Commandl_Click() X=4 For i=1 To 10 step 3 If x X=x+i End If Next i Print x End Sub 该程序运行结果是 A.7 B.11 C.21 D.55 14.有如下Visual Basic程序: s=O Forj=1 To 30 If Int(j/5)=j/5 Then s=s+j j=j+6 End If Next j Print s 该程序段运行后,输出的值是 A.30 B.45 C.180 D.465 15.下面程序执行的结果是 Private Sub Form_Click() A = "123": B = "456" C = Val(A) + Val(B) Print C \ 100 End Sub A.123 B.3 C.5 D.579 16.有如下程序段 x = 1 y = 4 Do While y>4 x = x * y y = y +1 Loop 该程序段运行后,x的值为 A. 1 B. 4 C. 8 D. 20 17、下面的程序是计算机s=1*2+3*4+5*6+7*8+9*10,下划线中应填上 S=0 For k=1 to 10 step ___ Msgbox(s) End sub A.0 B.1 C.2 D.k 18.窗体上有一个命令按钮Command1,编如下事件过程: Private Sub Command1_Click() Dim a As String : Dim c As String a = "software and hardware" c = Mid(a, 1, 8) Text1.text = c End Sub 则在文本框Text1中显示的信息是 A、software and hadrware B、software C、hadrware D、1 19、有如下程序段 a=4 b=5 a=a^2+b b=b^2+a a=a+b 该程序运行后,a的值是__________ 20、有如下程序段 x=5 If x>10 Then y=2*x Else y=x*x+1 End if Msgbox(y) 该程序运行后,y的值是__________ 21、有如下程序段 a=1:b=2 For i=1 to 3 b=b+a a=a+b Next i Print b 该程序运行后,b的值是__________ 22、有如下程序段 x=4 For i=1 to 10 step 3 if x x=x+i Print x 该程序运行后,x的值是__________ 23、下列程序的功能是从键盘上任意输入一个数,判断这个数是正数、负数、还是零,并输出判断结果。程序中有三处错误,请更正。 Private Sub Command1_Click() Dim a As Double:Dim py As String a = Val(Text1) If a > 0 Then py = "正数" If a = 0 Then py = "零" If a <= O Then py = "负数" Text2.Caption = a End Sub (1) (2) (3) 24、完善下列程序,使能输出:1-2+3-4+5-6+……+99-100的值。 Private Sub Commandl_Click() S= For I=1 to S=s+((-1)^( ))*I Next I Print s End Sub 25、在窗体(Name属性为Forml)上画两个文本框(其Name属性分别为Textl 和Text2)和一个命令按钮(Name属性为Commandl),然后编写如下两个事件过程: Private Sub Forml_Load() Textl.Text=“” Text2.Text=“” End sub Private Sub Commandl_Click() a=Textl.Text+Text2.Text Print a End Sub 程序运行后,在第一个文本框(Textl)和第二个文本框(Text2)中分别输入123和321,然后单击命令按钮,则输出结果为。 26、已知一元二次方程的二次项系数、常数项分别为a、b、c,其中a不等于0,求方程的根。要求:如果方程无实数根,则输出“无实数根”,否则输出两个实数根。 Private Sub Commandl_C1ick() Dim a,b,c,d As Single Dim xl,x2 As single A=Val(Textl.Text) B=Val(Text2.Text) If __________ Then x1=(-b+Sqr(d))/(2*a) x2=(-b-Sqr(d))/(2*a) Labell.Caption=xl Label2.Caption=x2 ________ Label3.Caption= _____________ End If End Sub 27、在窗体上画一个命令按钮(Name属性为Command1),然后编写如下事件过程: Private Sub Command1_Click() x=O Do while x<>-1 a=Val(InputBox(“请输人a的值:”)) b=Val(InputBox(“请输入b的值:”)) x=Val(InputBox(“请输入x的值:”)) a=a+b+x Loop Print a End Sub 程序运行后,单击命令按钮,依次在输入对话框中输入5、4、3、2、1、-1,则输出结果为。 四.算法的程序实现 1、下面是一段已知圆周长,求圆面积的程序,补充完整 Private sub command1_click() Dim L As Double, s As Double L=val(text1.text) If L>0 then ______________ Else Print "未正确输入周长" End If Print str(s) End Sub 2、将一张面值为100元的人民币等值换成100张5元、1元和0.5元的零钞,要求每种零钞不少于1张,问有哪几种组合?**** Dim i, j, k As Integer ' i, j, k用于记录5元,1元,0.5元的张数 Print "5元 1元 0.5元" For i = 1 To 20 If ___________ Then Print i, j, k '分别输出i,j,k三个变量。 End If Next j Next i 3、下面程序是计算1~50中,能被3整除的所有整数之积,请在____________内填入适当的内容。 Private Sub Form_load() Dim x As Integer, s As Double s = _____ For x = 1 To 50 If x Mod 3 = 0 Then _______ Next x Print "s=" & s End Sub 4、有一古算术问题:“有100块瓦,用100匹马来驮。大马1驮3,中马1驮2,小马2驮1。问要大马、中马、小马各几匹(不能没有)?”** Private Sub Command1_Click() Dim x As Integer, y As Integer,z As Integer For x = 1 To 33 For y = 1 To 50 z = 100 - x - y If_____________________________ Then Print x,y,z End If Next y Next x End Sub 5、下面是一个用VB语言编写的将华氏温度(其值存放在名为text1的文本框内)转换为摄氏温度(其值存放在变量C中)的程序,请完善程序。已知华氏温度F转换为摄氏温度C的计算公式是:C=(F-32)*5/9 Private Sub Command1_Click() F=Val(text1.text) C= _________________ Print C End Sub 6、小明数了圈在一起的鸡和兔共有30个头,90只脚,在这个圈子中鸡和兔各有多少只?为了实现这一目标,完善下面的VB程序,在划线处填入合适的语句或表达式。设鸡为x只,兔为y只,Visual Basic 程序如下:Private Sub Command1_Click() Const head = 30, foot = 90 Dim x, y As Integer Text1.Text = Str(x) Text2.Text = Str(y) End Sub 7、利用文本框输入一个正整数N,求S=2+3/2+4/3+5/4+…+(N+1)/N Private Sub command1_click() Dim n, s, i As Integer s = 0 n = Val(Text1.Text) For i = _____ To _________ s = ________________ Next i Print s End Sub 8、下面程序若用于计算s=1!+2!+3!+4!+5! +6!+7!+8!+9!+10!,完善下面的程序。** s = 0: t = 1 For i = 1 To 10 ___________________ s = s + t Next I 9、有一个单击按钮过程,其作用是产生50个60~100的随机数,统计其中被6整除余2的个数,并将这些数输出。请补充下面的程序: Private Sub command1_click() Dim X, N As Integer Dim counter As Integer 'counter统计个数 Randomize For N = 1 To 50 X = ___________+ int(Rnd * 41) '随机产生50个60~100的随机数 If X Mod 6 = 2 Then List1.AddItem Str(X) _________________________ End If Next N Print counter End Sub 10、个位数字是6,且能被3整除的3位数共有多少个? 下面程序用于解决这一问题,设共有n个这样的数。** Sub Command1_Click() Dim i As Integer, n As Integer m = 106 n = __________ m = __________ Loop Text1.Text = Str(n) End Sub 11、以下程序的功能是:从键盘上输入若干个学生的考试分数,统计并输出最高分数和最低分数,当输入负数时结束输入,输出结果,请将程序补充完整。 Private Sub Form_Click() Dim x, amax, amin As Single x = InputBox("Enter a score") amax = x amin = x Do While _____________ If x > amax Then amax = x If ________ Then amin = x x = InputBox("Enter a score") Loop Text1.Text= amax Text2.Text=___________ End Sub 12、火车托运行李,要根据行李的重量按下列标准收费: 若不超过50千克,按每千克0.35元收费,若超过50千克,超过部分则按每千克0.5元收费。输入托运行李的重量,计算并输出托运行李的费用。下面程序若用于实现上述目标,则划线处的语句应更改为______________________ Sub command1_click() Dim x As Double x=val(Text1.Text) If x < 50 Then Text2.Text=Str(0.35*x) Else Text2.Text=Str(0.5*x) End If End Sub 13、“百钱买百鸡”问题。中国古代数学家张丘建在《张丘建算经》中提出一个问题。“鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一。百钱买百鸡。问鸡翁、母、雏各几何?”。**** 题目的意思是说公鸡五钱一只,母鸡三钱一只,小鸡一钱三只,花一百钱恰好买一百只鸡,问公鸡、母鸡、小鸡各多少只?参考程序代码如下:Private Sub Command1_Click() Dim sum As Integer Dim a, b, c As Integer c = 100 - a – b If ________________________ Then List1.AddItem (Str(a) + Str(b) + Str(c)) __________________ End If Next b Next a Label1.Caption = "组数:" + Str(sum) End Sub 14、寻找“水仙花数”。水仙花数是满足下面条件的一组三位的正整数,它们满足条件:每一位上数字的立方之和恰好等于它自己。例如:153就是一个水仙花数,1^3+5^3+3^3=153,请找出所有的水仙花数及个数。*** 方法一: Private Sub Command1_Click() Dim sum As Integer Dim i, a, b, c As Integer Sum=0 For i = 100 To 999 a = i \ 100 b = i \ 10 Mod 10 c = i Mo d 10 If a ^ 3 + b ^ 3 + c ^ 3 = i Then Print i sum = sum + 1 End If Next i Label1.Caption = "个数:" + Str(sum) End Sub 方法二: Private Sub Command1_Click() Dim sum,m As Integer Dim i, j, k As Integer Sum=0 For i = 1 To 9 For j = 0 To 9 For k = 0 To 9 m=100 * i + 10 * j + k If m = i ^ 3 + j ^ 3 + k ^ 3 Then Print m sum = sum + 1 End If Next k Print "个数:" + Str(sum) End Sub 15、排序、查找综合练习***** Const n=50 Dim d(1 to n) as integer ‘自动生成50个【100-200】之间的整数 Private Sub Command1_Click() Dim i As Integer List1.Clear:List2.Clear Randomize For i = 1 To n d(i) = _____________________ List1.AddItem Str(i) + Space(6) + Str(d(i)) Next i End Sub '冒泡排序(递增) Private Sub Command2_Click() Dim i As Integer, j As Integer, temp As Integer For i = 1 To n - 1 For j = n To ________ Step -1 If d(j) < d(j - 1) Then temp = d(j) ______________ ______________ End If Next j Next i For i = 1 To n List2.AddItem Str(i) + Space(6) + Str(d(i)) Next i End Sub '选择排序(递减) Private Sub Command3_Click() Dim i As Integer, j As Integer Dim temp As Integer, max As Integer List2.Clear For i = 1 To n - 1 Max=_________ For j=_________ to n If d(j) > d(max) Then _________ End If temp = d(max) d(max) =d(i) dy(i) = temp End If Next i For i = 1 To n List2.AddItem Str(i) + Space(6) + Str(d(i)) Next i End Sub '顺序查找 Private Sub Command4_Click() Dim i As Integer, key As Integer key = Text1.Text For i=______________ If ______________ Then Text2.Text = "数据" & Key & "在第" & i & "位置。" Exit For End If Next i If i>n Then Text2.Text = "数据" & key & "不存在!" End If End Sub '对分查找 Private Sub Command5_Click() Dim i As Integer, j As Integer Dim m As Integer, c As Integer Key = Text1.Text i = 1 j = n Do While __________ __________ '确定中间位置 If __________Then Text2.Text = "数据" & Key & "在第" & m & "位置。" Exit Sub End If If Key > d(m) Then __________ Else ___________ End If Loop