vb答案.docx
- 文档编号:10137749
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:14
- 大小:21.50KB
vb答案.docx
《vb答案.docx》由会员分享,可在线阅读,更多相关《vb答案.docx(14页珍藏版)》请在冰豆网上搜索。
vb答案
习题一
2.需要重新安装
3.VB启动时可以看到
6.保存两个文件。
窗体文件(FRM)-工程文件(VBP)。
7.默认保存在VB6.EXE所在的文件夹。
8.帮助系统要另外安装(MSDN)
其他题目答案可在教材中找到。
习题二
第1-9题答案在教材中找。
10.启动窗体时将命令按钮定位在窗体中央的代码
PrivateSubForm_Load()
Command1.Left=Form1.ScaleWidth/2-Command1.Width/2
Command1.Top=Form1.ScaleHeight/2-Command1.Height/2
EndSub
11.图片文件在C:
\ProgramFiles\MicrosoftVisualStudio\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>0Andy>0Orx<0Andy<0 或 x*y>0
(4)x是5或7的整数倍 xMod5=0OrInt(x/7)=x/7
(5)将两位整数x的个位与十位对换 x\10+(xMod10)*10
(6)四舍五入取两位小数 Round(x,2)
(7)字符变量C是字母字符(不区分大小写)——准确地说是:
字符变量C的第一个字符是字母
C>="A"AndC<="Z"OrC>="a"AndC<"z"
或 UCase(C)>="A"AndUCase(C)<="Z"
或 LCase(C)>="a"AndLCase(C)<="z"
(8)字符变量S第5个字符起取6个字符 Mid(S,5,6)
(9)10≤x<20 10<=xAndx<20
(10)x,y至少有一个小于z x (11)x,y都大于z x>zAndy>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: \ProgramFiles\MicrosoftOffice\OFFICE11\winword.exe",1) '启动Word 说明: “画图”是Windows本身提供的程序,可以省略路径。 8.答: 单精度浮点型 习题四 第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 7.写条件语句 (1) DimcAsString c=InputBox("c=") IfMid(c,3,1)="C"Then MsgBox"Yes" Else MsgBox"No" EndIf (2) #使用If语句 DimxAsSingle,yAsSingle x=Val(InputBox("x=")) Ifx>20Then y=x^2+3*x+2 ElseIfx>=10Then y=Sqr(3*x)-2 ElseIfx>0Then y=1/x+Abs(x) EndIf Print"y=";y #使用SelectCase语句 DimxAsSingle,yAsSingle x=Val(InputBox("x=")) SelectCasex CaseIs>20 y=x^2+3*x+2 CaseIs>=10 y=Sqr(3*x)-2 CaseIs>0 y=1/x+Abs(x) EndSelect Print"y=";y (3) #使用If语句 DimxAsSingle,yAsSingle,zAsSingle,MaxAsSingle x=Val(InputBox("x=")) y=Val(InputBox("y=")) z=Val(InputBox("z=")) Max=x Ify>MaxThenMax=y Ifz>MaxThenMax=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.可以定一个较大的循环次数,在循环体中根据条件用ExitFor退出。 但这种情况通常用DoWhile循环控制。 12.编程(并非唯一正确答案) (1) DimiAsInteger,sAsInteger Fori=1To10 s=s+(i+1)*(2*i+1) Nexti Print"s=";s (2) DimiAsInteger,n3AsInteger,n7AsInteger Fori=1To100 IfiMod3=0Thenn3=n3+1 IfInt(i/7)=i/7Thenn7=n7+1 Nexti Print"1-100中3的倍数有";n3;"个" Print"1-100中7的倍数有";n7;"个" (3) Dims1AsString,s2AsString,iAsInteger s1=InputBox("InputString") s2="" Fori=1ToLen(s1) s2=Mid(s1,i,1)+s2 Nexti Print"原序: ";s1 Print"反序: ";s2 或 Fori=Len(s1)To1Step-1 s2=s2+Mid(s1,i,1) Nexti 13.输出字符串“10100”。 该程序功能是将十进制数转化为二进制。 说明: 要理解该程序需要了解数制转换的计算方法(有兴趣者参看XX百科 14.运行时输出 22 484 该程序功能是求x和y最大公约数和最小公倍数。 说明: 此算法称为“辗转相减法”。 可对照例4.17的辗转相除(辗转求余)法。 15.[50,100]间的20个随机数,求最大值、最小值、平均值。 DimxAsInteger,sumAsInteger,averAsSingle Dimn%,i%,max%,min% Randomize max=50: min=100: n=20 Fori=1Ton x=Int(Rnd*51+50) List1.AddItemx sum=sum+x Ifx>maxThenmax=x Ifx Nexti aver=sum/n Print"最大值: ";max,"最小值: ";min,"平均值: ";aver 习题五 1.指定数组的默认下界 OptionBase1 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个元素 以矩阵的格式输出二维数组: Fori=-1To2 Forj=0To3 Printa(i,j); Nextj Print Nexti 或写成更加通用的代码形式: Fori=LBound(a,1)ToUBound(a,1) Forj=LBound(a,2)ToUBound(a,2) PrintTab(j*8);a(i,j); Nextj Print Nexti 6.一维字符数组 Dima(1To20)AsString PrivateSubCommand1_Click() ' (1)随机产生字符串 DimiAsInteger,jAsInteger,nAsInteger,cAsString*1 Randomize Fori=1To20 a(i)="" '将第i个元素清空 n=Int(Rnd*10+1) '产生[1,10]的随机数 Forj=1Ton 'a(i)中有n个字符 c=Chr(Int(Rnd*26+97)) '随机产生字母97是字母a的ASCII码 a(i)=a(i)+c Nextj Nexti EndSub PrivateSubCommand2_Click() ' (2)输出字符串 DimiAsInteger Fori=1To20 PrintTab(((i-1)Mod5)*11);a(i); IfiMod5=0ThenPrint Nexti EndSub PrivateSubCommand3_Click() '(3)最长的字符串 DimiAsInteger,imaxAsInteger imax=1 Fori=2To20 IfLen(a(i))>Len(a(imax))Then imax=i EndIf Nexti Print"最长的字符串: ";a(imax) EndSub 第7,8题答案在教材中找。 第9题“自定义变量”含义不明,暂时无法回答。 习题六 第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)自定义函数的定义及调用 FunctionFSqr1(aAsSingle)AsSingle Dimx0AsSingle,xAsSingle x=a Do x0=x x=(x0+a/x0)/2 LoopWhileAbs(x-x0)>0.00001 FSqr1=x EndFunction PrivateSubCommand1_Click() Dimx! y! x=Val(InputBox("x=")) Ifx>=0Then y=FSqr1(x) Printy EndIf EndSub (2)自定义子过程的定义及调用 SubFSqr2(aAsSingle,xAsSingle) Dimx0AsSingle x=a Do x0=x x=(x0+a/x0)/2 LoopWhileAbs(x-x0)>0.00001 EndSub PrivateSubCommand2_Click() Dimx! y! x=Val(InputBox("x=")) Ifx>=0Then CallFSqr2(x,y) Printy EndIf EndSub (3)递归函数及调用[略] 习题七 第1-9题,答案在教材上找;第10,12-14题,略。 11.检测Ctrl和F3同时按下的代码: PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger) IfShift=2AndKeyCode=114ThenMsgBox"HAHA" EndSub 习题八 第1,2,6,7,9题答案可阅读教材找到。 3.写Open语句 (1)Open"Seqnew.dat"ForOutputAs#1 '重写 或 Open"Seqnew.dat"ForAppendAs#1 '添加 (2)Open"Seqold.dat"ForInputAs#2 (3)Open"Seqappend.dat"ForAppendAsFreeFile 4.编程,将文件Text.dat读入变量strTest。 DimstrTestAsString Open"Text.dat"ForInputAs#2 DoWhileNotEOF (2) strTest=strTest+Input(1,#2) Loop 8.本课程不涉及二进制文件。 故此处以顺序文件读写方式编程。 另外合并的结果可以是合并到其中某一个文件,也可以是合并到一个新的文件,此处代码是合并到其中一个文件F1.txt。 '方法一,在2号文件一次读一个字符并写入1号文件 DimstrTempAsString*1 Open"d: \F1.txt"ForAppendAs#1 Open"d: \F2.txt"ForInputAs#2 DoWhileNotEOF (2) strTemp=Input(1,#2) Print#1,strTemp; '注意结尾有分号,否则每个字符一行 Loop Close '方法二,在2号文件一次读一个字符并累加,最后将累加结果写入1号文件 DimstrTempAsString '注意方法一变量定义的区别 Open"d: \F1.txt"ForAppendAs#1 Open"d: \F2.txt"ForInputAs#2 strTemp="" DoWhileNotEOF (2) strTemp=strTemp+Input(1,#2) Loop Print#1,strTemp Close 习题九 答案在教材上找。 习题十 答案在教材上找。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb 答案