Tcl 脚本编程测试题
- 格式:doc
- 大小:66.00 KB
- 文档页数:7
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面试题一、介绍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是哪一种类型的编程语言?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。
一填空题(每题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列右下直角三角形。
初级程序测试题及答案一、选择题(每题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】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?//这是一个菲波拉契数列问题public class lianxi01 {public static void main(String[] args) {System.out.println("第1个月的兔子对数: 1");System.out.println("第2个月的兔子对数: 1");int f1 = 1, f2 = 1, f, M=24;for(int i=3; i<=M; i++) {f = f2;f2 = f1 + f2;f1 = f;System.out.println("第" + i +"个月的兔子对数: "+f2);}}}#include <iostream>using namespace std;int main(){double x=1,y=1,n;cin>>n;for(int i=1; i<n; ++i){y=x+y;x=y-x;}printf("%.0f\n",x);return 0;}main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
竭诚为您提供优质文档/双击可除tcl,java,笔试篇一:tcl面试问题集绵非技术篇1、请您做个自我介绍(中/英文)2、你为什么要离开上一家公司3、你为什么选择从事(手机)软件测试的工作4、简单介绍一下以前做过的项目、工作内容、你的工作职责、工作流程。
5、你认为手机测试跟你之前做的软件测试流程有什么不同6、你目前是一直呆在杭州呢/为什么来杭州呢?以后继续留在杭州还是以后想去什么地方发展?7、除了手机测试领域,你目前还关注哪些领域的技能或知识8、说说你自己的优点和缺点9、你的未来职业规划是什么?10、你是否接受加班(这份工作经常加班,包括节假日加班,你如何看待这个问题)?11、你平常有什么兴趣爱好?(不能说没什么兴趣爱好)12、你认为做软件测试应该具体哪些综合素质?13、说一件你觉得压力最大的事情14、你的外语水平如何?15、英语的工作环境能否适应?以前接触过全英文的工作环境吗?现在的英文文档是否可以看懂?16、你的父母对象同意你跨省工作吗?17、你为什么会选择到贵仁来工作?18、没有参加过什么培训19、做手机测试是一个重复性的工作,做久了可能会无聊,你怎么看待这个问题?20、目前用的什么手机?21、有什么想问的问题吗?技术篇1、进行软件测试的目的是什么?2、测试过程中对发现bug的处理流程和办法,你认为何时才应该关闭一个bug?3、软件测试的流程与测试通过的标准,一般用到哪些测试方法?4、测试中bug严重级别是如何定义的(如何定义bgu的等级)5、bug的周期管理是用什么工具?bug描述的具体分为哪几个要素?6、之前做过关于android系统手机的测试吗?对安卓系统有多少了解7、编写过测试用例吗?规模有多大?说说一个模块设计测试用例的方法以及设计思路;8、对回归测试的理解,如何进行回归测试?9、当一个bug发生分歧的时候你该怎么处理?最终的决定权应该是谁?你会如何平衡开发人员和测试人员之间的心理冲突?10、之前和手机相关的测试中,事件交叉和兼容性测试时怎么进行的?11、验收测试一般如何验收?12、描述你之前发现的最好的一个bug;13、如果让你设计ui方面的测试用例,你的设计思路和结构是什么?14、用过哪些测试工具呢?之前的项目是否用过自动化测试工具?(比如利用loadRunner过哪些测试)?脚本是否自己写的?15、android系统现在越来越倾向于自动化测试,对自动化测试的了解程度到哪一步了呢?16、关于性能压力测试的了解有多少?之前有做过或者了解过吗?17、近期的项目有没有过c或者jaVa的代码编写经历?18、做软件测试以来的得失;篇二:tcl笔试题目硬件工程师职位(20xx年校园招聘) 篇三:一度javadb笔试试卷(第一套)javadb试题(笔试)1.删除表中数据的语句是(d)。
tcl脚本语言的笔试题很简单的一.填空题(每题3分,共30分)1. regexp { ([0-9]+) *([a-z]+)} there is 100 apples total num wordputs $total ,$num,$word最后输出结果为___________________.参考:100 apples ,100,apples2. regsub there They live there lives their xputs $x最后输出结果为___________________.参考:They live their lives3.(每空一分)TCL提供三种形式的置换:_________,_____________和____________.参考:变量置换、命令置换和反斜杠置换4. set x 10Set y $x+100最后输出结果为___________________.参考:10+1005.(每空1分)Set x 100Set y “$x ddd”此句输出内容为__________set y {/n $x} 此句输出内容为__________Set y [expr {$x+10}]此句输出内容为__________参考:100 ddd/n $x1106.建立一个数组day,它有两个元素Monday,Tuesday,值分别为1 2创建语句为:______________________________参考:set day(monday) 1set day(tuesday) 27. lindex {1 2 {3 4}} 2输出结果为_______________参考:3 48. linsert { 1 2 {3 4} 1 7 8 {9 10}输出结果为_______________参考:1 7 8 {9 10} 2 {3 4}9.string first ab defabc输出结果为_______________参考:310. catch {return “all done”} string Set string输出结果为_______________参考:all done二.简答题(每题10分,共30分)1.#!/usr/bin/tclsh##Demonstrate operators and#math functionsset PI [expr 2*asin(1.0)]if {$argc==3} {set X [lindex $argv 0]set Y [lindex $argv 1]set Rad [lindex $argv 2]set Dist [expr sqrt(($X*$X)+($Y*$Y))] set Cir [expr 2*PI*$Rad]set Area [expr $Rad*$Rad]puts stdout “Distance = $Dist”puts stdout “Circumference = $Cir”} else {puts stdout “Wrong argument count!”puts stdout “Needs X,Y ,and Radius”}提示,asin(1.0)值为1.5707963 Linux下以上脚本程序输出内容为:______________________________________参考:Wrong argument count!Needs X,Y ,and Radius2. #!/usr/bin/tclsh##Demonstate global variables#and backslash substitutionif {$argc >=1 } {set N 1foreach Arg $argv {puts stdout $N:$Arg\nset N [expr $N +1 ]if {$Arg== ring } {puts stdout \a}}} else {puts stdout $argv0 on X Display $env(DISPLAY)\n}Linux中以上脚步命名为hello3,则运行脚本以下结果为:$ ./hello3.tcl______________________$ ./hello3.tcl ring_______________________3.当y值分别为a b c时以下程序运行结果是什么?为什么会是这个结果set x 10switch $y {a {incr $x}b {incr $y}default {incr $x}}_________________参考:均出错,incr表达式应为incr 变量数值三.编程题(每题20分,共40分)编写一个过程,使用递归方法,实现阶乘运算参考代码:proc main {x} {if {$x==0} {return 1} else {set sum 1for { set i 0} {$iset sum [expr $sum+[expr $sum*$i]]}return $sum}}不用format命令,编写一个过程实现二进制数转为十进制数参考代码:proc 2to10 {x} {set sum 0proc length {x} {string length $x}set n [length $x]for {set i 0} {$iproc a {x i} {string index $x end-$i}if {[a $x $i]==0} {} elseif {[a $x $i]==1} {set a [expr pow(2,$i)]set b [expr [a $x $i]]set p [expr [expr $a*$b]]set sum [expr $sum+$p]} else {puts stdout 请正确输入二进制! return}}puts stdout $sum}。
TCL_2.27笔试题⽬整理笔试形式为50分钟50道题,其中30道选择,20道判断。
包括C,python和算法题。
涉及到不熟悉或有所遗忘的知识点如下:函数指针函数存放在内存的代码区域内,它们同样有地址.如果我们有⼀个 int test(int a) 的函数,那么,它的地址就是函数的名字,这⼀点如同数组⼀样,数组的名字就是数组的起始地址。
函数指针的定义⽅式data_types (*func_pointer)( data_types arg1, data_types arg2, ...,data_types argn);int (*fp)(int a);// 这⾥就定义了⼀个指向函数(这个函数参数仅仅为⼀个 int 类型,函数返回值是 int 类型)的指针 fp。
注意:函数指针所指向的函数⼀定要保持函数的返回值类型,函数参数个数,类型⼀致。
运算符优先级enum使⽤ enum ⼯具不仅能够创建符号常量,还能定义新的数据类型。
枚举量的声明和定义(1) ⾸先,请看下⾯的语句:enum enumType {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};第⼀:声明 enumType 为新的数据类型,称为枚举(enumeration);第⼆:声明 Monday、Tuesday 等为符号常量,通常称之为枚举量,其值默认分别为 0-6。
(2) 接着利⽤新的枚举类型 enumType 声明这种类型的变量:enumType Weekday 就像使⽤基本变量类型int声明变量⼀样,如 int a; 也可以在定义枚举类型时定义枚举变量enum enumType {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}Weekday;在不进⾏强制转换的前提下,只能将定义的枚举量赋值给该种枚举的变量,也就是说 Weekday 只能是定义的 Monday-Sunday 这些定义过的枚举量。
Tcl/Tk Quiz SheetTime: 2 hoursPart I. Fill Out. (10%)Tcl is for __________________________________, it’s a ___________ language.生成pkg_Index.tcl文件的命令是________________________。
在执行package require命令的时候,该命令会根据变量_________查找相关package所在路径。
Tcl命令出错时错误信息一般存放在全局变量___________中。
用命令_____________________可以列出数组中元素名称。
可将一个字符串中的每个字符分开来的list命令是______;如果字符串是“HappyDay”,则完整的命令为______________________。
如果要在这个字符串中每个字符之间插入一个“/”,则可以使用上面的命令和另一个list命令______来共同完成,完整命令为____________________________________________________________________________。
名字空间输出过程/函数的命令是namespace _________________。
而从名字空间输入过程的命令则是_____________________。
在读取文件时,判断已到文件结尾的命令是_____________。
获取过程的脚本的命令是info______;而获取过程的参数的命令是____________。
判断一个变量是否存在的命令是__________。
可以用来装载并执行脚本文件的Tcl命令是____________。
环境变量被存放在一个特殊数组中,即________________。
根据模式说明来格式化字符串的命令是________________,而根据模式来解析字符串的命令是_______________。
Tcl/Tk Quiz SheetTime: 2 hoursPart I. Fill Out. (10%)Tcl is for __________________________________, it’s a ___________ language.生成pkg_Index.tcl文件的命令是________________________。
在执行package require命令的时候,该命令会根据变量_________查找相关package所在路径。
Tcl命令出错时错误信息一般存放在全局变量___________中。
用命令_____________________可以列出数组中元素名称。
可将一个字符串中的每个字符分开来的list命令是______;如果字符串是“HappyDay”,则完整的命令为______________________。
如果要在这个字符串中每个字符之间插入一个“/”,则可以使用上面的命令和另一个list命令______来共同完成,完整命令为____________________________________________________________________________。
名字空间输出过程/函数的命令是namespace _________________。
而从名字空间输入过程的命令则是_____________________。
在读取文件时,判断已到文件结尾的命令是_____________。
获取过程的脚本的命令是info______;而获取过程的参数的命令是____________。
判断一个变量是否存在的命令是__________。
可以用来装载并执行脚本文件的Tcl命令是____________。
环境变量被存放在一个特殊数组中,即________________。
根据模式说明来格式化字符串的命令是________________,而根据模式来解析字符串的命令是_______________。
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。