在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6638|回复: 13

[原创] 脚本面试每日一题TCL-0408

[复制链接]
发表于 2013-4-8 09:04:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近人气不太旺啊,发个基础的:

1-写一个proc max {a b} 返回a,b中较大的一个。

2-扩展proc max,使得它适用于任意多个参数的情况。
发表于 2013-4-12 09:51:40 | 显示全部楼层
本人新手,抛砖引玉了
1、
proc max {a b} {
     if {$a > $b} {
           return $a
     } else {
           return $b
     }
}
2、
proc max {args} {
     set tmp [lindex $args 0]
     foreach val $args {
           if {$val > $tmp} {
                 set tmp $val
           }
     }
     return $tmp
}
 楼主| 发表于 2013-4-12 12:16:35 | 显示全部楼层
本帖最后由 sjtusonic 于 2013-4-12 12:18 编辑

回复 2# coffeeing520


    写得很工整且可读性很强,连"} {"中的空格都没有遗漏(这种错误常常发生且难以查找)。俗话说良好的态度是成功的一半。

你对问题2的答案还可改进:现在proc的参数是list,你调用时估计要写成  max {1 2 3} 才能正常返回3吧?

另有种直接传任意个标量参数的写法,你看看proc的“可变参数个数”的用法
发表于 2013-4-12 23:13:56 | 显示全部楼层
本帖最后由 smartyaya 于 2013-4-12 23:22 编辑

我觉得2楼的没错吧,直接max 1 2 3 就可以返回3了吧。。encounter 1> proc max {args} {
+      set tmp [lindex $args 0]
+      foreach val $args {
+            if {$val > $tmp} {
+                  set tmp $val
+            }
+      }
+      return $tmp
+ }
encounter 2> max 1 2 3
3
发表于 2013-4-13 11:55:26 | 显示全部楼层
我是来学习的。。
 楼主| 发表于 2013-4-14 09:28:41 | 显示全部楼层
回复 4# smartyaya


原来2楼的确已经用在args来表示可变参数了,我当时没看清:)

另外:在我印象中大概会写成这样的:
proc max {a b args} { BODY }
发表于 2013-4-14 22:30:38 | 显示全部楼层
回复 6# sjtusonic

可不可以再出点更难一点的。这个有些基础了。
发表于 2013-4-14 22:34:27 | 显示全部楼层
回复 5# 缓慢
你来打酱油的
发表于 2013-4-15 23:08:11 | 显示全部楼层
回复 8# pengmingguo


    哈哈哈
发表于 2013-6-20 12:36:24 | 显示全部楼层
回复 2# coffeeing520

   能否请教一下
   假设通过stdin的方式来输入不确定个数参数的话,应该如何实现呢?
   我自己写了一遍,发现我输入的用空格隔开的 1 2 3 参数被当成了1个参数{1 2 3}
   如何让proc识别输入为多个参数呢?


多谢指导~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 20:55 , Processed in 0.022357 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表