Tcl 脚本编程测试题
tcljava笔试题及答案

tcljava笔试题及答案1. 请简述Java中的异常处理机制。
答案:Java中的异常处理机制是通过try、catch、finally和throw 关键字实现的。
try块用于包裹可能抛出异常的代码,catch块用于捕获并处理异常,finally块则无论是否发生异常都会执行,通常用于资源清理。
2. 在Java中,什么是接口?请举例说明。
答案:接口是Java中一种完全抽象的结构,它包含常量和抽象方法声明。
接口不能直接实例化,但可以被实现(implement)。
例如,`java.io.Serializable`是一个接口,它允许对象实现序列化。
3. 描述Java中集合框架的基本结构。
答案:Java集合框架包含两大类集合:单列集合和双列集合。
单列集合有List、Set和Queue,双列集合有Map。
List允许重复元素,Set 不允许重复元素,Queue是队列的实现,Map存储键值对。
4. Java中如何实现多线程?答案:Java中实现多线程有两种方式:继承Thread类或实现Runnable接口。
继承Thread类需要重写run方法,而实现Runnable 接口需要实现run方法,并通过Thread类的对象来调用。
5. 解释Java中的垃圾回收机制。
答案:Java中的垃圾回收机制是指自动回收不再被引用的对象占用的内存。
Java虚拟机(JVM)负责监控对象的引用,当对象没有任何引用时,垃圾回收器会回收这些对象占用的内存。
6. 请解释Java中的泛型。
答案:Java中的泛型是支持泛型编程的机制,允许在编译时进行类型检查,以确保类型安全。
泛型可以用于类、接口和方法,例如`List<String>`表示一个字符串列表。
7. 在Java中,什么是注解(Annotation)?答案:注解是一种特殊的接口,用于提供关于代码的元数据。
注解可以用于类、方法、变量等,并且可以在运行时通过反射获取。
8. 描述Java中的反射机制。
tcl 面试题

tcl 面试题TCL面试题一、介绍TCLTCL(Tool Command Language)是一种脚本语言,广泛应用于软件开发、自动化测试、嵌入式系统等领域。
TCL语言简洁、易于学习和使用,具有良好的可扩展性和跨平台性。
本文将为您介绍TCL语言的特点、应用和一些常见的面试题。
二、TCL语言的特点1. 简洁易学:TCL语法简单,关键字较少,易于学习和上手。
它的脚本语言特性使得编写和修改代码更加高效。
2. 可扩展性:TCL提供了丰富的库和扩展接口,方便开发者扩展其功能,满足各种需求。
例如,通过Tcl Extension Architecture(TEA)可以扩展C/C++库,使其能够被TCL脚本调用。
3. 跨平台性:TCL可以在多个操作系统上运行,包括Windows、Linux、macOS等,使得开发人员能够在不同平台上完成相同的工作。
4. 高度集成:TCL能够与其他编程语言(如C、C++、Python)进行混合编程,通过调用其它语言的库和函数,增强了TCL的功能。
三、TCL在软件开发中的应用1. 自动化测试:TCL语言可以通过调用系统命令和控制外部设备进行自动化测试,提高测试效率和一致性。
例如,使用Expect库可以模拟用户输入和处理输出,实现自动交互。
2. 网络编程:TCL提供了强大的网络编程能力,可用于开发网络服务器、客户端和网络管理工具。
它支持TCP/IP、HTTP、FTP等协议,并提供了相应的库和命令。
3. GUI开发:利用Tcl/Tk库,可以轻松实现图形用户界面(GUI)应用程序的开发。
它提供了丰富的控件和布局管理器,可以适应不同平台的界面需求。
4. 脚本化工具:TCL语言可用于开发脚本化工具,简化复杂任务的操作。
例如,构建自定义的构建系统、日志分析工具和数据处理工具等。
四、一些常见的TCL面试题1. 什么是TCL?它的特点是什么?2. 如何在TCL中声明变量?有哪些不同的数据类型?3. 如何定义和使用函数(过程)?4. 如何处理文件输入和输出?5. 如何使用TCL进行错误处理?有哪些异常处理机制?6. 如何在TCL中进行字符串操作?如何连接和截取字符串?7. 如何使用TCL进行正则表达式匹配和替换?8. 如何在TCL中进行条件判断和循环控制?9. 如何调用系统命令和外部程序?10. 如何处理列表和数组数据类型?五、总结本文对TCL语言进行了简要介绍,包括其特点、应用领域以及常见的面试题。
TCL编程语言考试及答案

