【VB开源代码栏目提醒】:网学会员为广大网友收集整理了,VB程序设计教程_第三版_龚沛曾_课后答案 - 培训资料,希望对大家有所帮助!
习题一 答案在教材上找。
习题二 1.对象指现实世界中的实体。
每个对象有自己的特征属性、行为方法和发生在该对象上的活动事件。
类是对同一种对象的集合与抽象。
类包含所创建对象的属性数据以及对这些数据进行操作的方法。
封装和隐藏是类的重要特性将数据结构和对数据的操作封装在一起类的内部实现细节对用户来说是透明的。
VB工具箱中的可视图标是
VB系统设计好的标准控件类。
通过将控件类实例化得到真正的控件对象。
在窗体上画一个控件就将类转换为对象创建了一个控件对象。
VB中常用的对象是控件。
此外
VB还提供了
系统对象。
窗体是个特例它既是类也是对象。
当向一个工程添加一个新窗体时实质就由窗体类创建了一个窗体对象。
对象的三要素属性、事件和方法。
属性存放对象的数据决定对象外观及功能对象属性的设置方法在设计阶段利用属性窗口直接设置属性值程序运行时通过语句对象名.属性名属性值。
若属性只能在设计阶段设置在程序运行阶段不可改变称为只读属性。
事件发生在对象上的事情。
同一事件对不同的对象会引发不同的反应。
事件过程应用程序处理事件的步骤。
应用程序
设计的主要工作就是为对象编写事件过程的
代码。
方法面向对象的程序设计语言为程序设计人员提供了一种特殊的过程和函数。
方法是面向对象的调用时一定要指明对象。
2.窗体和控件具有的基本属性“ 1 Name属性名称 所创建的对象名称在程序中引用。
2 Caption属性标题 该属性决定了对象上显示的内容。
3 Height、Width、Top和Left属性 决定对象的大小和位置。
4 Enabled 属性对象是否允许操作 5 Visible 属性对象是否可见 6 Font 属性组文本的外观 FontName字体、FontSize大小 FontBold粗体、FontItalic斜体 FontStrikethru 删除线 FontUnderline 下划线 7 ForeColor属性前景颜色 8 BackColor属性背景颜色 9 MousePointer属性鼠标指针类型 设置值范围015由系统指定 。
若为99由用户提供的图形文件定义鼠标指针形状。
10 MouseIcon属性在MousePointer属性值为99时存放自定义的鼠标图标文件.ico或.cur。
图标库在Graphics目录下。
3.窗体的事件Load事件是在窗体被装入
工作区时触发的事件。
当应用程序启动自动执行该事件该事件通常用来在启动应用程序时对属性和变量进行初始化。
窗体的方法:1Print方法 用来显示文本内容格式对象.print 表达式 2Cls方法 清除运行时在窗体或图形框中产生的文本或图形 Cls方法不能清除窗体在设计时的文本和图形。
格式对象.cls 3Move方法 可移动窗体或控件并可改变其大小。
语法格式如下 对象.Move 左边距离上边距离宽度高度 4.标签作用用于显示文本输出信息不能作为输入信息的界面。
其内容只能通过Caption属性设置或修改不能直接编辑。
5.文本框是一个文本编辑区域可以在该区域输入、编辑、修改和显示正文内容。
在
VB中字符长度以字为单位也就是一个西文字符与一个汉字都是一个字长度为1。
重要属性1 Text 显示或输入的正文内容。
2 Maxlength 设置文本框可输入的文字最大长度。
默认值为0表示可以输入任意长字符串。
3 MultiLine 多行属性 设置为True时文本框可以输入或显示多行正文同时具有文字处理器的自动换行功能按Enter键可插入一空行。
4 ScrollBars 滚动条属性 0-None 无滚动条 1-Horizontal 水平滚动条 2-Vertical 垂直滚动条 3-Both 同时加水平和垂直滚动条 注意当MultiLine为True时ScrollBars才有效 5 PassWordChar 设置显示文本的替代符。
例如当设置为“”则在文本框输入的内容均以“”显示而存储的值是用户输入的原文。
一般用于设置口令的输入。
当MultiLine为True时该属性不起作用密码不允许多行。
6 Locked 指定文本控件是否可被编辑默认值为False可编辑当设置为True时文本控件相当于标签控件的作用。
注意Locked与Enabled的区别。
7文本内容进行选择操作的三个属性 SelStart 选定的正文开始位置 SelLength 选定的正文长度 SelText 选定的正文内容 这3个属性互相关联例如设置SelStart、SelLength后SelText 自动存放指定的文本。
注意属性窗口中没有这三个属性只能在
程序代码中使用。
6.文本框的事件1 Change事件当Text属性值发生改变时引发该事件 2 KeyPress事件按下并且释放键盘上的一个键时引发焦点所在控件的KeyPress事件所按键的值存放在参数KeyAscii中。
对回车的判断 KeyAscii13 7.文本框最有用的方法是SetFocus把光标移到指定的文本框中。
8.命令按钮 Picture属性按钮可显示图片文件.bmp和.Ico当Style为1时有效。
10. 启动窗体时将命令按钮定位在窗体中央的
代码 Private Sub Form_Load Command1.Left Form1.ScaleWidth / 2 - Command1.Width / 2 Command1.Top Form1.ScaleHeight / 2 - Command1.Height / 2 End Sub 11
vb图片文件在 C:Program FilesMicrosoft Visual StudioCommonGraphics 文件夹。
安装
VB时可选择是否安装这些图片文件。
习题三 1. 合法常量 1 Double 2 错误 3 Double 4 Double 5 错误 6 Integer 7 String 8 String 9 Date 10 Double 11 错误汉字字符 12Integer八进制 13 错误八进制无数码8 14 Integer 15 Boolean 16 错误 17 错误十六进制无数码g 18 Single 说明浮点型变量默认为Double类型而非Single。
2. 合法变量名 1 √ 2 √ 3 误数字开头 4 误含空格 5 误关键字 6 √ 7 误关键字 8 误有括号 9 √ 10 √ 11 √ 12 √汉字字符可作为变量名但不
常用且此名称易误解 变量命名规则见P.41-42。
字母汉字开头字母汉字、数字、下划线组成长度为1-255个字符关键字不可作为变量名但可在变量名中嵌入关键字不区分大小写。
常量、数组、类型、函数、过程、对象命名规则与此相同。
常量名通常全用大写。
3. 写
VB表达式 1 Absx y z 5 2 1 x y 6 3 10 x Sqr3 y / x y 4 -b Sqrb 2 - 4 a c / 2 a 5 1 / 1 / r1 1 / r2 1 / r3 6 Sin45 3.14159 / 180 Exp10 Log10 / Sqrx y 1 4. 根据条件写表达式 1 随机产生大写字母 ChrIntRnd AscL - AscC 1 AscC 2 100200内的随机数 IntRnd 101 100 3 点xy位于第一或第三象限 x 0 And y 0 Or x 0 And y 0 或 x y 0 4 x是5或7的整数倍 x Mod 5 0 Or Intx / 7 x / 7 5 将两位整数x的个位与十位对换 x 10 x Mod 10 10 6 四舍五入取两位小数 Roundx 2 7 字符变量C是字母字符不区分大小写——准确地说是字符变量C的第一个字符是字母 C A And C a And C z 或 UCaseC A And UCaseC a And LCaseC z 5. 写表达式的值 1 188 ——注意运算的优先级顺序以及整除运算“”的计算 2 200100 —— 计算100 100时由于两个操作数类型不同在可能的情况下自动采用精度较高的类型即把字符型转换为数值型100 100 得到200然后进行字符串连接运算200 100 再自动将两个数值转换为字符串得200100。
3 68.56 ——在四舍五入函数产生之前这就是四舍五入的计算方法 4 876554 ——先进行字符串的“”运算再转换成数值。
在变量名和函数名后可加上类型符以强调其类型但不是必须的。
5 2000-2-29 6 6 6Shell函数调用 i Shellmspaint.exe 1 启动画图 i ShellC:Program FilesMicrosoft OfficeOFFICE11win
word.exe 1 启动Word 说明“画图”是Windows本身提供的程序可以省略路径。
8. 答单精度浮点型 第79题答案在教材中找。
习题四 第1358题答案在教材中找。
2. 赋值语句的错误 110x 不能做变量名。
上机验证结果
VB将10识别为行号x Sinx y是为变量x赋值。
故无语法错误。
2Sqr函数的参数为负数。
上机验证结果“无效的过程调用或参数” 3赋值号左边不是变量名。
上机验证结果“缺少子程序、函数或属性” 4除数为0 上机验证结果“溢出”。
4. 答案略 说明小数位可以使用四舍五入函数Round或输出格式函数Format。
例如Roundx 2和Formatx “0.00”均可使结果只保留两位小数。
但如果四舍五入后要进行数值运算则使用Round函数例如zRoundx2Roundy2。
而Format函数通常只用于输出格式设置。
6指出错误 1“≥”应改为“”前者是中文字符不具有运算功能。
2“10 20 y x 2 3 x 2 Case Is 10 y Sqr3 x - 2 Case Is 0 y 1 / x Absx End Select Print y y 3 使用If语句 Dim x As Single y As Single z As Single Max As Single x ValInputBoxx y ValInputBoxy z ValInputBoxz Max x If y Max Then Max y If z Max Then Max z Print Max Max 使用IIF函数 x ValInputBoxx y ValInputBoxy z ValInputBoxz Max IIfx y x y Max IIfz Max z Max Print Max Max 9. 计算循环次数 1 6 219 30 4死循环直至溢出 10. 40号语句执行 4次第50 号语句执行12次 执行第90号语句输出的结果是 1302 说明该程序为嵌套循环其中外循环由j值变化14710控制执行4次当j值为13时结束循环内循环由k值变化642控制执行3次当k值为0时结束循环。
第40 行是外循环的循环体故执行4次第50 行是内循环的循环体故执行4312次。
11. 可以定一个较大的循环次数在循环体中根据条件用Exit For退出。
但这种情况通常用Do While循环控制。
12. 编程并非唯一正确答案 1 Dim i As Integer s As Integer For i 1 To 10 s s i 1 2 i 1 Next i Print s s 2 Dim i As Integer n3 As Integer n7 As Integer For i 1 To 100 If i Mod 3 0 Then n3 n3 1 If Inti / 7 i / 7 Then n7 n7 1 Next i Print 1-100中3的倍数有 n3 个 Print 1-100中7的倍数有 n7 个 3 Dim s1 As String s2 As String i As Integer s1 InputBoxInput String s2 For i 1 To Lens1 s2 Mids1 i 1 s2 Next i Print 原序 s1 Print 反序 s2 或 For i Lens1 To 1 Step -1 s2 s2 Mids1 i 1 Next i 13. 输出字符串“10100”。
该程序功能是将十进制数转化为二进制。
说明要理解该程序需要了解数制转换的计算方法有兴趣者参看百度百科http://baike.baidu.com/view/1426817.htm。
48是字符0的ASCII码。
14. 运行时输出 22 484 该程序功能是求x和y最大公约数和最小公倍数。
说明此算法称为“辗转相减法”。
可对照例4.17的辗转相除辗转求余法。
1550100间的20个随机数求最大值、最小值、平均值。
Dim x As Integer sum As Integer aver As Single Dim n i max min Randomize max 50: min 100: n 20 For i 1 To n x IntRnd 51 50 List1.AddItem x sum sum x If x max Then max x If x min Then min x Next i aver sum / n Print 最大值 max 最小值 min 平均值 aver 习题五 1. 指定数组的默认下界 Option Base 1 2合理的数组声明 1错。
定义数组不可用变量教材99页。
2正确。
该数组下标为0-11。
3错。
VB中数组下标用圆括号。
4正确。
三维数组三个下标分别为0-10-10-2共12个元素。
5错误。
非动态数组不可重定义。
6错误。
动态数组重定义时不可改变数据类型。
7正确。
二维数组两个下标分别为0-20-3共12个元素。
8语法错误二维数组定义中漏写逗号——可能是印刷错误加上此逗号则正确。
3当引用数组元素时下标值小于定义的最小下标或大于最大下标时会发生“下标越界”错误。
4数组名a 数组类型Single单精度浮点型维数二维 各维的上下界第一维下界最小下标为 -1上界最大下标为2 第二维下界最小下标为 0上界最大下标为3 数组的大小4行4列共16个元素 以矩阵的格式输出二维数组 For i -1 To 2 For j 0 To 3 Print ai j Next j Print Next i 或写成更加通用的
代码形式 For i LBounda 1 To UBounda 1 For j LBounda 2 To UBounda 2 Print Tabj 8 ai j Next j Print Next i 6一维字符数组 Dim a1 To 20 As String Private Sub Command1_Click 1随机产生字符串 Dim i As Integer j As Integer n As Integer c As String 1 Randomize For i 1 To 20 ai 将第i个元素清空 n IntRnd 10 1 产生110的随机数 For j 1 To n ai中有n个字符 c ChrIntRnd 26 97 随机产生字母97是字母a的ASCII码 ai ai c Next j Next i End Sub Private Sub Command2_Click 2输出字符串 Dim i As Integer For i 1 To 20 Print Tabi - 1 Mod 5 11 ai If i Mod 5 0 Then Print Next i End Sub Private Sub Command3_Click 3最长的字符串 Dim i As Integer imax As Integer imax 1 For i 2 To 20 If Lenai Lenaimax Then imax i End If Next i Print 最长的字符串 aimax End Sub 第78题答案在教材中找。
第9题“自定义变量”含义不明暂时无法回答。
第510 题 暂略 习题六 第126-8题答案可在教材中找到。
3指出过程说明中的错误 1Sub子过程不应该定义类型 2函数与形式参数不应该同名 3数组作为形式参数时应使用传地址方式不可使用传值ByVal 4形式参数应该是变量或数组名不可以是一个数组元素 4指出调用过程语句的错误 1无语法错误但因形参sum所对应的实参是常量3故计算结果无法传递给主调程序。
2实参变量c与形参sum的类型不一致。
3类似于1形参sum所对应的实参是表达式ab故计算结果无法传递给主调程序。
4类似于1和2形参sum所对应的实参是表达式Sqrc故计算结果无法传递给主调程序。
另外srqa存在语法错误拼写错。
5与2相同实参c与形参sum的类型不一致。
5迭代法求平方根 1自定义函数的定义及调用 Function FSqr1a As Single As Single Dim x0 As Single x As Single x a Do x0 x x x0 a / x0 / 2 Loop While Absx - x0 0.00001 FSqr1 x End Function Private Sub Command1_Click Dim x y x ValInputBoxx If x 0 Then y FSqr1x Print y End If End Sub 2自定义子过程的定义及调用 Sub FSqr2a As Single x As Single Dim x0 As Single x a Do x0 x x x0 a / x0 / 2 Loop While Absx - x0 0.00001 End Sub Private Sub Command2_Click Dim x y x ValInputBoxx If x 0 Then Call FSqr2x y Print y End If End Sub 3递归函数及调用 略 习题七 第1-9题答案在教材上找第1012-14题略。
11检测Ctrl和F3同时按下的
代码 Private Sub Text1_KeyDownKeyCode As Integer Shift As Integer If Shift 2 And KeyCode 114 Then MsgBox HAHA End Sub 习题八 第12679题答案可阅读教材找到。
3写Open语句 1 Open Seqnew.dat For Output As 1 重写 或 Open Seqnew.dat For Append As 1 添加 2Open Seqold.dat For Input As 2 3Open Seqappend.dat For Append As FreeFile 4编程将文件Text.dat 读入变量strTest。
Dim strTest As String Open Text.dat For Input As 2 Do While Not EOF2 strTest strTest Input1 2 Loop 8本
课程不涉及二进制文件。
故此处以顺序文件读写方式编程。
另外合并的结果可以是合并到其中某一个文件也可以是合并到一个新的文件此处
代码是合并到其中一个文件F1.txt。
方法一在2号文件一次读一个字符并写入1号文件 Dim strTemp As String 1 Open d:F1.txt For Append As 1 Open d:F2.txt For Input As 2 Do While Not EOF2 strTemp Input1 2 Print 1 strTemp 注意结尾有分号否则每个字符一行 Loop Close 方法二在2号文件一次读一个字符并累加最后将累加结果写入1号文件 Dim strTemp As String 注意方法一变量定义的区别 Open d:F1.txt For Append As 1 Open d:F2.txt For Input As 2 strTemp Do While Not EOF2 strTemp strTemp Input1 2 Loop Print 1 strTemp Close 习题九 答案在教材上找。
习题十 答案在教材上找