一些简单的编程题(函数应用练习)

1. 定义函数,输入3个参数,求和。
-----
2. 定义函数,输入年份,判断年份是否是闰年
------
3. 定义函数,打印1999--2050年中间所有的闰年。
------
4. 定义函数,输入一个日期,判断该日期是否合法;例如:输入 2015-2-29不合法。
------
5. 定义函数,用最好的排序法进行排序数列。
------

1.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数法:求三个参数的和</title>
    <style>
        p{
            font:bold 16px "微软雅黑";
            color:red;
        }
    </style>
</head>
<body>
<!--题目:定义函数,输入3个参数,求和。-->
<script>
    /**
     * @param a   input user first number
     * @param b   input user second number
     * @param c   input user third number
     * @returns {*}  sum
     */
    function sum(a,b,c) {
        return (a+b+c);
    }
    var num1=+prompt("请输入第一个数字:");
    var num2=+prompt("请输入第二个数字:");
    var num3=+prompt("请输入第三个数字:");
    var total=sum(num1,num2,num3);
    document.write("<p>三个数的和为:</p>");
    document.write(num1+"+"+num2+"+"+num3+"="+total);
</script>
</body>
</html>


2.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>判断是否闰年和平年</title>
</head>
<body>
<!--题目:定义函数,输入年份,判断年份是否是闰年-->
<script>
    var year=+prompt("请输入年份:");
    var result=isLeapYear(year);
    if(result){
        document.write(year + "是闰年.");
    }else{
        document.write(year + "是平年.");

    }

    /**
     * isLeapYear函数是用力判断是否是闰年
     * @param num      input user years
     * @returns {boolean}    return result(Boolean)
     */
    function isLeapYear(num) {
        if((num%4==0 && num%100!=0 )|| num%400==0){
            return true;
        }else{
            return false;
        }
    }
</script>
</body>
</html>


3.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>输出1999-2050所有的闰年</title>
    <style>
        p{
            font: bold 16px "微软雅黑";
            color:red;
        }
    </style>
</head>
<body>
<!--题目:定义函数,打印1999--2050年中间所有的闰年。-->
<script>
    document.write("<p>1999--2050年中间所有的闰年:</p>");
    outputLeapAllYear();
    /**
     * outputLeapAllYear是一个输出所有闰年的函数
     * @param i  遍历1999到2050的所有数字
     * @param value 临时存放isLeapYear(i)的Boolean值。
     */
    function outputLeapAllYear() {
        for(var i=1999;i<=2050;i++){
            var value=isLeapYear(i);
            if(value){
                document.write(i+"   ");
            }
        }
    }

     /**
     * isLeapYear函数是用力判断是否是闰年
     * @param num      input user years
     * @returns {boolean}    return result(Boolean)
     */
    function isLeapYear(num) {
        if((num%4==0 && num%100!=0 )|| num%400==0){
            return true;
        }else{
            return false;
        }
    }
</script>
</body>
</html>


4.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>判断年份输入是否正确</title>
</head>
<body>
<!--题目:定义函数,输入一个日期,判断该日期是否合法;例如:输入 2015-2-29不合法。-->
<script>
    //定义全局变量,使输出能够判断哪里出错
    var output;
    var year=+prompt("请输入日期的年份:");
    var month=+prompt("请输入日期的月份:");
    var day=+prompt("请输入日期的日份:");
    var result=days(year,month,day);
    //使输出更加智能
    if(result){
        output="合法!";
    }
    alert("您输入的"+year+"-"+month+"-"+day+"是"+output);


    /**
     * days函数主要判断年月日是否符合,是此题解答的核心代码
     * @param a b c 分别代表年月日
     *
     */
    function days(a,b,c) {
        //最开始判断年份是否大于0
        if(a>0){
        //1,3,5,7,8,10,12有31天
        if(b==1||b==3||b==5||b==7||b==8||b==10||b==12){
            if(c>0 && c<=31){
                return true;
            }else{output="天数不合法!"}

        }else if(b==4||b==6||b==9||b==11){              //4,6,9,11有30天
                if(c>0 && c<=30){
                    return true;
                }else{output="天数不合法!"}


        }else if(b==2){                                 //闰年2月有29天,平年2月有28天
                if(isLeapYear(a)){
                    if(c>0 && c<=29){
                        return true;
                    } else{output="天数不合法!"}
                }else if(c>0 && c<=28){
                    return true;
                }else{output="天数不合法!"}
        }else{output="月份不合法!"}
    }else{output="年份不合法!"}
    }


    /**
     * isLeapYear函数是用力判断是否是闰年
     * @param num      input user years
     * @returns {boolean}    return result(Boolean)
     */
    function isLeapYear(num) {
        if((num%4==0 && num%100!=0 )|| num%400==0){
            return true;
        }else{
            return false;
        }
    }
</script>
</body>
</html>
另解4:算法思维比较清晰,没有深入嵌套if
function isLeap(year){
//简写,一行顶三行
    return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
    /*if( year % 4 ==0 && year % 100 != 0 || year % 400 == 0){
        return true;
    }else{
        return false;
    }*/
}

function printAllLeap(from, to){
    for (var year = from; year <= to; year++){
        if (isLeap(year)){
            document.write(year + " ");
        }
    }
}
//这个算法思路比较简单,写起来比较顺。没有深入的if嵌套。
function isLegal(year, month, day){
    // 把一些明显不合法的先拦截掉
    if (month > 12 || month < 1 || day > 31 || day < 1) return false;
    // day [1,31]
    if (month == 4 || month == 6 || month == 9 || month == 11){
        return day <= 30;
    }else if (month == 2){
        if (isLeap(year)){
            return day <= 29;
        }else{
            return day <= 28;
        }
    }
    return true;
}

5.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>求n个参数的最大值</title>
</head>
<body>
<!--题目:输入一串数列,排序使用冒泡sort,并从小到大输出-->
<!--数据结构中八大排序,冒泡性能相对而言比较高,时间复杂度:O(n^2)比较稳定
    快排时间复杂度:O(nlogn),但极其不稳定。而选择排序算法会比较容易理解,但也是不稳定。
    所以选择冒泡排序演示排序问题。
    -->
<script>
var temp;
var arr=[12,34,64,6,99,88,102];
//输出原始顺序
document.write("原始数据:");
for(var n=0;n<arr.length;n++){
    document.write(arr[n]+" ");
}
document.write("<br>");
bubbleSort(arr);
//输出,从小到大.排序好的数。
document.write("排序顺序:");
for(var m=0;m<arr.length;m++){
    document.write(arr[m]+" ");
}


/**
 * bubbleSort冒泡排序
 * @param arr 数组数据
 * @param temp 临时变量 用以提供一个空容器
 */
function bubbleSort(arr){
    //趟数:一共要经过arr1.length-1的扫描,经过这个循环一次,有一个最大的值就已经在该正确(排序好)的位置了
    for(var i=0;i<arr.length-1;i++){
        //每一趟相邻两两比较
        for(var j=0;j<arr.length-1-i;j++){
            // >就是升序 ,<就是降序
            if(arr[j]>arr[j+1]){
                temp=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=temp;
            }
        }
    }
}

</script>
</body>
</html>


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值