TCL编程语言考试及答案本次TCL编程语言考试共分为三个部分,包括选择题、填空题和编程题。
答案均在文末给出,仅供参考。
选择题TCL是哪一种类型的编程语言?A. 解释型语言B. 编译型语言C. 汇编语言D. 机器语言TCL语言的主要用途是什么?A. 网络编程B. 数据库编程C. 图形用户界面编程D. 批处理编程下面哪个命令可以在TCL中输出一条消息?A. printB. putsC. echoD. writeTCL中的变量名称需要以什么符号开头?A. $B. %C. #D. &下面哪个命令可以在TCL中定义一个变量?A. defineB. varC. setD. declare填空题TCL中的______命令可以将一个字符串转换为一个整数。
TCL中的______命令可以用于循环执行一段代码。
在TCL中,使用______可以将一个字符串进行分割。
TCL中使用______命令可以打开一个文件并读取其中的内容。
在TCL中,使用______命令可以将一个字符串转换为列表。
编程题编写一个TCL程序,实现将一个字符串进行反转并输出的功能。
例如,输入"hello world",输出"dlrow olleh"。
编写一个TCL程序,实现将一个列表中的元素进行去重并输出的功能。
例如,输入{1 2 3 3 4 5 5},输出{1 2 3 4 5}。
编写一个TCL程序,实现将一个文件中的所有单词按照字母顺序排序并输出的功能。
例如,输入文件内容为"hello world",输出"dehllloorw"。
答案选择题:1. A 2. C 3. B 4. A 5. C填空题:1. scan 2. while 3. split 4. read 5. list编程题:1.set str "hello world" set len [string length $str] set result "" for {set i $len} {$i >= 0} {incr i -1} { append result [string index $str $i] } puts $resultPlain Textset nums {1 2 3 3 4 5 5} set result {} foreach num $nums { if {$num ni $res ult} { lappend result $num } } puts $resultPlain Textset file [open "filename.txt" r] set content [read $file] close $file set w ords [split $content] set sorted_words [lsort $words] puts [join $sorted_wo rds ""]CopyCaptionPlain Text。
TCL自动化测试脚本语言编程试题(附答案) - 副本

