VB课后习题答案.docx 19页

  • 40.15 KB
  • 2022-04-22 11:47:52 发布

VB课后习题答案.docx

  • 19页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'第一章1第二章2第3章3第4章4第5章8第六章11第7章14第8章17第九章18第十章19第一章1、 简述VB6.0的主要特点答:方便、直观的可视化设计工具;面向对象程序设计方法;事件驱动的编程机制;易学易用的应用程序集成开发环境;结构化程序设计语言;完备的联机帮助功能;强大的多媒体、数据库和网络功能。2、 当正常安装VB6.0后,误把Windows子目录删除。当重新安装Windows后,是否需要再次安装VB6.0?答:要重新安装的。因为安装VB6.0时,有些VB程序被系统自动安装在Windows目录下,所以一旦删除Windows子目录,就必须重新安装VB6.0。3、 VisualBasic6.0分为学习版、专业版和企业版,如何知道所安装的是哪个版本?答:在VB6.0的启动界面上,能显示对应的版本。4、 叙述建立一个完整应用程序的过程答:首先建立用户界面的控件对象(简称控件);然后对控件属性进行设置;再对控件事件过程及编程;保存应用程序;程序调试和运行。5、 VisualBasic6.0有多种类型窗口,若要在设计时看到代码窗口,应怎样操作?答:选择“视图”—>“代码窗口”命令或单击“工程资源管理器”窗口中的“查看代码”按钮。6、 当建立好一个简单的应用程序后,假定该工程仅有一个窗体模块。试问该工程涉及多少个要保存的文件?若要保存该工程的所有文件,应先保存什么文件?再保存什么文件?若不这样做,系统会出现什么信息?答:涉及两个文件要保存。先保存窗体文件(.frm),再保存工程文件(.vbp)。若先保存工程文件,系统也会先弹出“文件另存为”对话框,要求先保存窗体文件。7、 保存文件时,若不改变目录名,则系统默认的目录是什么?答:系统默认的目录是VB988、 安装VisualBasic6.0后,帮助系统是否也已安装?答:没有。VB6.0的帮助系统在两张光盘上,即MSDNLibrary,其中还包含了VC、VFP等其他语言的帮助系统。9、 如何使用VisualBasic6.0的帮助系统?答:最方便的方法是选定要帮助的内容,然后按F1功能键,这时系统打开MSDNLibrary查阅器,直接显示与选定内容有关的帮助信息。第二章10、   什么是类?什么是对象?什么是事件过程? 答:类是同类对象集合的抽象,它规定了这些对象的公共属性和方法;对象是类的一个实例,对象包含三个要素:属性、方法和事件。当在对象上发生了事件后,应用程序就要处理这个事件,而处理的步骤就是事件过程。11、   属性和方法的区别是什么?答:属性是对象的特征,方法是对象的行为。前者有值,可以被赋值或引用;后者没有值,表示能够执行的操作。12、   当标签边框的大小由Caption属性的值进行扩展或缩小时,应对该控件的什么属性进行何种设置?答:将该控件的Autosize属性值设置为true。13、   在VB6.0中,命令按钮的显示形式可以有标准的和图形的两种选择,它们通过什么属性来设置?若选择图形的,则通过什么属性来装入图形?若已在规定的属性里装入了某个图形文件,但该命令按钮还是不能显示该图形,而显示的是Caption属性设置的文字,应怎样修改?答:命令按钮的显示形式通过将Style属性值设置为Graphical来实现。 通过Picture属性来装入图形。 不能显示图形是因为Style属性值被设置为Standard,只要将其改为Graphical,并且将Caption的值设置为空即可。14、   如果文本框要显示多行文字,应对什么属性设置为何值?答:将MultiLine属性的值设置为True。15、   标签和文本框的区别是什么?答:在程序运行时,标签只能显示文字,不能输入文字,显示文字通过对Caption属性赋值来实现;而文本框既能显示文字,也能输入文字,这通过text属性来实现。16、   要让文本框获得焦点的方法是什么?答:SetFocus方法。17、   简述文本框的Change和KeyPress事件的区别答:相同点是当在文本框输入内容时,同时激发上述两个事件;不同点是Keypress事件可通过参数KeyAscii返回所按键的编码值,可依此判断数据输入的正确性或数据输入结束与否,因而该事件使用较多;change事件还可以发生在程序改变文本框的text属性时。18、   当某文本框输入数据后(按了回车键),经判断后认为是数据输入错,应怎样删除原来文本框中的数据?答:假定文本框的名称为Text1,则事件过程如下:PrivateSubText1_KeyPress(KeyAsciiAsInteger)  ifKeyAscii=13then     if出错条件判断成立 then           Text1=””     endif …… endifendsub   注意:删除刚输入的字符,通过KeyAscii=0语句实现;焦点定位文本框对象采用SetFocus方法。19、   在程序运行前,对某些控件设置属性值,除了在窗体中直接设置外,还可以通过代码设置,这些代码一般存放在什么事件中?如果要将命令按钮定位在窗体的中央,试写出事件过程代码。答:这些代码一般放在Forem_Load ()事件过程中。将窗体定位在屏幕的中央,只能在属性窗口中将Form1窗口的StartUpPosition属性值设置为2(表示屏幕中心),该属性不能在运行时设置。要将按钮定位在窗体的中央,事件过程如下:PrivatesubForm_Load()  Command1.left=Form1.scaleWidth2-command1.Width2  Command1.Top=Form1.ScaleHeight2–command1.Height2EndSub其中,ScaleWidth、ScaleHeight表示窗体的相对宽度和高度。20、   VB6.0提供的大量图形文件存放在哪个目录?若你的计算机上没有安装,应怎样安装这些图形文件?答:存放在Graphics目录下。在VB6.0的安装盘上可以找到Graphics子目录,将其复制到硬盘上的VB目录下。 第3章1、合法的有:(1)单精度(3)单精度(4)双精度(6)整形(7)字符型(9)日期型(10)双精度(12)八进制表示(14)十六进制表示(15)逻辑型(18)单精度数2、合法变量有:(1),(2),(6),(9),(10),(11)3、算术表达式写成VB表达式(1)abs(x+y)+z^5(2)(1+x*y)^6(3)(10*x+sqr(3*y))/(x*y)(4)(-b+sqr(b^2-4*a*c))/2/a(5)1/(1/r1+1/r2+1/r3)(6)sin(45*3.14/180)+(exp(10)+log(10))/sqr(x+y+1)4、根据条件写出相应的VB表达式(1)chr(int(Rnd*10+67)(2)int(Rnd*101+100)(3)x*y>0(4)x/5=0orx/7=0(5)(xmod10)10+x/10(6)Round(123.2389*100)/100(7)Ucase(c)>=‖A‖andUcase(c)<=‖Z‖orLcase(c)>=‖a‖andLcase(c)<=‖z‖(8)Mid(s,5,6)(9)x>=10andx<20(10)(xz)or(x>zandyzandy>z5、下出下列表达式的值:(1)123+23mod107+Asc(―A‖)à【188】(2)100+‖100‖&100【200100】(3)Int(68.555*100+0.5)/100à【68.56】(4)已知A$=“87654321‖,求表达式Val(Left$(A$,4)+Mid(A,4,2))的值【876554】(5)DateAdd(―m‖,1,#1/30/2000#)à【2000-2-29】(6)Len(‖VB程序设计‖)【6】à 第4章1、 结构化程序设计的三种基本结构是什么?答:顺序结构、选择结构和循环结构。2、 指出下列赋值语句中的错误(包括运行时错误):(1)10x=sin(x)+y   ‘10x是非法变量名(2)c=3+sqr(-3)         ‘待求平方根的数为负数(3)c+x+y=c*y          ‘赋值符左边是表达式了(4)x=sin(x)/(20mod2) ‘分母为零了3、 Msgbox函数与InputBox函数之间有什么区别?各自获得什么值?答:两个函数共同之处都显示对话框。区别:Inputbox函数等待用户在文本框中输入数据,获得的是输入的字符串数据;Msgbox函数等待用户按一按钮,获得的是表示按钮的整数值,以决定程序的流向。4、 要使单精度变量x,y,z分别保留1位、2位、3位小数,并在窗体显示,应使用什么函数?如何编写对应的print方法?答:使用format函数,具体如下:printFormat(x,”0.0”)print Format(y,“0.00“)print Format(z,“0.000“)5、 语句 if<表达式>then ……中的表达式可以是算术、字符、关系、逻辑表达式中的哪些?答:算术、关系、逻辑表达式6、 指出下列语句中的错误:(1)ifx≥ythenprintx           ‘表达式书写错误,应写成:x>=y(2)if1020     y=x*x+3*x+2   caseis>=10       y=sqr(3*x)–2   caseis>0       y=1/x+Abs(x)   endselect   printy  endsub按照下列条件,写出相应的条件语句(1)字符型变量中第三个字符是“C”时,利用Msgbox显示“yes”,否则显示“No”    ifMid(c,3,1)=“C”thenMsgbox“yes” elseMsgbox “No”(2)利用if语句、selectcase语句两种方法计算分段函数: 答:privatesubcommand1.click()   x=val(text1)  ifx>20then     y=x*x+3*x+2   elseif x>=10then       y=sqr(3*x)–2    elseifx>0then      y=1/x+Abs(x)   endif    printy  endsub(3)利用if语句和iif 函数两种方法求三个数x,y,z中的最大值并存入变量max中。     ifx>ythenmax=xelsemax=y     ifz>maxthenmax=z      max=iif(x>y,x,y) : max=iif(max>z,max,z)8、 在多分支结构的实现中,可以用 if……then……elseif……endif形式的语句,也可以用selectcase…endSelect形式的语句,由于后者的条件书写更灵活、简洁,是否完全可以取代前者?答:虽然SelectCase……endSelect形式的语句中条件书写更灵活、简洁,程序可读性强,但使用它有限制。(适合于对一个变量判断的)首先,看该语句的形式: SelectCase<变量或表达式>   case <表达式列表1 >         <语句块1>     case <表达式列表2>         <语句块2>     …   [Caseelse         <语句块n+1>  EndSelect其中《变量或表达式》只能含有一个变量,任何含有多个变量的形式都是错误的。如,要判断x,y是否在第一、三象限内,若输入如下语句:selectcasex,y,VB程序会显示“缺少:语句结束”。其次,在后面的case表达式列表中不能出现Selectcase变量或表达式中使用的变量,也不能出现主教材上列出的四种形式以外的符号或关键字(符号是:逗号;关键字是:is,to)。9、 计算下列循环语句的次数(1)ForI=-3to20step4                           6(2)ForI=-3.5to5.5step0.5                    19(3)ForI=-3.5to5.5step-0.5                          无循环,因为步长<0,循环初值小于终值(4)ForI=-3to20step0                无限循环,因为步长=010、   下列30-90为语句标号,分别标记该语句,第40名共执行了几次,第50名共执行了几次,执行第90号语句后显示的结果是多少?30    For j=1to12Step3                         循环4次40        Fork=6to2step-2                          循环3次,被执行4次 50            mk=k                                 共执行4*3=12次60            printj,k70         nextk80     nextj90     printj,k,mk                             13 0 211、   如果事先不知道循环次数,如何用for…Next结构来实现?答:将循环终值设置得足够大,再在循环体内设置条件语句,满足条件退出循环。12、   利用循环结构,实现如下功能:(1)    s=0:forI=1to10          s=s+(i+1)*(2*i+1)   nexti(2)分别统计1~100中,满足3的倍数、7的倍数的数各是多少?       s3=0:s7=0        forI=1to100           ifImod3=0 then s3=s3+1           if Imod 7=0 then s7=s7+1       nexti(3)将输入的字符串以反序显示。例如,输入“ASDFGHJKL”,显示“LKJHGFDSA”。      s=InputBox(“请输入字符串”)      for I=Len(s) to 1step-1          print Mid(s,I,1)       nexti13、   10100将20转换成2进制数表示下面程序的运行结果是什么?该程序的功能是什么?PrivateSubCommand1_Click()Dimx$,n%n=20DoWhilen<>0  a=nMod2  n=n2  x=Chr(48+a)&x  Loop  PrintxEndSub14、   22,484利用相差法求x,y的最大公约数和最小公倍数 下面程序的运行结果是什么?该程序的功能是什么?PrivateSubCommand2_Click() Dimx%,y%,z% x=242:y=44 z=x*y DoUntilx=y     Ifx>yThenx=x-yElsey=y–x Loop Printx,z/xEndSub15、   利用随机函数产生50~100范围内的20个随机数,显示其中最大值,最小值和平均值。     PrivateSubCommand3_Click()   Dimi%,min%,max%,avg!,x%   min=100:max=50:avg=0   Fori=1To20       x=Int(Rnd*51+50)       Printx;        Ifx>maxThenmax=x       IfxmaxThen            max=c(i,j):maxi=i:maxj=j         EndIf       Nextj    Nexti(4)以下三角形式显示A矩阵,上三角形式显示B矩阵   Fori=1To4      Forj=1Toi          Printa(i,j);Space(2);      Nextj      Print   Nexti   Print"输出B上三角元素"   Fori=1To4      PrintTab(i*5);      Forj=iTo4          Printb(i,j);      Nextj      Print   Nexti(5)将A矩阵第一行与第三行对应元素交换位置    Forj=1To4       t=a(1,j):a(1,j)=a(3,j):a(3,j)=t    Nextj(6)求A矩阵矩阵条对角线元素之和   Sum=0   Fori=1To4      Sum=Sum+a(i,i)+a(i,5-i)   Nexti(7)将A矩阵按列的次序把各元素放入一维数组D中,显示结果DimD%(16)Fori=1To4   Forj=1To4     D(k)=a(j,i):k=k+1     NextjNextiPrint"D一维数组无素为:"Fork=0To15     PrintD(k); Nextk6、 声明一个一维字符类型数组,有20个元素,每个元素最多放10个字符,要求:1)由随机数形成小写字母构成的数组,每个元素的字符个数由随机数产生,范围1~102)要求将生成的数组分4行显示,规定每个元素宽度为103)显示生成的字符数组中字符最多的元素 Dimst(1To20)AsString,cAsString*1 Dimi%,n%  Fori=1To20       n=Int(Rnd*11+1)       Forj=1Ton           c=Chr(Int(Rnd*26+97))           st(i)=st(i)&c       Nextj   Nexti       "(2)按一行显示5个字符串要求输出   Fori=1To20        Printst(i);Space(15-Len(st(i)));         IfiMod5=0ThenPrint   Nexti "(3)显示20个中字符个数最多的一个  maxlen=0  maxstr=""  Fori=1To20      IfLen(st(i))>maxlenThen          maxlen=Len(st(i))          maxstr=st(i)      EndIf  Nexti  Print  Print"最多字符个数:";maxlen;"字符串是:";maxstr7、 简述列表框和组合框的异同处答:相同处都是可存放字符串;不同处在于:组合框是文本框和列表框的组合,可以输入内容,但要通过additem方法添加;列表框只能选择项目,不能直接输入内容。8、 列表框或组合框中选中的项目、总项目数的属性分别是什么?答:表示选中的内容,属性有:text;总项目数的属性为ListCounts。9、 简述自定义类型与自定义变量的区别答:前者仅定义了类型,这如同系统提供的integer、string 等基本类型;后者系统为其分配了存储单元。10、   自定义一个职工类型,包含职工号、姓名、工资。声明一个职工类型的动态数组。输入n信职工的数据;要求按工资递减的顺序排序,并显示排序的结果,每个职工一行显示三项信息。PrivateTypezgtype  noAsInteger  nameAsString*10  gzAsSingleEndType Dims()Aszgtype,n% PrivateSubForm_click()  DimtAszgtype  n=InputBox("请输入人数")  ReDims(1Ton)  Fori=1Ton     Withs(i)       .no=InputBox("请输入职工工号")       .name=InputBox("请输入职工姓名")       .gz=InputBox("请输入职工工资")    EndWith Nexti "根据工资递减排序 Fori=1Ton-1     Forj=i+1Ton         Ifs(j).gz>s(j-1).gzThen              t=s(j):s(j)=s(j-1):s(j-1)=t         EndIf     Nextj Nexti "输出信息 Fori=1Ton     Prints(i).no,s(i).name,s(i).gz NextiEndSub  第六章1、 简述子过程和函数过程的共同点和不同之处答:子过程和函数过程的共同点:函数过程和子过程都是功能相对独立的一种子程序结构,它们有各自的过程头、变量声明和过程体。在程序中使用它们不但可避免书写重复的程序语句,缩短代码,而且可使程序条理清晰,容易阅读。两者不同点是:1)过程声明的关键字不同,子过程用的是sub,函数过程用的是function. 2)子过程名无值就无类型声明,函数过程名有值就有类型声明3)函数过程名兼作结果变量,因此在函数过程体内至少对函数过程名赋值;而子过程名在过程体内不能赋值。4)调用方式不同,子过程是一条独立的语句,可用call子过程或或省略call直接以子过程名调用;函数过程不是一条独立语句,是一个函数值,必须参与表达式的运算5)一般来说,一个函数过程可以被一个子过程代替,代替时只要改变函数过程定义的形式,并在子过程的形参表中增加一个地址传递的形参来传递结果。2、 什么是形参、什么是实参?什么时候是值引用?什么是地址引用?地址引用时,对应的实参有什么影响?答:形参是在定义过程时的一种形式虚设的参数,只代表了该过程参数的个数、类型、位置,形参的名字并不重要,也没有任何值,只表示在过程体内进行某种运算或处理。实参是调用子过程时提供给过程形参的初始值或通过过程体处理后获得的结果。调用时用实参代替形参,实参与形参在个数、类型、位置一一对应,实参与形参名相同与否无关。实参与形参的结合有两种方法,即传地址(byref)和传值(byval),或称地址引用和值引用,缺省为地址引用。值引用时,系统将实参的值传递给对应的形参,实参与形参断开了联系。如果在过程体中改变形参的值,不会影响到实参。地址引用时,实参与形参变量共同用一个存储单元,如果在过程中改变了形参的值,则对应的实参也将发生改变。地址引用时,实参只能是变量,不能是常量或表达式。3、 指出下列过程语句说明中的错误:1)subf1(n%)asInteger                    错误为sub子过程名无返回值,也就没有类型2)functionf1%(f1%)                函数名与形参名相同了3)subf1(byvaln%())                   形参n为数组,不允许声明为byval值传递4)subf1(x(i)asinteger)                形参x(i)不允许为数组元素4、 已知如下求两个平方数和的fsum子过程:publicsubfsum(sum%,byvalm%,byvaln%) sum=a*a+b*bendsub在事件过程中若有如下变量声明:privatesubcommand1_click()   Dim a%,b%,c!   a=10:b=20则指出如下过程调用语句的错误所在:(1)fsum3,4,5       ‘fsum子过程的第一个形参是地址传递,因此对应的实参应该是个变量,不应是3(2)fsumc,a,b ‘fsum子过程的第一个形参是地址传递并且是整形,但对应的C是单精度(3)fsuma+b,a,b ‘fsum子过程的第一个形参是地址传递,对应的实参不应该是个表达式a+b(4)callfsum(sqr(a),sqr(b)) fsum子过程的第一个形参是地址传递,对应的实参不应该是个表达式sqr(c)(5)callfsumc,a,b ‘用call语句调用fsum子过程,必须加圆括号括起实参。 5、 利用迭代法求议程x2-a=0的近似根,要求精度为10-5,失代公式为。编制三个过程:迭代函数过程、迭代子过程和递归法函数过程。PrivateSubCommand1_Click()  Print  Print"函数过程";f1(10)  Calls1(x!,10)  Print"子过程 ";x!  Print"递归调用";dgf(x,10)EndSub PublicFunctionf1(a!)  "函数过程  Dimx!,x1!  x=a  Do      x1=(x+a/x)/2      IfAbs(x-x1)<0.00001ThenExitDo      x=x1  Loop  f1=xEndFunction PublicSubs1(x1!,a!) "子过程   Dimx!   x=9   Do      x1=(x+a/x)/2      IfAbs(x1-x)<0.00001ThenExitDo      x=x1 LoopEndSub PublicFunctiondgf!(x,a!)"递归调用  x1=(x+a/x)/2  IfAbs(x-x1)<0.00001Then      dgf=x  Else     dgf=dgf(x1,a)  EndIfEndFunction 6、 要使变量在某事件过程中保留值,有哪几种变量声明的方法?答:声明变量为全局(public)、通用声明段或标准模块声明的模块级变量、局部过程声明的表达态变量static。7、 为了使某变量在所有的窗体中都能使用,应在何处声明该变量? 答:在标准模块声明为全局变量8、 在同一模块、不同过程中声明的相同变量名,两者是否表示同一个变量?两者间有无联系?答:表示不同的变量;两者没有关系。 第7章1、 框架的作用是什么?如何在框架中建立控件?答:对单选按钮进行分组,每一组单选按钮都是独立的,对一组单选按钮进行操作不会影响其他组单选按钮的选择;另外可对窗体上现有控件进行分组,提供视觉上的区分和总体的激活或屏蔽特性。在窗体上创建框架及其内部控件时,必须先建立框架,然后在其中建立各种控件。在框架内创建控件的方法如下:1)先单击工具箱上的工具,然后利用出现的“+”指针,在框架内行当位置拖拉出适当大小的控件,不能使用双击工具箱上工具的自动方式。2)如果要用框架对窗体中现有控件进行分组,则应先选定控件,然后剪切到剪贴板,最后粘贴到框架上。2、 如果要让定时器每30秒产生一个Timer事件,则Interval属性应设置为多少?答:定时器是以Interval属性的值作为时间间隔产生Timer事件的。Interval属性值的单位ms(0.001s),因此当Interval属性值为30000时,每30s发生一个Timer事件。3、 滚动条的Scroll和Change事件有什么区别?答:滚动条的Scroll事件是在拖动滑块时发生的事件,单击两端的箭头或空白处不会产生Scroll事件。此外,在拖动滑块过程中会产生许多Scroll事件,而不是仅仅在拖动滑块结束时产生一个Scroll事件。滚动条的Change事件是当Value属性值改变时产生的事件。单击两端的箭头或空白处,Value属性值都会改变,Change事件随之产生;拖动滑块过程不会产生Change事件,直到拖动结束时Value属性值改变了才会产生Change事件。因此,拖动滑块过程中会多次执行Scroll事件过程,拖动滑块结束时产生一个Change事件;单击两端的箭头或空白处,会执行Change事件过程,而不会执行Scroll事件过程。4、 默认情况下,进度条是水平形式的,若要让进度条变成垂直形式,应如何设置?答:进度条有水平和垂直两种形式,由属性Orientation决定:0—ccOrentationHorizontal:(缺省)进度条是水平方向1—ccOrentationVertical:进度条为垂直方向因此,若要让进度条变成垂直形式,其Orientation属性应设置为1。5、 在使用“字体”对话框之前必须设置什么属性?答:在显示“字体”对话框前必须设置Flags属性,指示选用何种字体,否则将发生不存在字体错误。6、 热键与快捷键有什么区别?应如何实现?答:如果要通过键盘来访问菜单项,则需要为菜单项定义热键与快捷键。热键是菜单项中带有下划线的字符。建立热键的方法是在菜单标题的某个字符前加一个“&”符号,显示是过一字符下面有一个下划线,表示该字符是一个热键字符。快捷键不是用来打开菜单,而是直接去执行相应的操作。要为菜单项指定快捷键,只要打开快捷键(Shortcut)下拉式列表框并选择一个键,则菜单项标题的右边就会显示快捷键名称。7、 从设计角度,试说明下拉式菜单和弹出式菜单的区别。 答:菜单有两种基本类型:一种是下拉式菜单,由一个主菜单和若干个子菜单所组成的;另一种是弹出式菜单,是用户在某个对象上单击右键所弹出的菜单。下拉式菜单和弹出式菜单都是在使用菜单编辑器时设计的。在设计时这两种菜单的区别是:弹出式菜单中作为菜单名的菜单项的Visible属性应设置为False,程序开始运行时不需要显示,在单击鼠标右键时会弹出;下拉式菜单中作为菜单名的菜单项的Visible属性应设置为True,程序运行时显示在窗体的顶部。8、 什么是模式对话框?什么是非模式对话框?两者有什么区别?答:对话框有两种类型:模式对话框和非模式对话框。若对话框是模式型,打开后无法将鼠标移支其他窗口,即只有在关闭后才能对其他窗体进行操作,如Office软件中“帮助”菜单的“关于”命令所打开的对话框;若对话框是非模式型,则打开后可对其他窗口进行操作,如“编辑”菜单的“替换”对话框就是一个非模式对话框的实例。   当把窗体作为对话框打开时,Show方法的参数有两个,分别表示模式对话框和非模式对话框: (1)将窗体作为模式对话框打开,语句为:窗体名称.Show1 (2)将窗体作为非模式对话框打开,语句为:窗体名称.show09、 简述窗体之间数据互访如何才能实现。答:在多重窗体程序中,不同窗体之间可以相互访问,即一个窗体可以访问另一个窗体中的数据。两个窗体之间访问有下列三种情况: (1)一个窗体可以在直接访问另一个窗体上控件的属性,形式如下:另一个窗体名.窗件名.属性(2)一个窗体直接访问在另一个窗体中定义的全局变量,形式如下:另一个窗体名.全局变量名(3)在模块中定义公共变量实现相互访问,这是最常用的方法。10、   MouseDown事件发生在MouseUp和Click事件之前,但MouseUp和Click事件发生的次序与对象有关。试编写一个小程序测试在命令按钮和标签上MouseDown、MouseUP和Click事件发生的顺序。答:在窗体上创建一个命令按钮Command1和一个标签 Label1,然后编写下列事件过程就以测试这三个事件发生的先后顺序了。PrivateSubCommand1_Click()   Print"命令按钮的Click事件"EndSubPrivateSubCommand1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)  Print"命令按钮的MouseDown事件"EndSubPrivateSubCommand1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)  Print"命令按钮的MouseUp事件"EndSubPrivateSubLabel1_Click()  Print"标签的Click事件"EndSubPrivateSubLabel1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle) Print"标签的MouseDown事件"EndSubPrivateSubLabel1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)  Print"标签的MouseUp事件"EndSub测试结果发现,在标签上发生的顺序为:MouseDown、MouseUp、Click,而在命令按钮上发生的顺序是:MouseDown、Click、MouseUp。11、   在KeyDown事件过程中,如何检测Ctrl和F3键是否同时被按下?答:使用(KeyCode=vbKeyF3)and(Shift=vbCtrlMask)或者(KeyCode=114)and(Shift=2)表达式,可以检测Ctrl和F3键是否同时被按下,F3键的键盘扫描码是114。12、   KeyDown事件与KeyPress事件的区别是什么?答:用户按下并且释放一个会产生ASCII码的键时,触发KeyPress事件;用户按下键盘上任意一个键时,触发KeyDown事件。KeyDOwn与KeyPress事件的主要区别如下:(1)从时间上来说,按下键盘上的一个键立即触发KeyDown事件,但此时没有引发KeyPress事件。只有在释放该按键时触发KeyPress事件。(2)用户按下键盘中的任一键就会在相应对象引发KeyDown事件,但是并不是按下和释放键盘上的任意一个键都会引发KeyPress事件,KeyPress事件只对会产生ASCII码的按键有反应,包括数字、大小写的字母、Enter、Backspace、Esc、Tab键等。对于如方向键这样的不会产生ASCII码的按键,KeyPress事件不会被触发。13、   试说明键盘扫描代码(Keycode)与键盘ASCII码(KeyAscii)的区别。答:键盘扫描代码(KeyCode)是对键盘上按键的编码,它告诉事件过程用户所操作的物理键。也就是说,大写字母和小写字母使用同一个键,它们的KeyCode相同。对于有上档字符和下档字符的键,其KeyCode也相同,为下档字符的ASCII码。14、   键盘上“4”键的上档字符是“$”。当同时按下Shift键和“4”键时,KeyPress事件发生了几次?过程中的KeyAscii参数值是多少?答:KeyPress事件发生了一次,KeyAscii参数值是36。即“$”字符的ASCII码为36。因为KeyPress事件是在输入一个ASCII码字符时发生的事件,尽管在输入“$”字符时按了两个键,但是输入了一个ASCII字符,所以KeyPress事件只发生一次。 第8章1、 什么是文件?ASCII文件与二进制文件有什么区别?答:文件是存储在外存储器(如磁盘)上的用文件名标识的数据的集合。按存储信息的形式分类,文件可分为ASCII文件和二进制文件。ASCII文件存放的是各种数据的ASCII代码,可以用记事本打开;二进制文件存放的是各种数据的二进制代码,不能用记事本打开,必须由专用程序打开。2、 根据文件的访问模式,文件可分为哪几种类型?答:根据文件的访问模式,文件可分为顺序文件、随机文件、二进制文件。顺序文件要求按顺序访问文件的数据;随机文件可以根据记录号直接访问某一特定记录;二进制文件要求以字节为单位定位数据位置,允许程序直接访问各个字节数据,也允许程序按所需的任何方式组织和访问数据。3、 构造满足下列条件的Open语句。(1)建立一个新的顺序文件Seqnew.dat,供用户写入数据,指定文件号为1答:Open “Seqnew.dat“ ForOutput As #1(2)打开一个旧的顺序文件Seqold.dat,用户将从该文件读出数据,指定文件号为2答:Open “Seqold.dat“ ForInput As #2(3)打开一个旧的顺序文件Seqappend.dat,用户将在该文件后面添加数据,文件号通过调用Freefile函数获得。 答:Dim No%   No=FreeFile   Open “Seqappend.dat “ ForAppend As #No4、 试写出程序代码片段,将文本文件Text.dat中的内容读入变量StrTest中。答:文本文件具有行结构的特性,可以按行读取文本文件中的数据:   Open “Text.dat” For Input As#1   strTest$=“”   DoWhile NotEOF(1)        Line Input #1,LineData        strTest$=strTest$+LineData+vbCrLf   Loop   Close#15、 Print#和Write#语句的区别?各有什么用途?答:两种语句区别是:用Write#语句输出数据时,各数据项之间自动插入“,”,并给字符串加上双引号,以区别数据类型;而用Print#语句输出数据时,数据项之间既无逗号分隔,字符串又无双引号引起。因此,为了以后读取数据项的方便,输出列表有多个数据项组成时,建议使用Write#语句。6、 试说明EOF函数的功能答:EOF函数判断文件指针是否到达文件结束标志。该函数在读取文件中的全部记录时很有用,可作为循环结构中循环终止与否的标志。7、 随机文件和二进制文件的读写操作有何不同?答:随机文件以记录为单位读/写数据,而二进制文件以字节为单位读/写数据。8、 试写出程序代码片段,将磁盘上的两个文件合并(提示:把它们作为二进制文件处理)。答:随机文件按记录为单位读/写,所以合并时两个文件的记录类型应相同,合并的思路与顺序文件合并思路相同;否则采取二进制方式以字节为单位读/写。将两个二进制文件合并成第三个二进制文件程序段如下:DimcharAsByteOpen“t1.dat”ForBinaryAs #1Open“t2.dat”ForBinaryAs #2Open“t3.dat”ForBinaryAs #3DOWhileNotEOF(1)    Get1,char    Put3,recno,charLoopDoWhileNotEof(2)   Get2,,char   Put3,,charLoopClose#1,#2,#39、 为什么有时不使用Close语句关闭文件会导致文件数据的丢失?答:将数据写入文件时,先将数据写入文件缓冲区暂存,等到文件缓冲区满了或文件关闭时才一次性输出到文件中。因此,数据写入文件结束后一定要关闭文件,因为有部分数据仍然在文件缓冲区,不关闭文件会有数据丢失情况发生,尽管大多数情况下操作系统会自动关闭文件。  第九章1、 怎样建立用户坐标系?答:使用Scale方法指定对象左上角和右下角的坐标值,如Form1.Scale(-300,200)-(300,-200)。2、 窗体的ScaleHeight、ScaleWidth属性和Height、Width属性有什么区别?答:ScaleHeight、ScaleWidth属性为窗体内部度量单位数据,Height、Width属性为窗体外观尺寸。当改变坐标轴的方向后,ScaleHeight、ScaleWidth属性值可以是负数,而Height、Width属性值必定大于0。3、 RGB函数中的参数按什么颜色排列?其有效的数值范围是多少?怎样用RGB函数实现色彩的渐变?答:RGB函数中的参数按红、绿、蓝顺序排列,RGB函数三基色的取值在0~255之间,当该值大于255时,RGB函数将其当作255处理。为实现色彩的渐变,只要在循环内连续改变三基色的取值。下面给出一段程序样例,通过调整RGB函数的参数值,实现色彩由黑到红之间的渐变。Forj=0to255Line(10,j)–(5000,j),RGB(j,0,0)Nextj4、 怎样设置Line控件对象的线宽?答:在设计或运行时设置Line控件对象的BorderWidth属性。5、 当用Line方法画线之后,CurrentX与 CurrentY在何处?答:当用Line方法画线之后,CurrentX与 CurrentY属性值被设置为直线的终点坐标。6、 当用Circle方法画圆弧和扇形时,若起始角的绝对值大于终止角的绝对值,则圆弧角度在何范围?答:当用Circle方法画圆弧和扇形时,若起始角的绝对值大于终止角的绝对值,则所画圆弧或扇形的圆弧角度大于180度。7、 使用Pset绘制像素点的大小由何因素确定?答:使用Pset绘制像素点的大小由当前容器的DrawWidth的属性值确定。8、 怎样用Point方法来比较两张图片?答:用Point方法按行和列的顺序扫描图片,Point方法可返回窗体对象或PictureBox控件和Image控件所指定点的RGB颜色值,如果所引用的点位于对象指定区域之外,用Point方法返回-1。  第十章1、 什么是关系型数据库?答:关系型数据库模型将数据以表的集合来表示。在关系型数据库中,行被称为记录,列则被称为字段,每个字段都有一个取值范围,表是有关信息的逻辑组。2、 简述SQL中常用的Select语句的基本格式和用法。答:SELECT语句常用的语法形式为:SELECT目标表达式列表FROM表名[WHERE查询条件][GROUPBY分级字段HAVING分组条件][ORDERBY排序关键字段[ASC|DESC]]其中SELECT和FROM子句是必需的,通过使用SELECT语句返回一个查询结果。 3、 简述使用ADO数据控件访问数据库的步骤答:首先使用ADO数据控件建立与数据库的连接;使用命令对象对数据库发出SQL命令,从数据库中选择数据构成记录集;应用程序对记录集进行操作。4、 什么是数据绑定?怎样实现数据绑定?答:在Vosia;Basoc中,ADO数据控件不能直接显示记录集对象中的数据,必须通过能与其绑定的控件来实现。数据绑定是一个过程,即在运行时自动为与记录集中的元素关联的控件设置属性。Windows窗体可以进行两种类型的数据绑定:简单数据绑定和复杂数据绑定。绑定控件通过ADO数据控件使用记录集中的数据,再由ADO控件将记录集连接到数据内的数据表。要使绑定控件能自动连接到记录集的某个字段,通常需要对控件的两个属性进行设置:(1)DataSource属性:通过指定一个有效的ADO数据控件将绑定控件连接到数据源。(2)DataField属性:设置记录集中有效的字段使绑定控件与其建立联系。5、 如何用代码给ADO数据控件设置连接属性,创建一个记录集对象?答:(1)用代码设置ConnectionString属性值     mlink=“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Student.mdb“     Adodc1.ConnectionString=mlink(2)指定命令类型:Adodc1.CommandType=adCmdUnknown(3)设置数据源:Adodc1.RecordSource=“Selcet*From基本情况汇报”(4)激活:Adodc1.Refresh6、 在ADO中如何用代码实现记录指针的移动?答:MoveFirst方法移至第1条记录,MoveLast方法移至最后一条记录,MoveNext方法移至下一条记录,MovePrevious方法移至上一条记录。7、 如何实现对数据库的增、删、改功能?答:对记录集数据的增、删、改操作涉及AddNew、Delete、Update和CancelUpdate这4个方法。增加一条新记录通常要经过以下三步:(1)调用AddNew方法,在记录集内增加一条记录;(2)给新记录各字段赋值。可以通过绑定控件直接输入,也可使用程序代码给字段赋值。(3)调用Update方法,确定所做的添加,将缓冲区内的数据写入数据库。从记录集中删除记录通常要经过以下三步:(1)定位被删除的记录使之成为当前记录;(2)调用Delete方法;(3)移动记录指针ADO数据控件有较高的智能,当改变数据项的内容时,ADO自动进入编辑状态,在对数据编辑后,只要改变记录集的指针或调用Update方法,即可确定所做的修改。8、 如果要显示数据表内的照片,可使用哪些控件?答:PictureBox和Image控件,将它们绑定到数据表内的照片字段。'