案例(-)
1.如果今天是星期二,那么1000天后是星期几?用户输入一个天数,计算这个天数是星期几?
案例分析:如果今天是星期2,7天后是星期2;
如果今天是星期2,14天后是星期2;
.............................. 21天后是星期2;
23 天后是星期4
如果今天的1天后是星期3,8天后也是星期3,15天以后也是星期3
49天后,也是星期2.因为49%7 结果为0
79天后,是星期4。因为79%7 结果是2;相当于2天后
所以1000后的星期几就是要看简化为相当 于几天后
1000%7 结果是6,相当于6天后的星期,6天后就是星期1
//用户输入今天星期几
var today=parseInt(prompt('请输入今天是星期几','1'));
// 用户输入多少天后
var num=parseInt(prompt('请输入多少天后','1000'));
// 假设今天是星期1,7天后也是星期1
// 14天后也是星期1
// 15天后是星期2
// 17天后是星期4
// num%7=day (满足num%7==0)
// (num%7+today)%7 =day (满足 num%7 !=0 )
var day= (num%7+today)%7;
if(day==0){
alert(num+'天后是星期天')
}else{
alert('假设今天是星期'+today+','+num+'天后是星期'+day);
}
<script type="text/javascript"> var num=parseInt(prompt('请输入今天星期几','2')); var week=['星期日','星期一','星期二','星期三','星期四','星期五','星期六'] var day=(1000%7+num)%7; console.log(week[day]); </script>
2. 用户输入一个三位数,弹出各个数位的和
比如: 用户输入155 ,就弹出11
用户输入316 ,就弹出10
用户输入989;就弹出26
用户输入678; 就弹出21
分析: 用户输入的数字都很简单,需要想办法拆分得到每个位数,再进行求和
个位数: 155%10=5;
十位数:parseInt(155/10)%10=5;
百位数: parseInt(155/100)=1
var num= parseInt(prompt('请输入一个三位数','234')); var ge=num%10; var shi=parseInt((num/10)%10) ; var bai=parseInt(num/100); var sum=ge+shi+bai; console.log(sum);
3.利用arguments对象,输出无限参数之和
<script type="text/javascript"> function sum(){ var sum=0; for(var i=0; i<arguments.length; i++){ sum+=arguments[i]; } return sum; } console.log(sum(1,43,542,54,54)); </script>
4.设计一个函数,check如果只有一个参数,那么就是检查这个数是否是偶数。如果传两个参数,就检查这两个参数奇偶性是否相同。
<script type="text/javascript"> function check(){ switch(arguments.length){ case 1: return arguments[0]%2==0 ? true :false; break; case 2: return (arguments[0]+arguments[1])%2==0 ? true:false; break; default: throw new Error('输入错误,请检查。只支持1 和2 个参数'); } } console.log(check(8)) console.log(check(8,8)); console.log(check(8,8,8)); </script>
arguments的功能,是模拟函数的重载,使用一个函数,根据参数的个数不同,有不同的作用。
比如我们做设计一个sum函数,如果传进来一个参数,就得到1;如果是传2个参数,那么返回两个数字的和。比如:
//模拟函数重载,如果有两个参数,返回两个数的和,就要用arguments.length实际参数的个数,进行判断 function sum(a,b){ switch(arguments.length){ case 1: return ++a; break; case 2: return a + b; break; } /*if(arguments.length == 1){ return ++a; }else if(arguments.length == 2){ return a + b; //return arguments[0] + arguments[1]; }*/ } console.log(sum(10)) console.log(sum(10,2))
5.编写函数maxr(char) 返回字符串char中最长的连续重复字母