一填空题(每题2分,共10分)1.以下对自动化测试描述不正确的是?A.自动化测试可替代手工测试B.自动化测试发现的故障数不及手工测试C.自动化测试对测试质量的依赖性大D.自动化测试应在周期长的项目中引入2.自动化测试分析时,不该做的分析是下面哪一个?A.可行性分析B.测试需求分析C.抽样demo分析D.软件成本分析3.下列对自动化测试用例设计原则描述中,不正确的是?A.自动化测试用例的选择一般以“反向”为主B.自动化测试用例的范围往往是核心业务流程C.不是所有的手工测试用例都可以使用自动化测试来实现D.自动化测试用例不需要每个步骤都输出预期结果4.自动化测试工具QTP支持的语言是下面哪一种?A.JavaB.RubyC.PythonD.VBScript5.QTP工具中用于实现QTP说明书功能的是哪个键?A.F1B.F2C.F3D.F5二简答题(每题5分,共50分)注:为区分特殊符号,本次考试需要打印输出的内容在卷面中以粗斜体显示!1.自动化测试中,测试脚本可分为哪5种?1)线性脚本2)结构化脚本3)可共享脚本4)数据驱动脚本5)关键字驱动脚本2.自动化测试优势1)回归测试更方便、可靠;2)可运行更多、繁琐的测试,且高校、快速;3)可执行一些对于手工测试来说相当困难或根本做不到的测试;4)更好的利用资源,使资源的使用更有价值;5)具有一致性和可重复性;6)自动化测试脚本完全具有服用性;7)使软件更有信任度;8)多环境下测试;3.画出自动化测试流程图:4.打印输出“Hello Tcl!”;% puts "Hello Tcl!"5.定义变量a=10、b=20、c=a*b,输出变量c;% set a 10% set b 20% set c [expr $a * $b]6.计算字符串“My name is TCL”的长度;% puts stdout "The length of \"$a\" is: [string length $a]"7.已知本地E:\TCL\TCL_setup目录下存在脚本文件exec.tcl,请给出调用该脚本的方法;% cd E:\\TCL\\TCL_setup% source exec.tcl8.对数字5进行左移2位运算,并将计算结果赋值给变量n;% set n [expr 5<<2]9.计算2^16,并将结果取整显示;% expr int(pow(2,16))10.取5-10之间的随机数;% set min 5% set max 10% expr int(rand()*($max-$min+1)+$min)11.将字符串“again”追加至变量a尾部,输出追加后的字符串“see u again”;% set a "see u"% set b again% append a \ $bsee u again12.重新排列字符串"love" "game" "i" "this" "!";% set var1 [format "%3\$s %1\$s %4\$s %2\$s %5\$s" "love" "game" "i" "this" "!"]13.提取数字1-20中的质数,并按照升序排列输出;% set res [format "%1\$s %3\$s %5\$s %7\$s %11\$s %13\$s %17\$s %19\$s" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]14.用科学计数法表示数字80000,并记录在由ascii码转换后的符号()内;% set c [format %c%e%c 40 80000 41](8.000000e+004)15.获得字符串“hello”中字符e的整数值;% binary scan "hello" "cc" var1 var2% puts $var216.将字符串“sorry”中的字符o替换为字符@;% string replace sorry 1 1 @17.已知列表a [my name is tom],输出列表中的tom字符串;% set a "my name is tom"% puts [lindex $a 3]18.使用列表遍历指令输出下面内容:我喜欢吃: 苹果我喜欢吃: 梨子我喜欢吃: 香蕉我喜欢吃: 西瓜set fruit {苹果梨子香蕉西瓜}foreach f $fruit {puts "我喜欢吃: $f"}19.遍历列表输出下面内容:学号=1 姓名=tom 年龄=23 班级=C1学号=2 姓名=jack 年龄=22 班级=C2学号=3 姓名=nacy 年龄=21 班级=C3学号=4 姓名=peter 年龄=22 班级=C4set id {1 2 3 4}set name {tom jack nacy peter}set age {23 22 21 22}set classes {C1 C2 C3 C4}foreach a $id b $name c $age d $classes {puts [format "学号=%-s 姓名=%-s 年龄=%-s 班级=%-s" $a $b $c $d] }20.已知整数123,分别取出个位数,十位数和百位数;% set i 123% set a [expr $i/100]% set b [expr $i%100/10]% set c [expr $i%10]% puts $a,$b,$c21.将下列代码未完成的地方补充完整;set ids(a) 192set ids(b) 168set ids(c) 5set ids(d) 100set lst [ array get ids ]puts $lstforeach { x y } $lst {puts "x:$x y:$y"}提示:以上代码输出结果为:x:4 y:100x:2 y:168x:3 y:522.使用if语句实现功能:变量a为10,变量b为20,若a+b>20,输出结果,反之给出错误提示信息“Error”;set i 10set j 20if {[expr $j+$i]>20} {set x [expr $i+$j]puts $x} else {puts "Error"}三代码编程题(每题10分,共40分)1.求水仙花数(水仙花数是个三位数,比如153,这个数具有个特点,153=1^3+5^3+3^3) set i 100while {$i<1000} {set a [expr $i/100]set b [expr $i%100/10]set c [expr $i%10]set d [expr int(pow($a,3)+pow($b,3)+pow($c,3))]if {$i==$d} {puts $i}incr i}2.青蛙在一口77米深的井底往上爬,白天爬7米,夜里下落5米,问第几天能爬出井口?set cn 7set day 1while {$cn<=77} {incr cn -5incr day 1incr cn +7}puts $day3.求出1-100之间所有正整数之和,包含1和100;set i 1set sum 0while {$i<=100} {set sum [expr $i+$sum]#set i [expr $i+1]}puts $sum4.输出1-100之间能被5整除的数;set i 1while {$i<=100} {set result [expr $i%5]if {$result==0} {puts $i}incr i}5.打印9行9列左上直角三角形;proc leftup {b} {for {set y 0} {$y<$b} {incr y} {set line ""for {set x 0} {$x+$y<9} {incr x} { append line *}puts $line}}puts [leftup 9]6.编写代码输出十进制转二进制的函数;proc d2b {d} {set bs ""while {$d!=0} {set y [expr $d%2]set d [expr $d/2]set bs $y$bs}return $bs}puts [d2b 77]7.编写代码判断某个1993年是否为闰年;set i 1993set a [expr $i%4]set b [expr $i%100]set c [expr $i%400]if { $a==0 | $b==0 & $c==0 } {puts "\"$i\"年是闰年"} else {puts "\"$i\"年不是闰年"}8.打印9行9列右下直角三角形。
TCL_TK进阶练习

脚本,对 TCl 程序进行初始化。
2.2.3. Tcl 过程 prn 和 setenv
在初始化文件“~/.myapp.tcl”中可定义若干过程(porc) ,每个过程可在以后被调用,相当 一个新的 Tcl 命令。在“~/.myapp.tcl”定义了两个过程 prn 和 setenv。 过程 prn,是对命令 puts 扩展。它的用法为: prn str str str … prn 将把该命令所跟个数不限参数显示于屏幕上。如 prn Welcom you to use my TCL: $argv0 过程 setenv 是仿 csh 设计的一个过程,用于设置或显示环境变量。Tcl 继承 UNIX 的全部环 境变量,并用一维数组 env 表示,环境变量的名作为数组下标,该下标数组元素的值就是相应环 境变量的值。setenv 的用法是: setenv [key [value]] 它可跟 0~2 个参数。参数个数为 2,为设置一个新的环境变量,第一个参数是环境变量的 名,第二个参数是该环境变量的值;参数个数为 1,用于显示与此参数相匹配的所有环境变量; 参数个数为 0,为显示所有环境变量。
2.4.2. 在 C 中对 Tcl 中全局变量的读写
random 命令仍由名为 tclRandom 的 C 函数来实现,由于设计的功能的要求,需要按读写 Tcl 中的全局变量 range。在此函数中从 Tcl 中取变量 range 的值(字符串)由函数 TclGetVar 实 现,再用函数 Tcl_GetInt 将其转换为整数(int range) 。有关程序段为: int range; Tcl_GetInt(interp, Tcl_GetVar(interp, "range", TCL_GLOBAL_ONLY), &range); 当新的随机数 rand 产生之后,一方面将其值写至 interp->result(显示于屏幕) ,接着用函数
初级程序测试题及答案

初级程序测试题及答案一、选择题(每题1分,共10分)1. 以下哪个是Python语言的标识符?A. 2variableB. variable2C. variable-twoD. variable#22. 在C语言中,以下哪个语句可以打印出"Hello, World!"?A. print("Hello, World!");B. printf("Hello, World!");C. cout << "Hello, World!";D. echo "Hello, World!";3. 假设有一个数组int arr[] = {10, 20, 30, 40}; 该数组的长度是多少?A. 2B. 3C. 4D. 54. 在Java中,以下哪个是正确的数据类型?A. IntegerB. intC. StringD. All of the above5. 以下哪个是JavaScript的全局对象?A. ObjectB. FunctionC. MathD. Global6. 在HTML中,以下哪个标签用于定义文档的头部?A. <head>B. <header>C. <title>D. <h1>7. SQL语句中,用于删除表中的记录的关键字是?A. DELETEB. REMOVEC. ERASED. DROP8. 以下哪个不是CSS的单位?A. pxB. emC. %D. cm9. 在Python中,以下哪个是正确的字典定义方式?A. dict = {"name": "John", "age": 30}B. dict = ("name", "John", "age", 30)C. dict = ['name', 'John', 'age', 30]D. dict = name="John", age=3010. 在JavaScript中,以下哪个方法用于获取数组的长度?A. length()B. getLength()C. size()D. length答案:1. B2. B3. C4. D5. D6. A7. A8. D9. A10. D二、填空题(每空1分,共10分)1. 在Python中,定义一个函数的关键字是________。
脚本编写课后测试题及答案

脚本编写课后测试题及答案一、选择题1. 在编写脚本时,以下哪个不是常用的脚本语言?A. PythonB. JavaScriptC. JavaD. COBOL答案:D2. 在脚本中,以下哪个关键字用于定义一个函数?A. functionB. defC. funcD. method答案:A3. 以下哪个是脚本语言的特点?A. 编译执行B. 静态类型C. 跨平台D. 面向对象答案:C二、填空题4. 脚本语言通常用于________和________任务,可以快速实现自动化。
答案:自动化控制;批量处理5. 在编写脚本时,我们经常使用________来控制程序的流程。
答案:条件语句6. 脚本语言编写的脚本文件通常以________结尾。
答案:特定的扩展名(如.py, .js等)三、简答题7. 简述脚本语言在Web开发中的应用。
答案:脚本语言在Web开发中主要用于实现客户端的动态功能,如用户界面的交互、表单验证、动态内容加载等。
此外,服务器端脚本语言如PHP、Node.js等用于处理服务器请求、数据库交互和动态网页内容的生成。
8. 描述一下什么是脚本语言的解释执行。
答案:脚本语言的解释执行是指脚本语言编写的代码不是在执行前整个编译成机器语言,而是在运行时逐行或逐段的解释执行。
这种方式使得脚本语言具有很好的跨平台特性和灵活性,但通常比编译执行的语言慢。
四、编程题9. 编写一个简单的脚本来计算两个数的和,并打印结果。
答案:```pythondef add_numbers(a, b):return a + bnum1 = 5num2 = 10result = add_numbers(num1, num2)print("两个数的和是:", result)```10. 编写一个脚本,接受用户输入的字符串,然后反转该字符串并输出。
答案:```javascriptlet inputString = prompt("请输入一个字符串:");let reversedString =inputString.split('').reverse().join('');console.log("反转后的字符串是:", reversedString);```五、论述题11. 论述脚本语言在自动化测试中的作用及其优势。
编程测试题目及答案

编程测试题目及答案一、选择题(每题2分,共20分)1. 下列哪个不是Python的内置数据类型?A. 列表(List)B. 元组(Tuple)C. 字典(Dictionary)D. 集合(Set)答案:无2. 在JavaScript中,以下哪个操作符用于条件判断?A. &&B. ||C. ?D. ===答案:D3. 在C++中,以下哪个关键字用于定义类?A. structB. classC. unionD. enum答案:B4. 下列哪个不是Java的访问修饰符?A. publicC. protectedD. global答案:D5. 在HTML中,以下哪个标签用于定义文档的头部?A. <head>B. <body>C. <header>D. <footer>答案:A6. 在SQL中,以下哪个命令用于删除表?A. DELETEB. DROPC. REMOVED. ERASE答案:B7. 在Python中,以下哪个函数用于将列表转换为字符串?A. join()B. split()C. append()D. extend()答案:A8. 在JavaScript中,以下哪个方法用于获取数组的最后一个元素?B. pop()C. shift()D. slice(-1)答案:D9. 在C#中,以下哪个关键字用于实现接口?A. implementsB. extendsC. inheritsD. override答案:A10. 在HTML中,以下哪个属性用于定义图像的来源?A. srcB. altC. widthD. height答案:A二、简答题(每题5分,共30分)1. 解释什么是面向对象编程(OOP)?答案:面向对象编程(OOP)是一种编程范式,它使用“对象”来设计软件。
对象可以包含数据(属性)和代码(方法),它们可以相互交互以解决复杂问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Tcl/Tk Quiz SheetTime: 2 hoursPart I. Fill Out. (10%)1.Tcl is for __________________________________, it’s a ___________ language.2.生成pkg_Index.tcl文件的命令是________________________。
3.在执行package require命令的时候,该命令会根据变量_________查找相关package所在路径。
4.Tcl命令出错时错误信息一般存放在全局变量___________中。
5.用命令_____________________可以列出数组中元素名称。
6.可将一个字符串中的每个字符分开来的list命令是______;如果字符串是“HappyDay”,则完整的命令为______________________。
如果要在这个字符串中每个字符之间插入一个“/”,则可以使用上面的命令和另一个list命令______来共同完成,完整命令为____________________________________________________________________________。
7.名字空间输出过程/函数的命令是namespace _________________。
而从名字空间输入过程的命令则是_____________________。
8.在读取文件时,判断已到文件结尾的命令是_____________。
9.获取过程的脚本的命令是info______;而获取过程的参数的命令是____________。
判断一个变量是否存在的命令是__________。
10.可以用来装载并执行脚本文件的Tcl命令是____________。
11.环境变量被存放在一个特殊数组中,即________________。
12.根据模式说明来格式化字符串的命令是________________,而根据模式来解析字符串的命令是_______________。
Part II. Choice correct answer(s) for the following review questions .(24%)1.To open a file for reading and writing, which command is right? [ ] (1%)A.open $file rwB.open $file r+C.open $file wD.open $file w+2.In which sentence(s) the variable after (first) “$” can be replaced by it’s actual value? [ ] (3%)A.catch { puts {My name is $name} } errB.regexp {my name is $name} “I’m a girl, my name is QQ” matchC.set str {My name is $name}D.eval {puts “My name is $name”}E.set var name; puts “My name is $$var”F.if {$name >= “QQ”} {puts “$name is bigger than QQ”}G.subst {a={{$name}},b=[expr 3*10]}H.switch $X { “$name” {puts ok} …}3.To find out commands which can be used to destroy an array “arrParams”.[ ]A.unset arrParamsB.array unset arrParamsC.destroy arrParamsD.forget arrParams4.Which character is logical and?[ ]A.||B.&C.|D.&&5.Pick out the correct command(s) whose result is an integer ? [ ]A.expr 10 / 2.0B.expr 10/2C.expr int(10/2.0)D.expr int([expr 10/2.0])6.Which command can be used to convert hex value “0x23”into a ten digital length integer with allzero filled out at left side?哪个命令可以用来将十六进制数“0x23”转换为10位长度的十进制整数,且右对齐,不足十位则左侧补零,即0000000035?[ ]A.format “%10d” 0x23B.format “%-10d” 0x23C.format “%010d” 0x23D.format “%-010d” 0x237.对于“array names arrParams lif*”正确的说法是[ ]A.“lif*”是通配符形式而非正则表达式B.与A相反C.既是通配符,又是正则表达式D.以上描述都不对8.以下那些命令也可以用正则表达式形式?[ ]A.lsearchB.string matchC.array namesD.switch9.一个脚本文件中定义了若干个过程(函数),形式为proc funcName {…} {# Procedure body}以下哪个正则表达式可以从脚本文件中将过程名提取出来?A.regexp {^[\t ]*?proc[\t ]+([a-zA-Z0-9\-_]+)[\t ]+\{.*?\}[\t ]\{} $str match funcB.regexp {proc[\t ]+([a-zA-Z0-9\-_]+)[\t ]+\{.?\}[\t ]\{} $str match funcC.regexp {proc[ ]+?[a-zA-Z0-9\-_]+?[ ]+\{*\}[ ]\{} $str match func10.代表标准错误输出的是[ ]A.stdinB.stdoutC.stderr11.代表命令行参数个数的变量是:[ ]A.argvB.argv0C.argcD.args12.下面那些命令会对变量直接操作而更改其值:[ ]A.appendB.concatppendD.linsertPart III. True or False.(10%)1.uplevel 1是global即最上一级的下一级,而uplevel #1则是本级的上一级。
[ ]2.upvar中如果level不指定则默认为1,即本级的上一级;而0则表示全局变量。
[ ]ppend a {a b c}和set a [concat $a {a b c}]的结果是一样的。
[ ]4.环境变量数组env在子解释器中可以直接使用。
[ ]5.子解释器就是一个单独线程。
[ ]6.正则表达式中*、+和?具有贪婪性,它们会尽可能多的匹配字符,为了让它们进行非贪婪匹配,可以通过在其后加一个问号“?”的方法来实现。
但此非唯一方法。
[ ]7.列表也是字符串,所以可用字符串命令来操作和处理。
[ ]8.数组是特殊的字符串,可以用字符串命令来处理。
[ ]9.用variable而非global定义的名字空间的全局变量只能在本名字空间内可见。
[ ]10.在多重循环控制语句中,最内层循环的break命令只会中断该重循环,而不会中断外层循环.[ ]Part IV. Answer the following questions (21%)1.试列举两种可用来比较字符串大小的方法或命令。
(5%)2.“string compare”,“string equal”和“string match”的输出结果有什么异同?(5%)3.解释一下正则表达式中关于“?”、“+”与“*”的“贪婪”和“非贪婪”性,并举例说明和比较。
(6%)4.论述对Tcl中的“命令解释器”和“子命令解释器”的理解。
(5%)Part V. Writing Lab. (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%]2.2 完成代码。
[10%]proc incr_ip_addr {ip_addr step} { set new_ip_addr “”# fill your scripts herereturn $new_ip_addr}#Examplesset new_ip_addr [incr_ip_addr 10.8.9.1 0.0.0.3] ; # new_ip_addr should be 10.8.9.4 set new_ip_addr [incr_ip_addr 10.8.9.254 0.0.0.5]; # new_ip_addr should be 10.8.10.3,#because 254 plus 5 is bigger than 255 3.指出下面脚本中的错误并改正。
[5%]3.1 switch 语句[1%]在unix系统中,独立Tcl/Tk脚本的开始头如何编写?(假设unix shell为/bin/sh)(5%)# !/bin/sh_____________________________________(Optional) 试用expect语言编写一段telnet登录脚本:登录成功的prompt是Hello>用户名出错信息是: Unknown User NamePassword出错信息是: Incorrect Password。