您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > Tcl脚本编程测试题
1/7Tcl/TkQuizSheetTime:2hoursPartI.FillOut.(10%)1.Tclisfor__________________________________,it’sa___________language.2.生成pkg_Index.tcl文件的命令是________________________。3.在执行packagerequire命令的时候,该命令会根据变量_________查找相关package所在路径。4.Tcl命令出错时错误信息一般存放在全局变量___________中。5.用命令_____________________可以列出数组中元素名称。6.可将一个字符串中的每个字符分开来的list命令是______;如果字符串是“HappyDay”,则完整的命令为______________________。如果要在这个字符串中每个字符之间插入一个“/”,则可以使用上面的命令和另一个list命令______来共同完成,完整命令为____________________________________________________________________________。7.名字空间输出过程/函数的命令是namespace_________________。而从名字空间输入过程的命令则是_____________________。8.在读取文件时,判断已到文件结尾的命令是_____________。9.获取过程的脚本的命令是info______;而获取过程的参数的命令是____________。判断一个变量是否存在的命令是__________。10.可以用来装载并执行脚本文件的Tcl命令是____________。11.环境变量被存放在一个特殊数组中,即________________。12.根据模式说明来格式化字符串的命令是________________,而根据模式来解析字符串的命令是_______________。PartII.Choicecorrectanswer(s)forthefollowingreviewquestions.(24%)1.Toopenafileforreadingandwriting,whichcommandisright?[](1%)A.open$filerwB.open$filer+C.open$filewD.open$filew+2.Inwhichsentence(s)thevariableafter(first)“$”canbereplacedbyit’sactualvalue?[](3%)A.catch{puts{Mynameis$name}}errB.regexp{mynameis$name}“I’magirl,mynameisQQ”matchC.setstr{Mynameis$name}D.eval{puts“Mynameis$name”}E.setvarname;puts“Mynameis$$var”F.if{$name=“QQ”}{puts“$nameisbiggerthanQQ”}G.subst{a={{$name}},b=[expr3*10]}H.switch$X{“$name”{putsok}…}3.Tofindoutcommandswhichcanbeusedtodestroyanarray“arrParams”.[]A.unsetarrParamsB.arrayunsetarrParamsC.destroyarrParamsD.forgetarrParams2/74.Whichcharacterislogicaland?[]A.||B.&C.|D.&&5.Pickoutthecorrectcommand(s)whoseresultisaninteger?[]A.expr10/2.0B.expr10/2C.exprint(10/2.0)D.exprint([expr10/2.0])6.Whichcommandcanbeusedtoconverthexvalue“0x23”intoatendigitallengthintegerwithallzerofilledoutatleftside?哪个命令可以用来将十六进制数“0x23”转换为10位长度的十进制整数,且右对齐,不足十位则左侧补零,即0000000035?[]A.format“%10d”0x23B.format“%-10d”0x23C.format“%010d”0x23D.format“%-010d”0x237.对于“arraynamesarrParamslif*”正确的说法是[]A.“lif*”是通配符形式而非正则表达式B.与A相反C.既是通配符,又是正则表达式D.以上描述都不对8.以下那些命令也可以用正则表达式形式?[]A.lsearchB.stringmatchC.arraynamesD.switch9.一个脚本文件中定义了若干个过程(函数),形式为procfuncName{…}{#Procedurebody}以下哪个正则表达式可以从脚本文件中将过程名提取出来?A.regexp{^[\t]*?proc[\t]+([a-zA-Z0-9\-_]+)[\t]+\{.*?\}[\t]\{}$strmatchfuncB.regexp{proc[\t]+([a-zA-Z0-9\-_]+)[\t]+\{.?\}[\t]\{}$strmatchfuncC.regexp{proc[]+?[a-zA-Z0-9\-_]+?[]+\{*\}[]\{}$strmatchfunc10.代表标准错误输出的是[]A.stdinB.stdoutC.stderr11.代表命令行参数个数的变量是:[]A.argvB.argv0C.argc3/7D.args12.下面那些命令会对变量直接操作而更改其值:[]A.appendB.concatC.lappendD.linsertPartIII.TrueorFalse.(10%)1.uplevel1是global即最上一级的下一级,而uplevel#1则是本级的上一级。[]2.upvar中如果level不指定则默认为1,即本级的上一级;而0则表示全局变量。[]3.lappenda{abc}和seta[concat$a{abc}]的结果是一样的。[]4.环境变量数组env在子解释器中可以直接使用。[]5.子解释器就是一个单独线程。[]6.正则表达式中*、+和?具有贪婪性,它们会尽可能多的匹配字符,为了让它们进行非贪婪匹配,可以通过在其后加一个问号“?”的方法来实现。但此非唯一方法。[]7.列表也是字符串,所以可用字符串命令来操作和处理。[]8.数组是特殊的字符串,可以用字符串命令来处理。[]9.用variable而非global定义的名字空间的全局变量只能在本名字空间内可见。[]10.在多重循环控制语句中,最内层循环的break命令只会中断该重循环,而不会中断外层循环.[]PartIV.Answerthefollowingquestions(21%)1.试列举两种可用来比较字符串大小的方法或命令。(5%)2.“stringcompare”,“stringequal”和“stringmatch”的输出结果有什么异同?(5%)4/73.解释一下正则表达式中关于“?”、“+”与“*”的“贪婪”和“非贪婪”性,并举例说明和比较。(6%)4.论述对Tcl中的“命令解释器”和“子命令解释器”的理解。(5%)PartV.WritingLab.(40%)1.用after命令和嵌套函数设计一个时钟函数。要求:每隔1秒在终端打印出当时时间,格式为“日期/时:分:秒”。输出结果如下:[10%]2006-6-21/12:10:022006-6-21/12:10:03……2.在设计测试脚本过程中,经常需要对一定范围内的IP地址按照一定步长进行遍历。试设计这样一个函数,将给定的IP地址增加一个步长并返回新的IP地址。输入参数为初始IP地址和步长。初始IP地址,步长和新IP地址都是点分十进制IP地址。(提示:每段IP地址可视为255进制,即范围是0到255。注意进位的判断)[15%]2.1用伪语言或者流程图描述处理流程。[5%]5/72.2完成代码。[10%]procincr_ip_addr{ip_addrstep}{setnew_ip_addr“”#fillyourscriptshere6/7return$new_ip_addr}#Examplessetnew_ip_addr[incr_ip_addr10.8.9.10.0.0.3];#new_ip_addrshouldbe10.8.9.4setnew_ip_addr[incr_ip_addr10.8.9.2540.0.0.5];#new_ip_addrshouldbe10.8.10.3,7/7#because254plus5isbiggerthan2553.指出下面脚本中的错误并改正。[5%]3.1switch语句[1%]switch-exact--$result{#TochecktheresultTRUE{#Thisistrue.putsTRUE}FALSE{putsFALSE}UNKNOW-default{putsUNKNOWvalue}}3.2在字符串中搜索出IP地址。IP地址的每部分可能为1到3位数字[2%]if{[regexp{[0-9]{3,1}.[0-9]{3,1}.[0-9]{3,1}.[0-9]{3,1}}$strmatch]}{puts“theIPaddressis$match”}3.3[2%]catch{execls}errStrputs“Execut“exec”commanderror.ThereasoniserrStr”3.4在unix系统中,独立Tcl/Tk脚本的开始头如何编写?(假设unixshell为/bin/sh)(5%)#!/bin/sh_____________________________________3.5(Optional)试用expect语言编写一段telnet登录脚本:登录成功的prompt是Hello用户名出错信息是:UnknownUserNamePassword出错信息是:IncorrectPassword
本文标题:Tcl脚本编程测试题
链接地址:https://www.777doc.com/doc-2851493 .html