查看: 197581|回复: 1033

Javascript基础练习之实现C语言经典程序题

[复制链接]
  • TA的每日心情
    无聊
    2021-8-25 08:29
  • 签到天数: 109 天

    [LV.6]常住居民II

    发表于 2015-11-29 19:42:47 | 显示全部楼层 |阅读模式
    本帖最后由 yhy 于 2015-11-29 19:45 编辑

    前言:

    最近在学习Javascript语言,看到网上很多都是在介绍Javascript如何解决网页上问题的代码,所以想另辟蹊径,用Javascript代码来实现C语言经典程序题。当然,这些C语言程序题也是比较简单,主要想通过Javascript语言实现,起到语法练习作用,也想来对比一下C语言和Javascript语言实现的相同点和不同点,从而巩固记忆,加强学习效果!!!本文转自http://www.cnblogs.com/ygs123/p/5003424.html
    一、C语言经典程序题1
    1. 题目描述:

    马克思的手稿中有这样一道有趣的数学题:有30个人,其中有男人,女人,小孩。他们在一家饭馆中吃饭,共花费50先令。 如果每个男人吃饭要花3先令,每个女人要花2先令, 每个小孩要花1先令,问男人,女人,小孩各多少人?
    2. Javascript代码:

    [JavaScript] 纯文本查看 复制代码
    var man, woman, child;
    for (man = 0; man < 17; man ++) 
    {
        for (woman = 0; woman <= 25; woman ++) 
        {
            child = 30 - man - woman;
            if ( (man + woman + child == 30) && (man * 3 + woman * 2 + child == 50) )
            {
                document.write("男人:"+man+","+"女人:"+woman+","+"小孩:"+child +"</br>");
            }
         }
    }  

          
    3. 解题说明:

    这道题目算是很经典的题目了,跟“换零钱”是同一种类型的题目,只需要多个循环加一个判断就能罗列出每一种结果。从这道题看,Javascript的代码和C语言的代码基本上没有区别,因为for语句和if语句,Javascript语言和C语言是一样的。主要的不同体现在,变量的定义和输出语句上,总体感觉Javascript语言实现起来更方便,主要原因是Javascript弱类型语言,C语言是强类型语言。
    二、C语言经典程序题2
    1. 题目描述:

    计算e=1+1/1!+1/2!+1/3!……+1/n!的前50项
    2. Javascript代码:


    [JavaScript] 纯文本查看 复制代码
    var n;
    var s = 1;
    var e = 1;
    for (n = 1; n <= 50; n ++)
    {
        s = s * n;
        e = e + (1 / s);
    }
    document.write(e);
    


    3. 解题说明:

    这道题目算是一个比较简单的题目,实现也只用了一个for循环,与C语言代码相比,区别还是在变量定义和输出上。
    三、C语言经典程序题3
    1. 题目描述:

    输入一个数(不限位数),输出一个数字的位数。
    2. Javascript代码:


    [JavaScript] 纯文本查看 复制代码
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>C语言经典题目3</title>
        <script>
            function demo() {
                var n = document.getElementById("number").value;
                if (!isNaN(n)) {var len = n.length;
                }
                else{
                    alert("请输入数字!");
                    return;
                }
                document.getElementById("number").value = len;
            }
        </script>
    </head>
    <body>
        <input type="text" id="number" width="100" height="50">
        <button onclick="demo()">点我啊</button>
    </body>
    </html>
    

    3. 解题说明:

    这道题目比较有意思,如果用C语言实现的话,就需要不断给这个数字进行对10整除,已达到获取数字长度的目的。但Javascript语言的弱类型性质使得用Javascript解决这个题目特别简单,默认数字是字符串类型,只要判断这个字符串的长度即可。虽然有点偷懒,但也实现了功能。此外,实现这道题目也出现了和C语言不同的的东西,就是解决输入问题,C语言使用的是scanf,但Javascript没有此类函数,所以只能借助网页实现数字的输入。
    四、C语言经典程序题4
    1. 题目描述:

    打印九九乘法表
    2. Javascript代码:

    [JavaScript] 纯文本查看 复制代码
    function demo()
    {
        var i, j, s;
        for(i = 1; i < 10; i ++)
        {
            for(j = 1; j <= i; j ++)
            {
                s = i * j;
                document.write(j+"*"+i+"="+s+" ");
            }
            document.write("<br/>");
        }
    }  
      

    3. 解题说明:

    这道题目也算是很经典的题目了,但实现起来特别简单,只需要两个循环嵌套就可以了。和C语言的区别除了变量定义和输出外,此处还有一个,就是换行。C语言的换行只要使用\n就可以了,但网页不识别\n,所以只能使用html的<br/>来实现换行。
    五、C语言经典程序题5
    1. 题目描述:

    青年歌手参加歌曲大奖赛,有10个评委打分,试编程求选手的平均得分(去掉一个最高分和一个最低分)
    2. Javascript代码:

    [JavaScript] 纯文本查看 复制代码
    <body>
    <input id="getScore" type="text">
    <button onclick="demo()">平均分</button>
    <p id="txt"></p>
    <script>
        function demo() {
           var str = document.getElementById("getScore").value;
            var score = new Array();
            score= str.split(",");
            var max = 0;
            var min = 10000;
            var sum = 0;
            var ave = 0;
            for(i=0;i<score.length;i++){
                if(score[i]>max)
                {
                    max = score[i];
                }
                if(score[i]<min)
                {
                    min = score[i];
                }
                sum = sum+score[i];
            }
            ave = (sum-max-min)/8;
           document.getElementById("txt").innerHTML = ave;
        }
    </script>
    </body>



    3. 解题说明

    这道题目应该算是代码数量最多的了,虽然题目很简单,但在实现输入十个成绩的时候遇到了困难,因为不能像C语言那样一个一个输入。所以,我就采用输入1,2,3,4,5,6,7,8,9,10,用逗号的方式一次性输入10个进来。输入进来后,就要对字符串进行分割了,所以用到了split函数。
    五、总结

    终于用Javascript语言写完了5道C语言经典题目,也算是学习Javascript的一个很好的开端。回想在解决每个题目的过程,感觉Javascript真的很C语言很像,所以入手比较简单,只是在处理输入输出的时候,有点不一样。如果让我评价,Javascript语言和C语言那个好?我会觉得Javascript真的更容易更快的解决问题,我比较喜欢它的弱类型特性,再也不用担心申明变量类型出错的问题了。当然,C语言作为永垂不朽的经典语言,当然也是很好的。
    回复

    使用道具 举报

    该用户从未签到

    发表于 2015-11-30 01:31:31 | 显示全部楼层
    支持,看起来不错呢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-11-30 07:50:25 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-11-30 09:27:14 | 显示全部楼层
    支持,看起来不错呢!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-3-4 11:35
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2015-11-30 13:40:01 | 显示全部楼层
    支持,看起来不错呢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-11-30 18:59:04 | 显示全部楼层
    支持,看起来不错呢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-11-30 19:37:57 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-11-30 23:15:30 | 显示全部楼层
    支持,看起来不错呢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-12-1 11:39:19 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-12-1 15:36:21 | 显示全部楼层
    感谢楼主的分享~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-11-23 20:01 , Processed in 0.033924 second(s), 12 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部