51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 11329|回复: 42
打印 上一主题 下一主题

[原创] 编程练习题

[复制链接]
  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2009-8-18 21:53:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    在论坛上时常看到有人问某段代码怎么写或怎么实现,这说明还是编程能力欠缺。这也是为什么某些(甚至是许多)开发人员看不起测试人员的一个主要原因。在写脚本的过程中,我积累了不少极佳的编程练习题,共享出来,有兴趣或想试验一下或欲提高自己的编程能力的朋友可以试试你完成下面几个问题的时间、完成的代码的质量和效率如何。
    我也希望论坛上的朋友以此为“磨刀石”,不断提高我们的编程能力,让对我们不服气的开发人员刮目相看。

    [ 本帖最后由 walker1020 于 2009-8-18 23:11 编辑 ]
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    43#
    发表于 2009-8-27 14:08:30 | 只看该作者

    回复 1# 的帖子

    前几天看到php里有1个addcslashes()函数,所以用vbs山寨了1个,应该可以满足第1题里的要求吧。
    PS:题目我没看太明白,呵呵。
    --------------------------------------------------------------------------------------------------
    'array_unique(arr)用来去除数组中的重复项,该函数使用了dictionary中key不能使用重复项的特性,有些危险.....慎用.....
    Function array_unique(arr)
            size = UBound(arr) + 1
            Dim hash
            Set hash = CreateObject("scripting.dictionary")
            Dim count
            count = 0
            For i = 0 To (size - 1)
                    On Error Resume Next
                    key = arr(i)               
                    For Each value In arr
                            If arr(i) = value Then
                                    count = count + 1
                            End If
                    Next               
                            hash.Add key , count
                            count = 0               
                    Next       
            array_unique = hash.Keys
            Set hash = nothing
    End Function
    -----------------------------------邪恶的分隔线-----------------------------------------------------------
    'addcslashes(str, charlist)从str中找到charlist中指定的字符并在前面添加"\",charlist支持正则表达式,因此如果是找正则表达式中的特殊字符的话,只需要这样写charlist[|\^*.\\]之类的,具体的大家可以用正则来写一下。另外目前该函数只支持单字符搜索,有其他需求的兄弟可以自行修改一下。
    Function addcslashes(str, charlist)
            Set reg = New RegExp
            reg.IgnoreCase = False
            'If InStr(str,"^") Then
            '        str = Replace(str, "^", "\^")
            'End If
            reg.Pattern = charlist       
            reg.Global = false
            Set hash = CreateObject("scripting.dictionary")
            i = 0
            Set matches = reg.Execute(str)       
            For Each match In matches
                    pos = match.FirstIndex + 1
                    hash.Add i, Mid(str, pos, 1)
                    i = i + 1
            Next
            newArr = array_unique(hash.Items)
            For Each value In newArr
                    str = Replace(str, value, ("\" & value))
            Next
            addcslashes = str       
            set hash = nothing
    End Function
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    42#
    发表于 2009-8-21 13:09:14 | 只看该作者
    我来贴点稍微有些难度的题吧,前阵子我刚做过的
    http://projecteuler.net/index.php?section=problems&id=191

    无论用什么方法,只要能计算出结果就可以了,当然,我自己是用VBS做出来的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    41#
    发表于 2009-8-21 13:03:09 | 只看该作者

    回复 35# 的帖子

    We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once. For example, 2143 is a 4-digit pandigital and is also prime.

    What is the largest n-digit pandigital prime that exists?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40#
    发表于 2009-8-21 12:28:10 | 只看该作者
    都是C的练习题目
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    39#
    发表于 2009-8-21 11:39:24 | 只看该作者
    【程序5】
    题目:输入三个整数x,y,z,请把这三个数由小到大输出。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    38#
    发表于 2009-8-21 11:39:06 | 只看该作者
    【程序4】
    题目:输入某年某月某日,判断这一天是这一年的第几天?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37#
    发表于 2009-8-21 11:38:55 | 只看该作者
    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    36#
    发表于 2009-8-21 11:38:35 | 只看该作者
    【程序2】
    题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
       于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
       成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
       40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
       100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35#
    发表于 2009-8-21 11:37:43 | 只看该作者

    回复 33# 的帖子

    好吧,那我来出些题吧,也是网络上比较通用的,用这些来锻炼逻辑吧
    【程序1】
    题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    34#
    发表于 2009-8-21 11:30:50 | 只看该作者

    回复 33# 的帖子


    有道理
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    33#
    发表于 2009-8-21 11:22:03 | 只看该作者

    回复 32# 的帖子

    处理XML,EXCEL,调用WMI什么的其实也就是翻来覆去那么几句,照着资料熟悉了接口之后往往复制粘贴下自己需要用到的语句就完了,达不到练习编程的目的。 练习编程还是要多锻炼逻辑思维能力。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32#
    发表于 2009-8-21 10:18:33 | 只看该作者
    建议:写点有实际意义的代码,比如VBS处理XML,处理EXCEL,VBS调用WMI获取指定进程PID,虽然字符串处理比较重要,但也没必要处理来处理去。

    关于VBS实际应用,建议可以去看看这个博客,他貌似比较喜欢用VBS: http://huaidan.org/
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    31#
    发表于 2009-8-20 21:17:45 | 只看该作者
    受教了~佩服...建议这种帖子隔段时间就来一下...老不写代码还真是手生
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    30#
    发表于 2009-8-20 11:50:38 | 只看该作者

    回复 22# 的帖子

    不符合要求1吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    29#
    发表于 2009-8-20 11:17:33 | 只看该作者

    这个模块满有意思,适合我们
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    28#
    发表于 2009-8-20 10:27:07 | 只看该作者
    呵呵,题目没看仔细,写的有点赶,继续学习
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    27#
     楼主| 发表于 2009-8-20 00:19:35 | 只看该作者

    回复23#

    What if varParten is Null?
    如果 varParten 是 Null,那么 函数TransParten 还会得到正确的结果吗? 这尚需验证

    [ 本帖最后由 walker1020 于 2009-8-20 00:33 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    26#
     楼主| 发表于 2009-8-20 00:13:18 | 只看该作者
    如: 输入abc\|+.?[]  那么经转义后,它变成了 abc\\\|\+\.\?\[]
    如果输入abc\[?^de$f  那么经转义后,它变成了abc\\\[\?\^de\$f

    [ 本帖最后由 walker1020 于 2009-8-20 00:31 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    25#
     楼主| 发表于 2009-8-20 00:09:19 | 只看该作者

    回复23#

    第一题的意思,简单的说,就是在正则表达式里用到的的所有特殊字符进行转义,也就是在其前面增加一个反斜杠
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-7 19:17 , Processed in 0.080300 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表