TCL测试题目(B卷及答案)

更新时间:2023-05-07 04:27:51 阅读: 评论:0

TCL测试题目(B卷)
一、填空题(每题3分,共30分)
1、regexp { ([0-9]+) *([a-z]+)} " there is 100 apples" total num word
puts " $total ,$num,$word"
  最后输出结果为100 apples ,100,apples
2、regsub there "They live there lives " their x
puts $x
  最后输出结果为They live their lives
3、(每空1分)
TCL提供三种形式的置换:变量置换命令置换反斜杠置换
4、t x 10
  t y $x+100
  最后输出结果为 10+100   
5、(每空1分)
t x 100
  t y $x ddd  此句输出内容为 100 ddd
  t y {/n $x }  此句输出内容为 /n $x
  t y [expr {$x+10}] 此句输出内容为: 110
6、建立一个数组day,它有两个元素monday,tuesday,值分别为1 2
  创建语句为: t day(monday) 1
t day(tuesday) 2
7、lindex {1 2 {3 4}} 2
  输出结果为: 3 4
8、linrt {1 2 {3 4}} 1 7 8 {9 10}
  输出结果为: 1 7 8 {9 10} 2 {3 4}
9、string first ab defabc
  输出结果为: 3
10、catch {return all done} string
t string
输出结果为: all done
二、简答题(每题10分,共30分)
1、 #!/usr/bin/tclsh
#
# Demonstrate operators and
# math functions
t PI [expr 2 * asin(1.0)]
if {$argc == 3} {
t X [lindex $argv 0]
t Y [lindex $argv 1]
t Rad [lindex $argv 2]
t Dist [expr sqrt(($X*$X)+($Y*$Y))]
t Cir [expr 2*$PI*$Rad]
t Area [expr $PI*$Rad*$Rad]
puts stdout "Distance = $Dist"
puts stdout "Circumference = $Cir"
puts stdout "Area = $Area"
} el {
puts stdout "Wrong argument count!"
puts stdout "Needs X, Y, and Radius"
}
提示,asin(1.0)值为1.5707963  Linux下以上脚本程序输出内容为:
Distance = 5.0             (答出给3分)
Circumference = 31.415926  (答出给分 4分 )
Area = 78.539815            (答出给分 3分)
2、 #!/usr/bin/tclsh
#
# Demonstrate global variables
# and backslash substitution
if {$argc >= 1} {
t N 1
foreach Arg $argv {
puts stdout "$N: $Arg\n"
t N [expr $N + 1]
if {$Arg == "ring"} {
puts stdout "\a"
}
}
} el {
puts stdout "$argv0 on X Display $env(DISPLAY)\n"
}
Linux中以上脚本命名为hello3,则运行脚本,以下结果为:
$ ./l
./l on X Display :0.0       (答出给5分)
$ ./l ring
1: ring                        (答出给5分)
3、当y值分别为 a b c 时
以下程序运行结果是什么?为什么是这个结果
    t x 10
switch  $y  {
a {incr  $x}
b {incr  $x}
default {incr $x}
}
1 2 3  incr 后直接跟整型值变量即可,多$会将$x当作新变量赋初值0,加一后为1
(答出结果给 5分,讲出原因给5分)
三、编程题(每题20分,共40分)
1、编写一个过程,使用递归方法,实现阶乘运算
proc fac {x} {                              //过程格式正确给5分
    if {$x < 0} {                          //有错误处理给3分
        error "Invalid argument $x: must be a positive integer"
    } elif {$x <= 1} {
        return 1                        //有递归结束条件给5分
    } el {
        return [expr $x * [fac [expr $x-1]]]      //递归循环体正确给 7分
    }
}
2、不用format命令,编写一个过程实现二进制数转为十进制数
proc TransBToD {value} {                        //过程格式正确给5分
    t val 0                                   
    t len [string length $value]                    //设置中间变量给3分
    for {t i [expr $len - 1]} {$i >= 0} {incr i -1} {
        incr val [expr [string index $value $i] << [expr $len - $i - 1]]
    }                                        //写出算法给10分
    return $val                                //有返回给2分
}

本文发布于:2023-05-07 04:27:51,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/545414.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:过程   输出   每题
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图