1. 如何在 Visual Studio 中进行XML编程
XML(可扩展标记语言)是一种提供数据描述格式的标记语言。与其他编程语言相比,其有很大的优势。如可以在多个平台中进行更加准确的内容声明、更加容易的进行检索等等。今天我们来介绍如何在Visual Studio中进行XML编程。 一、XML编程可以提高Visual Studio平台中数据的处理能力。 与其把XML当作一种可扩展标记语言,笔者更愿意把它叫做一种工具。这个工具可以提高Visual Studio平台中数据的处理能力。正如文章开头所说的,XML可以将后台数据与表进行分离。如此的话,两者就可以分工合作。Visual Studio平台只负责数据的逻辑处理,如逻辑运算、条件判断等等,而不需要关心其客户端显示的格式问题。而XML负责在客户端如何显示,如保留几位小数、显示哪些内容、权限控制等等。术业有专攻,这么处理,就可以明显提高Visual Studio平台中应用程序的数据处理能力。 二、使用XML编程工具时要注意安全问题。 虽然可以在Visual Studio平台中实现XML编程语言,但是他们毕竟是不同的产品,其内部的实现机制,如安全机制,有比较大的差异。为此要在这个Visual Studio平台中使用XML工具的话,一些安全方面的问题需要引起程序开发人员的重视。 如在使用XML编辑器的时候,需要注意类的执行权限。XML编辑器是Visual Studio中实现XML的主要途径。通常情况下,这个XML编辑器在系统初次加载时会自动下载。那么如何下载这个XML编辑器才是安全的呢?一般情况下可以通过HTTP的方式下载。但是由于HTTP协议自身的缺陷(其不会对传输的数据进行加密),故有时候出于安全方面的考虑,会对其进行限制。用户通常可以在XML编辑器、杂项工具选项对话框中,设置是否需要禁用HTTP下载。 如在调试时,需要给XSLT调试程序配置合适的权限。XSLT是在Visual Studio平台中调试XML可扩展标记语言的工具。XSLT调试程序会在沙盒型应用程序中对XML脚本语言进行XSLT转换。在转换的过程中,出于安全方面的考虑,程序人员往往需要根据样式表所在处的位置来指定一系列的安全策略。如来自互联网的样式表通常来说存在一定的安全隐患,此时就需要对其权限进行限制。而对于来自用户电脑上或者企业共享服务器上的样式表,相对安全,可以采取完全信任的权限运行。针对样式表的不同位置设置不同的权限,则可以在最大程度上保障安全与效率方面的均衡。 三、如何在Visual Studio 中生成XML Web Services客户端。 通过创建XML Web Services客户端的形式来实现XML,是一个常用的便捷方法。XML Web Services客户端是指使用SOAP消息与Web服务器进行通信的组件和应用程序。XML Web Services客户端其实际的表现形式有两种。一是通过网页形式来实现,即一个Web应用程序;二是通过传统的客户端界面来实现,即跟C/S模式下的客户端类似,只是其采用的协议不同。那么该如何在Visual Studio平台中建立XML Web Services客户端呢?由于在Visual Studio中友好的集成了XML工具,所以要实现这个要求并不难。笔者认为可以归结为如下四个步骤来完成。 第一步创建一个Web服务的代理类。在具体实现之前,程序开发人员要转变一个观念。即在实现XML编程工具的时候,其都是通过类来实现的。也就是说,VisualStudio中内置了许多类,通过这些类来调用XML可扩展标记语言。了解这个前提,对于后面的开发具有很大的帮助。为此要创建XML Web Services客户端的话,首先需要创建一个Web服务的代理类。 第二步在客户端重对刚才创建的类进行处理。如需要在客户端代码中引用刚才创建的代理类,并且需要创建这个代理类的一个实例。在引用代理类的时候,需要注意不同的客户端类型,其引用的方式有所不同。在开发客户端的时候,如果即要采用Web应用程序作为客户端,也需要传统的C/S客户端,那么在开发应用程序中可能需要加入一个必要的判断条件,以增强应用程序的灵活性。举一个简单的例子,如开发一个邮件系统。其即可以直接通过网页来访问邮件,也可以通过outlook邮件客户端来接收邮件。由于采取的客户端类型不同,其代理类的引用方式也有所不同。此时服务器就需要判断用户采用的是哪种类型的客户端。根据判断的结果来确定所需要采用的引用方法。 第三步设置代理类的属性与方法。一般情况下,对于代理类的属性只要采用默认的即可。但是有时候程序开发人员可能不允许匿名访问。如一个电子商务系统,一定要求用户有合法的身份才可以访问。此时就需要更改代理类的属性(更改Credentials属性)。这个属性主要的作用就是用来获取或者设置客户端身份验证的安全凭据。如程序开发人员将这个属性显示设置为需要身份验证凭据时,就会禁止用户匿名访问。设置完属性之后,还需要对这个代理类调用与要与之进行通信的Web服务设置相对应的方法。这里需要注意一点,跟代理类引用一样,用户所采用的客户端类型不同,其方法也有所不同。对于有多个客户端要求的应用软件来说,需要在设置的时候,加入一个判断条件。根据用户所采用的客户端不同,对应不同的方法。否则的话,无论是数据还是在显示格式上,都会与实际的有所差异。 第四步就是对客户端进行调试。在调试的时候,除了要注意功能是否可以实现之外,还需要关注安全方面的问题。在上面的内容中笔者强调过,需要根据XML样式表的位置来设置不同的权限。这可以在保障安全性的同时,提高应用程序的效率。在调试与测试的过程中,有可能为出现“请求因HTTP状态失败:拒绝访问”的错误信息。很多新手在使用XML编程工具的时候,都会遇到这个问题。这主要是因为权限上的错误所造成的。如有可能是没有将安全凭据传递给代理类的凭据缓存。 要解决这个问题的话,就需要对Windows身份验证模式进行配置。如需要配置客户端凭据并将这个凭据传递给使用各种形式的Windows身份验证的Web服务。身份验证是一项比较复杂的工作。在一个开发团队中,往往有专门的技术人员来负责这块内容,其主导这个应用程序的整个安全机制。故具体采用哪种形式的身份认证方式、如何才能够安全的传递凭据,这需要开发人员与安全技术人员共同协商实现。其一个主要的原则就是在保障安全的同时,不要影响到应用程序的性能。在实际工作中,经常会遇到这种错误。系统登陆的时候,速度特别慢。但是登陆以后,其速度就会有显着的改善。这很大一方面原因,就是没有在身份认证与性能之间获得一个平衡。这无形中就给用户造成了不好的影响。 最后笔者总结一下。在Visual Studio平台中生成XML编程时,主要需要注意两点。一是用户所采用的客户端不同,其代理类的引用与对应的方法有所差异。为了提高应用程序的灵活性,在代码中往往需要加入判断条件。或者就开发两个不同类型的客户端。二是安全固然重要,性能也不能够忽视。在实际开发中,要避免登陆过程慢、后续操作快的误区。
2. 如何学习数控技术
262篇数控与数控编程技术,应该有你需要的
http://hi..com/999ting/blog/item/3aa783c2a929f61e0ef47714.html
数控编程实例:如何编写数控程序最新更新:2011.7.12
数控编程实例:数控加工中的补偿
数控编程的有关问题(华中数控系统)
数控编程实例:数控加工的工艺路线分析
数控编程:夹具、刀具的选择及切削用量的确定
详解:模具检测(验收)方法与步骤
数控系统常见术语详解 !
编制机械制造工艺规程中几种先进技术的综合应用
机械零件的检测与误差原因解析
第四届全国数控技能大实操样题下载
第四届全国数控技能大赛决赛技术纲要
第四届全国数控技能大赛决赛技术平台说明
数控编程:NC编程更自动化
数控铣床操作视频教程
数控车床编程实例(KND系统)
6S精益管理讲座(视频)
潜规则了吗?质量人难堪的14个场面!
铣加工编程专用指令
注册机械检验员 (精益制造)
机械检查工技师(考试)
中日对决-制造工艺人的攻防战
数控编程运用:数控加工中的补偿
铣削零件加工实例 视频
华中车床数控系统操作视频(下载)
数车编程--看就会教程!
孔加工的编程方法(数控编程实例)
数控技术 数控编程实例习题集(下载)
数控车床编程确定切削用量和进给量
数控车床对刀具及刀具座的要求
网络文库机械制造专业版本
质量工程师必学科目:统计学(视频教程)
质量专业理论与实务(中级)模拟试题
6西格玛绿带课程内容表
质量工程师考试常用考试技巧
数控技术:用户宏程序的运用以及相关用量的计算
质量管理专用英语
数控车削加工中妙用G00及保证尺寸精度的技巧
打破外国垄断!中国造世界最大超重型数控落地铣镗床
电脑中毒:重新安装windowsXP视频教程
视频: 数控车床操作指南8 (完整全集)
Fanuc系统数控车床设置工件零点常用方法
AutoCAD 2004视频教程
第三届全国数控技能大赛试题点评 (附下载地址)
视频: 数控车床操作指南全集(7 )
一个机械公司的面试考题,看你知道多少?
数控机床与操作(精品教程)
数控编程技术:AutoCAD 2004视频教程
AutoCAD实用经典技巧80条(二)
AutoCAD实用经典技巧80条(一)
Office视频:Word2003视频教程 Excel2003视频教程
大学生为何热衷考取数控“技工证”
数控技术:拟定机械加工工艺规程的原则与步骤有哪些?
数控编程:数控车床操作指南视频(6)
AutoCAD新手常犯的十二个错误
数控技术:数控铣工技师考试题
数控编程技术:技师论文撰写一些基本要求
数控编程视频:数控车床操作指南(5)
技师论文撰写与答辩技巧
机械工程师技术能力要求
数控车床操作指南(4)
数控视频教程:数控车床操作指南(03)
数控视频教程:数控车床操作指南(02)
数控视频教程:数控车床操作指南(01)
如何造就数控机床编程高手(全)
第三届全国数控技能大赛试题下载全套(数控车工,数控铣工,数控加工中心)
数控技术:数控机床的加工特点
编程技巧:椭圆车床宏程序编制方法
编程技巧:螺纹的数控铣削加工
数控编程技巧;宏程序梯形螺纹
数控技巧:数控常用工艺术语
加工中心技师考试题(看看你所在的位置)
数控加工中宏程序的应用技巧
一个老工程师的心理话
数控技巧:钻孔参数表大全(1)
数控技巧:钻孔参数表大全(2)
2008数控竞赛试题
干一辈子车工,学一辈子技术(看看他们,你就知道数控需要真么学习了)
数控编程技巧:CNC常用计算公式
数控加工工艺与编程考题
大学生为何热衷考取数控“技工证”
机械加工误差的概念
加工中心编程技巧
浅谈FANUC数控系统的使用心得
中华人民共和国劳动合同法 (2008最新版本)
机械工程师资格考试大纲
Mastercam入门到精通(数控编程视频教程)
超强的MasterCAM自动出NC程式加工报表
中高级技师人才紧俏 人才培育相对滞后
怎样学习数控技术-(连载)
• 第三届全国数控技能大赛竞赛技术纲要>>>>
• 国家职业标准《数控铣工》
• 国家职业标准《数控车工》
• 国家职业标准《加工中心操作工》
什么是数控机床?
如何提高数控机床可靠性
自动数控编程
数控编程技术:分享UG技巧
数控加工必备知识
mastercam视频教程
第三届全国数控技能大赛官方网站
第三届全国数控大赛出题标准(2008年度)
数控刀具的种类及选择技巧
CAM对高速加工的影响
支持复合加工成为CAM领域新热点[数控编程]
工件的装夹及数控夹具选用习题库
数车数控镗铣及加工中心加工工艺习题库 (完整版本)
给数控新人的一点建议
UG数控编程实例与技巧
加工中心编程技巧
数控维修的常用方法
数控编程基本知识
数控编程:铣刀加工工艺参考表
CNC设备结构与工作原理
如何为数控机床正确的选择刀具及编程
第五届中国数控机床展在京开幕 规模创历届之最
数控编程技术/数控编程代码/数控编程指令/数控视频(数控技术学习专题第二集)
测量技术的发展动向
数控编程:螺纹切削复合循环 G76 指令
数控铣床零件加工实例操作视频教程
5轴加工复杂模具(视频)
数控加工技术的基础知识
MasterCAM8.0应用技巧
车削螺纹时常见故障及解决方法
数控铣试题和答案
子程序在数控编程中的应用技巧
加工中心的工艺特点
职业资格鉴定今后全省“统考”
(职业资格证书现在越来越不好取得了,如果你有条件要尽快早些搞定)
数控加工中的刀具补偿
数控编程中的代码
AutoCAD典型应用技巧五则
数控编程术语与标准系列
AutoCAD学习心得——献给AutoCAD初学者
数控学习必备知识~!(例举:数控车床和推荐书籍)
数控编程---网络
怎样学习数控技术--连载
国内外数控技术发展
六点定位法则的正确理解与应用
AutoCAD使用技巧六则
数控机床维修实例
不想破产的中国人,都好好读一遍这篇文章吧!
3. 第三版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属性:鼠标指针类型, 设置值范围0~15,由系统指定 。若为99,由用户提供的图形文件定义鼠标指针形状。
(10) MouseIcon属性:在MousePointer属性值为99时,存放自定义的鼠标图标文件(.ico或.cur)。图标库在Graphics目录下。
3.窗体的事件:Load事件是在窗体被装入工作区时触发的事件。当应用程序启动,自动执行该事件,该事件通常用来在启动应用程序时对属性和变量进行初始化。
窗体的方法:(1)Print方法
用来显示文本内容,格式:[对象.]print 表达式
(2)Cls方法
清除运行时在窗体或图形框中产生的文本或图形, Cls方法不能清除窗体在设计时的文本和图形。
格式:[对象.]cls
(3)Move方法
可移动窗体或控件,并可改变其大小。
语法格式如下:
[对象.]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中。对回车的判断 KeyAscii=13
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 Files\Microsoft Visual Studio\Common\Graphics 文件夹。
安装VB时可选择是否安装这些图片文件。
习题三
1. 合法常量:
(1) Double
(2) 错误
(3) Double
(4) Double
(5) 错误
(6) Integer
(7) String
(8) String
(9) Date
(10) Double
(11) 错误(汉字字符)
(12)Integer(八进制)
(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) 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.14159 / 180) + (Exp(10) + Log(10)) / Sqr(x + y + 1)
4. 根据条件写表达式
(1) 随机产生大写字母 Chr(Int(Rnd * (Asc("L") - Asc("C") + 1) + Asc("C")))
(2) [100,200]内的随机数 Int(Rnd * 101) + 100
(3) 点(x,y)位于第一或第三象限 x > 0 And y > 0 Or x < 0 And y < 0 或 x * y > 0
(4) x是5或7的整数倍 x Mod 5 = 0 Or Int(x / 7) = x / 7
(5) 将两位整数x的个位与十位对换 x \ 10 + (x Mod 10) * 10
(6) 四舍五入取两位小数 Round(x, 2)
(7) 字符变量C是字母字符(不区分大小写)——准确地说是:字符变量C的第一个字符是字母
C >= "A" And C <= "Z" Or C >= "a" And C < "z"
或 UCase(C) >= "A" And UCase(C) <= "Z"
或 LCase(C) >= "a" And LCase(C) <= "z"
(8) 字符变量S第5个字符起取6个字符 Mid(S, 5, 6)
(9) 10≤x<20 10 <= x And x < 20
(10) x,y至少有一个小于z x < z Or y < z
(11)x,y都大于z x > z And y > 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
6.Shell函数调用
i = Shell("mspaint.exe", 1) '启动画图
i = Shell("C:\Program Files\Microsoft Office\OFFICE11\winword.exe", 1) '启动Word
说明:“画图”是Windows本身提供的程序,可以省略路径。
8. 答:单精度浮点型
第7,9题答案在教材中找。
习题四
第1,3,5,8题答案在教材中找。
2. 赋值语句的错误
(1)10x 不能做变量名。
上机验证结果:VB将10识别为行号,x = Sin(x) + y是为变量x赋值。故无语法错误。
(2)Sqr函数的参数为负数。
上机验证结果:“无效的过程调用或参数”
(3)赋值号左边不是变量名。
上机验证结果:“缺少子程序、函数或属性”
(4)除数为0
上机验证结果:“溢出”。
4. [答案略]
说明:小数位可以使用四舍五入函数Round或输出格式函数Format。例如Round(x, 2)和Format(x, “0.00”)均可使结果只保留两位小数。但如果四舍五入后要进行数值运算,则使用Round函数,例如z=Round(x,2)+Round(y,2)。而Format函数通常只用于输出格式设置。
6.指出错误
(1)“≥”应改为“>=”,前者是中文字符,不具有运算功能。
(2)“10<x<20”应改为“10<x And x<20”,否则运行结果错误。
7.写条件语句
(1)
Dim c As String
c = InputBox("c=")
If Mid(c, 3, 1) = "C" Then
MsgBox "Yes"
Else
MsgBox "No"
End If
(2)
# 使用If语句
Dim x As Single, y As Single
x = Val(InputBox("x="))
If x > 20 Then
y = x ^ 2 + 3 * x + 2
ElseIf x >= 10 Then
y = Sqr(3 * x) - 2
ElseIf x > 0 Then
y = 1 / x + Abs(x)
End If
Print "y="; y
# 使用Select Case语句
Dim x As Single, y As Single
x = Val(InputBox("x="))
Select Case x
Case Is > 20
y = x ^ 2 + 3 * x + 2
Case Is >= 10
y = Sqr(3 * x) - 2
Case Is > 0
y = 1 / x + Abs(x)
End Select
Print "y="; y
(3)
# 使用If语句
Dim x As Single, y As Single, z As Single, Max As Single
x = Val(InputBox("x="))
y = Val(InputBox("y="))
z = Val(InputBox("z="))
Max = x
If y > Max Then Max = y
If z > Max Then Max = z
Print "Max="; Max
# 使用IIF函数
x = Val(InputBox("x="))
y = Val(InputBox("y="))
z = Val(InputBox("z="))
Max = IIf(x > y, x, y)
Max = IIf(z > Max, z, Max)
Print "Max="; Max
9. 计算循环次数
(1) 6
(2)19
(3)0
(4)死循环直至溢出
10. 40号语句执行 4次;第50 号语句执行12次;
执行第90号语句输出的结果是: 13,0,2
说明:该程序为嵌套循环,其中外循环由j值变化(1,4,7,10)控制执行4次,当j值为13时结束循环;内循环由k值变化(6,4,2)控制执行3次,当k值为0时结束循环。第40 行是外循环的循环体,故执行4次;第50 行是内循环的循环体,故执行4*3=12次。
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 Int(i / 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 = InputBox("Input String")
s2 = ""
For i = 1 To Len(s1)
s2 = Mid(s1, i, 1) + s2
Next i
Print "原序:"; s1
Print "反序:"; s2
或
For i = Len(s1) To 1 Step -1
s2 = s2 + Mid(s1, i, 1)
Next i
13. 输出字符串“10100”。该程序功能是将十进制数转化为二进制。
说明:要理解该程序需要了解数制转换的计算方法(有兴趣者参看网络http://ke..com/view/1426817.htm)。48是字符"0"的ASCII码。
14. 运行时输出 22 484
该程序功能是求x和y最大公约数和最小公倍数。
说明:此算法称为“辗转相减法”。可对照例4.17的辗转相除(辗转求余)法。
15.[50,100]间的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 = Int(Rnd * 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-1,0-1,0-2,共12个元素。
(5)错误。非动态数组,不可重定义。
(6)错误。动态数组重定义时不可改变数据类型。
(7)正确。二维数组两个下标分别为0-2,0-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 a(i, j);
Next j
Print
Next i
或写成更加通用的代码形式:
For i = LBound(a, 1) To UBound(a, 1)
For j = LBound(a, 2) To UBound(a, 2)
Print Tab(j * 8); a(i, j);
Next j
Print
Next i
6.一维字符数组
Dim a(1 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
a(i) = "" '将第i个元素清空
n = Int(Rnd * 10 + 1) '产生[1,10]的随机数
For j = 1 To n 'a(i)中有n个字符
c = Chr(Int(Rnd * 26 + 97)) '随机产生字母97是字母a的ASCII码
a(i) = a(i) + c
Next j
Next i
End Sub
Private Sub Command2_Click() '(2)输出字符串
Dim i As Integer
For i = 1 To 20
Print Tab(((i - 1) Mod 5) * 11); a(i);
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 Len(a(i)) > Len(a(imax)) Then
imax = i
End If
Next i
Print "最长的字符串:"; a(imax)
End Sub
第7,8题答案在教材中找。
第9题“自定义变量”含义不明,暂时无法回答。
第5,10 题 [暂略]
习题六
第1,2,6-8题答案可在教材中找到。
3.指出过程说明中的错误
(1)Sub子过程不应该定义类型
(2)函数与形式参数不应该同名
(3)数组作为形式参数时,应使用传地址方式,不可使用传值(ByVal)
(4)形式参数应该是变量或数组名,不可以是一个数组元素
4.指出调用过程语句的错误
(1)无语法错误,但因形参sum所对应的实参是常量3,故计算结果无法传递给主调程序。
(2)实参变量c与形参sum的类型不一致。
(3)类似于(1),形参sum所对应的实参是表达式a+b,故计算结果无法传递给主调程序。
(4)类似于(1)和(2),形参sum所对应的实参是表达式Sqr(c),故计算结果无法传递给主调程序。另外srq(a)存在语法错误(拼写错)。
(5)与(2)相同,实参c与形参sum的类型不一致。
5.迭代法求平方根
(1)自定义函数的定义及调用
Function FSqr1(a As Single) As Single
Dim x0 As Single, x As Single
x = a
Do
x0 = x
x = (x0 + a / x0) / 2
Loop While Abs(x - x0) > 0.00001
FSqr1 = x
End Function
Private Sub Command1_Click()
Dim x!, y!
x = Val(InputBox("x="))
If x >= 0 Then
y = FSqr1(x)
Print y
End If
End Sub
(2)自定义子过程的定义及调用
Sub FSqr2(a As Single, x As Single)
Dim x0 As Single
x = a
Do
x0 = x
x = (x0 + a / x0) / 2
Loop While Abs(x - x0) > 0.00001
End Sub
Private Sub Command2_Click()
Dim x!, y!
x = Val(InputBox("x="))
If x >= 0 Then
Call FSqr2(x, y)
Print y
End If
End Sub
(3)递归函数及调用 [略]
习题七
第1-9题,答案在教材上找;第10,12-14题,略。
11.检测Ctrl和F3同时按下的代码:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If Shift = 2 And KeyCode = 114 Then MsgBox "HAHA"
End Sub
习题八
第1,2,6,7,9题答案可阅读教材找到。
3.写Open语句
(1) Open "Seqnew.dat" For Output As #1 '重写
或 Open "Seqnew.dat" For Append As #1 '添加
(2)Open "Seqold.dat" For Input As #2
(3)Open "Seqappend.dat" For Append As FreeFile
4.编程,将文件Text.dat 读入变量strTest。
Dim strTest As String
Open "Text.dat" For Input As #2
Do While Not EOF(2)
strTest = strTest + Input(1, #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 EOF(2)
strTemp = Input(1, #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 EOF(2)
strTemp = strTemp + Input(1, #2)
Loop
Print #1, strTemp
Close
习题九
答案在教材上找。
习题十
答案在教材上找
4. 编程语言与xml结合开发的几种方法
xml为结构化数据表示形式,用途很多,如xhtml中对应用,SVG矢量绘图,在Android中控件布局。可以为数据库提供一致对数据表示,屏蔽掉数据库,系统平台对异构性,让异构对解决在本地完成,就是将数据的存储和数据的表示相互独立。而且xml为纯文本格式,有利于数据交换。你在程序中可以用XML API操作xml文档存储的结构化数据。
5. c++程序设计基础教程课后答案(清华大学出版社郑莉 董渊着)
第 一 章 概述
1-1 简述计算机程序设计语言的发展历程。
解:
迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2 面向对象的编程语言有哪些特点?
解:
面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。C++语言是目前应用最广的面向对象的编程语言。
1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?
解:
结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
1-4 什么是对象?什么是面向对象方法?这种方法有哪些特点?
解:
从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。面向对象方法中的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位,由一组属性和一组行为构成。
面向对象的方法将数据及对数据的操作方法放在一起,作为一个相互依存、不可分离的整体--对象。对同类型对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口,与外界发生关系,对象与对象之间通过消息进行通讯。这样,程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。通过实现继承与多态性,还可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。
面向对象方法所强调的基本原则,就是直接面对客观存在的事物来进行软件开发,将人们在日常生活中习惯的思维方式和表达方式应用在软件开发中,使软件开发从过分专业化的方法、规则和技巧中回到客观世界,回到人们通常的思维。
1-5 什么叫做封装?
解:
封装是面向对象方法的一个重要原则,就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。
1-6 面向对象的软件工程包括哪些主要内容?
解:
面向对象的软件工程是面向对象方法在软件工程领域的全面应用,它包括面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容。
1-7 简述计算机内部的信息可分为几类?
解:
计算机内部的信息可以分成控制信息和数据信息二大类;控制信息可分为指令和控制字两类;数据信息可分为数值信息和非数值信息两类。
1-8 什么叫二进制?使用二进制有何优点和缺点?
解:
二进制是基数为2,每位的权是以2 为底的幂的进制,遵循逢二进一原则,基本符号为0和1。采用二进制码表示信息,有如下几个优点:1.易于物理实现;2.二进制数运算简单;3.机器可靠性高;4.通用性强。其缺点是它表示数的容量较小,表示同一个数,二进制较其他进制需要更多的位数。
1-9 请将以下十进制数值转换为二进制和十六进制补码:
(1)2 (2)9 (3)93
(4)-32 (5)65535 (6)-1
解:
(1) (2)10 = (10)2 = (2)16
(2) (9)10 = (1001)2 = (9)16
(3) (93)10 = (1011101)2 = (5D)16
(4) (-32)10 = (11100000)2 = (E0)16
(5) (65535)10 = (11111111 11111111)2 = (FFFF)16
(6) (-1)10 = (11111111 11111111)2 = (FFFF)16
1-10 请将以下数值转换为十进制:
(1)(1010)2 (2)(10001111)2 (3)(01011111 11000011)2
(4)(7F)16 (5)(2D3E)16 (6)(F10E)16
解:
(1)(1010)2 = (10)10
(2)(10001111)2 = (143)10
(3)(01011111 11000011)2 = (24515)10
(4)(7F)16 = (127)10
(5)(2D3E)16 = (11582)10
(6)(F10E)16 = (61710)10
1-11 简要比较原码、反码、补码等几种编码方法。
解:
原码:将符号位数字化为 0 或 1,数的绝对值与符号一起编码,即所谓"符号——绝对值表示"的编码。
正数的反码和补码与原码表示相同。
负数的反码与原码有如下关系:
符号位相同(仍用1表示),其余各位取反(0变1,1变0)。
补码由该数反码的最末位加1求得。
第 二 章 C++简单程序设计
2-1 C++语言有那些主要特点和优点?
解:
C++语言的主要特点表现在两个方面,一是全面兼容C,二是支持面向对象的方法。C++是一个更好的C,它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。 C++语言最重要的特点是支持面向对象。
2-2 下列标识符哪些是合法的?
Program, -page, _lock, test2, 3in1, @mail, A_B_C_D
解:
Program, _lock, test2, A_B_C_D是合法的标识符,其它的不是。
2-3 例2.1中每条语句的作用是什么?
#include <iostream.h>
void main(void)
{
cout<<"Hello!\n";
cout<<"Welcome to c++!\n";
}
解:
#include <iostream.h> //指示编译器将文件iostream.h中的代码
//嵌入到该程序中该指令所在的地方
void main() //主函数名,void 表示函数没有返回值
{ //函数体标志
cout<<"Hello!\n"; //输出字符串Hello!到标准输出设备(显示器)上。
cout<<"Welcome to c++!\n"; //输出字符串Welcome to c++!
}
在屏幕输出如下:
Hello!
Welcome to c++!
2-4 使用关键字const而不是#define语句的好处有哪些?
解:
const定义的常量是有类型的,所以在使用它们时编译器可以查错;而且,这些变量在调试时仍然是可见的。
2-5 请写出C++语句声明一个常量PI,值为3.1416;再声明一个浮点型变量a,把PI的值赋给a。
解:
const float PI = 3.1416;
float a = PI;
2-6 在下面的枚举类型中,Blue的值是多少?
enum COLOR ;
解:
Blue = 102
2-7 注释有什么作用?C++中有哪几种注释的方法?他们之间有什么区别?
解:
注释在程序中的作用是对程序进行注解和说明,以便于阅读。编译系统在对源程序进行编译时不理会注释部分,因此注释对于程序的功能实现不起任何作用。而且由于编译时忽略注释部分,所以注释内容不会增加最终产生的可执行程序的大小。适当地使用注释,能够提高程序的可读性。在C++中,有两种给出注释的方法:一种是延用C语言方法,使用"/*"和"*/"括起注释文字。另一种方法是使用"//",从"//"开始,直到它所在行的行尾,所有字符都被作为注释处理。
2-8 什么叫做表达式?x = 5 + 7是一个表达式吗?它的值是多少?
解:
任何一个用于计算值的公式都可称为表达式。x = 5 + 7是一个表达式,它的值为12。
2-9 下列表达式的值是多少?
1. 201 / 4
2. 201 % 4
3. 201 / 4.0
解:
1. 50
2. 1
3. 50.25
2-10 执行完下列语句后,a、b、c三个变量的值为多少?
a = 30;
b = a++;
c = ++a;
解:
a:32 ; b:30 ; c:32;
2-11 在一个for循环中,可以初始化多个变量吗?如何实现?
解:
在for循环设置条件的第一个";"前,用,分隔不同的赋值表达式。
例如:
for (x = 0, y = 10; x < 100; x++, y++)
2-12 执行完下列语句后,n的值为多少?
int n;
for (n = 0; n < 100; n++)