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>