2012年上海市高等学校计算机等级考试试卷二级VB.NET程序设计(A卷)(本试卷考试时间120分钟)一、单选题(本大题10道小题,每小题1.5分,共15分),从下面题目给出的A、B、C、D四个可供选择的答案中选择一个正确答案。1.当运行程序时,系统自动执行启动窗体的__________事件过程。答案:AA.LoadB.ClickC.UnLoadD.GotFocus2.已知列表框(ListBox1)中有10个数据项,对列表框操作正确的语句是___________。答案:BA.ListBox1.Clear()B.ListBox1.Items.RemoveAt(4)C.ListBox1.Items.RemoveAt(计算机)D.ListBox1.Items.Add(1,打印机)3.若要使标签控件显示时不覆盖窗体的背景图案,要对___________属性进行设置。答案:AA.BackColorB.BorderStyleC.BackD.ForeColor4.下列函数中,_________函数返回值是数值型的。答案:DA.ChrB.MidC.ReplaceD.Val5.下面的过程定义语句中_________是不合法的。答案:AA.SubSub1(ByValn%)AsIntegerB.SubSub1(ByValsub1%)C.FunctionSub1(ByValn%)AsIntegerD.FunctionSub1%(ByValn%)6.定义结构类型并声明变量如下:StructureStudentDimNoAsIntegerDimNameAsStringEndStructureDimsAsStudent下列语句正确的是__________。答案:DA.s={100001,张三}B.Name=张三C.Student.Name=张三D.s.Name=张三7.VB程序设计中,响应对象的外部动作称为______,而对象可以执行的动作或对象本身的行为则称为______。答案:BA.方法,事件B.事件,方法C.属性,方法D.过程,事件8.在过程A中定义了静态变量y。当调用过程A第一条语句开始,在退出过程A前,y的值为5。当下次再进入过程A时,y的值为_____。答案:AA.5B.0C.不定值D.出错9.用户单击水平滚动条HScrollBar1两端的箭头(“”或“”)按钮,Value属性增加或减少的值为2,可通过语句:HScrollBar1._________=2来实现。答案:CA.LargeChangeB.MaximumC.SmallChangeD.Minimum10.要打开FontDialog1对话框选取字体属性来改变TextBox1的字体,下面_________语句组是正确的。答案:DA.FontDialog1.Show()TextBox1.FontName=FontDialog1.FontB.FontDialog1.ShowDialog()TextBox1.FontName=FontDialog1.FontC.FontDialog1.Show()TextBox1.Font=FontDialog1.FontD.FontDialog1.ShowDialog()TextBox1.Font=FontDialog1.Font二、程序填空题(本大题2道小题,每空2.5分,共22.5分)。1.产生10个不重复的2位随机整数。算法思想是先产生一个随机数tmp,然后在已经存放着不重复随机数的数组a中,查找tmp是否已经存在。如果已经存在,则丢弃,再重新产生;反之,就将tmp存放入数组a中。【程序】SubForm1_Click(…)HandlesMyBase.ClickDimtmpAsInteger,iAsInteger,jAsIntegerDima(10)AsIntegerDimisExistAsBoolean'重复随机数标志Randomize()Label1.Text=不重复的2位随机整数:i=0DoWhile(i(1))isExist=Falsetmp=Int(Rnd()*(2))Forj=1Toi'找重复的随机数Ifa(j)=tmpThenisExist=(3)ExitForEndIfNextjIfNotisExistThen'找到了一个不重复的随机数i=i+1a(i)=(4)Label1.Text=Label1.Text+Str(tmp)+'字符处理EndIfLoopEndSub1):【10】【=9】2):【90+10】3):【True】4):【tmp】2.求1000~9999之间的零巧数。零巧数:一个百位数字为0的四位数,如果去掉这个零得到三位数的9倍等于原数。例如2025的百位数是0,去掉这个0,得到225。因为225*9=2025,所以2025是零巧数。函数Shu功能是判断是否是零巧数。其返回值:如果是零巧数,则返回三位零巧数;否则返回-1。列表框1显示零巧数,列表框2显示对应的三位数。【程序】SubButton1_Click(…)HandlesButton1.ClickDimi%,n%Fori=1000To9999n=(1)Ifn0Then'若是零巧数,则添加ListBox1.Items.Add(i)(2)EndIfNextiEndSubFunctionShu(ByValn%)AsIntegerDimk%,m%Shu=-1k=Mid(n,2,1)'获取百位数If(3)Thenm=Mid(n,1,1)&(4)Ifm*9=nThenShu=(5)EndIfEndFunction1):【Shu(i)】2):【ListBox2.Items.Add(n)】3):【k=0】4):【Mid(n,3,2)】5):【m】三、操作题三、程序调试题(共30分,每改正一错得3分,第1题有3处错,第2题有3处错,第3题有4处错)启动解决方案文件C:\ks\改错A.sln,请调试改正,并按原文件名和位置保存。正确结果见样例c:\样张\改错样例A.exe。改错方法:不能修改或重新定义变量,不允许增加或删除语句,但可以修改语句,所修改的语句必须在句尾加上注释标记'***********。调试改错题1,程序中有3个错误。程序的功能是单击调试改错题1按钮,随机产生一个1900-2200之间的年份,在文本框显示;在标签2显示是否是闰年。判断闰年:若该年份能够被4整除但不能被100整除,或者能够被400整除,则该年份是闰年。程序中有2个错误,请调试改正。PrivateSubButton1_Click(…)HandlesButton1.ClickDimyear%Dimt1,t2,t3AsBooleanyear=Int(Rnd()*301+1900)'此句无错year=TextBox1.Textt1=yearMod4=1t2=yearMod1000t3=yearMod400=0If(t1Andt2)Andt3ThenLabel2.Text=year&年是闰年ElseLabel2.Text=year&年不是闰年EndIfEndSub调试改错题2,程序中有3个错误。单击调试改错题2按钮,启动定时器,显示打字机效果的文字和光标效果(_);当文字显示完整,关闭定时器,光标不显示,见样例。程序中有3个错误,请调试改正。PrivateSubButton2_Click(…)HandlesButton2.ClickTimer1.Enabled=FalseEndSubPrivateSubTimer1_Tick(…)HandlesTimer1.TickStaticp%'p为记录字符位置的变量Dims$=欢迎参加年计算机等级考试Label3.Text=Mid(s,p)&_'逐一显示p个字符Ifp=Len(s)ThenTimer1.Enabled=TrueLabel3.Text=sElsep=p+1EndIfEndSub调试改错题3,程序中有4个错误。计算多项式e=1+1/1!+1/2!+1/3!+…+1/6!的值。PrivateSubButton3_Click(…)HandlesButton3.ClickDimiAsIntegerDimfAsIntegerDimeeAsDoubleee=1f=0Fori=1To6f=f*iee=ee+fNextLabel4.Text=e=+eeEndSub四、编程题(35分)参照样例,编写一个完整的程序,要求如下:1.在C:\KS目录下新建项目文件VBNET1.sln。2.在Form1窗体上放置文本框1、列表框、标签和命令按钮,并建立菜单,界面如样例所示。在Form2窗体上放置“返回”两个命令按钮。3.在Form1窗体上单击“确定”按钮,模拟出租车计价器计算车费,将本单交易添加到列表框,清除文本框中数据,并将每次车程的里程数和交易金额按下图格式,以追加方式记录在C:\ks\A.TXT中。计算公式:起步费:13元(3公里),3到10公里:2.4元/公里,10公里以后:3.6元/公里。4.单击“求平均值”菜单项,在标签中显示各次车费的平均值;单击窗体2菜单项时,打开Form2窗体;单击退出菜单项时,结束程序的运行。5.在Form2窗体上单击返回命令按钮则关闭Form2窗体。单击“绘图”命令按钮,设置窗体为画布,坐标原点(x0,y0)为(w/2,h/2)(w为窗体宽度,h为窗体高度),绘制坐标轴;按公式:x=x0+t*50绘制曲线。其中,-2≤t≤2,步长0.01,50和h/4为x、y的放大倍数