1tcl脚本语言的笔试题很简单的一.填空题(每题3分,共30分)1.regexp{([0-9]+)*([a-z]+)}thereis100applestotalnumwordputs$total,$num,$word最后输出结果为___________________.参考:100apples,100,apples2.regsubthereTheylivetherelivestheirxputs$x最后输出结果为___________________.参考:Theylivetheirlives3.(每空一分)TCL提供三种形式的置换:_________,_____________和____________.参考:变量置换、命令置换和反斜杠置换4.setx10Sety$x+100最后输出结果为___________________.参考:10+1005.(每空1分)2Setx100Sety“$xddd”此句输出内容为__________sety{/n$x}此句输出内容为__________Sety[expr{$x+10}]此句输出内容为__________参考:100ddd/n$x1106.建立一个数组day,它有两个元素Monday,Tuesday,值分别为12创建语句为:______________________________参考:setday(monday)1setday(tuesday)27.lindex{12{34}}2输出结果为_______________参考:348.linsert{12{34}178{910}输出结果为_______________参考:178{910}2{34}9.stringfirstabdefabc输出结果为_______________参考:3310.catch{return“alldone”}stringSetstring输出结果为_______________参考:alldone二.简答题(每题10分,共30分)1.#!/usr/bin/tclsh##Demonstrateoperatorsand#mathfunctionssetPI[expr2*asin(1.0)]if{$argc==3}{setX[lindex$argv0]setY[lindex$argv1]setRad[lindex$argv2]setDist[exprsqrt(($X*$X)+($Y*$Y))]setCir[expr2*PI*$Rad]setArea[expr$Rad*$Rad]putsstdout“Distance=$Dist”putsstdout“Circumference=$Cir”}else{putsstdout“Wrongargumentcount!”putsstdout“NeedsX,Y,andRadius”4}提示,asin(1.0)值为1.5707963Linux下以上脚本程序输出内容为:______________________________________参考:Wrongargumentcount!NeedsX,Y,andRadius2.#!/usr/bin/tclsh##Demonstateglobalvariables#andbackslashsubstitutionif{$argc=1}{setN1foreachArg$argv{putsstdout$N:$Arg\nsetN[expr$N+1]if{$Arg==ring}{putsstdout\a}}}else{putsstdout$argv0onXDisplay$env(DISPLAY)\n}5Linux中以上脚步命名为hello3,则运行脚本以下结果为:$./hello3.tcl______________________$./hello3.tclring_______________________3.当y值分别为abc时以下程序运行结果是什么?为什么会是这个结果setx10switch$y{a{incr$x}b{incr$y}default{incr$x}}_________________参考:均出错,incr表达式应为incr变量数值三.编程题(每题20分,共40分)编写一个过程,使用递归方法,实现阶乘运算参考代码:procmain{x}{if{$x==0}{return16}else{setsum1for{seti0}{$isetsum[expr$sum+[expr$sum*$i]]}return$sum}}不用format命令,编写一个过程实现二进制数转为十进制数参考代码:proc2to10{x}{setsum0proclength{x}{stringlength$x}setn[length$x]for{seti0}{$iproca{xi}{stringindex$xend-$i}if{[a$x$i]==0}{}elseif{[a$x$i]==1}{7seta[exprpow(2,$i)]setb[expr[a$x$i]]setp[expr[expr$a*$b]]setsum[expr$sum+$p]}else{putsstdout请正确输入二进制!return}}putsstdout$sum}