一.计算线性函数值
当x<1的时候,y=x;1<=x<10的时候,y=2x-1;x>=10的时候,y=3x-11。写一段程序,输入x,输出y值。
分析:该函数根据x值域分成两个函数,因此只需根据输入的x值来判断需要构造那一段函数,实现代码如下:
<div class="practice2">
请输入一个大于0的x值:
<input type="text" name="test21" id="test21" value="" />
<input type="button" name="test22" id="test22" value="输出y值" />
<span id="test23" style="color: red;"></span>
</div>
<script type="text/javascript">
document.getElementById("test22").onclick = function(){
var x = parseFloat(document.getElementById("test21").value);
if(x>0){
if(x<1){var y = x;}
if((x>=1)&&(x<10)){var y = 2*x-1;}
if(x>=10){var y = 3*x-11;}
document.getElementById("test23").innerHTML = "y的值为:"+y;
}else{document.getElementById("test23").innerHTML = "输入错误,请重新输入!";}
}
</script>
二.求奇数偶数和
打印1-100的数,并求1-100之和,奇数之和,偶数之和。
分析:可利用i%2结果是否等于1或者0来判断这些是否为奇数或者偶数,实现代码如下:
<div class="practice3">
<input type="button" name="test31" id="test31" value="点击打印1-100" />
<div id="test32" style="color: red;"></div><br />
<input type="button" name="test33" id="test33" value="点击计算1-100奇数和" /><br />
<div id="test34" style="color: red;"></div><br />
<input type="button" name="test35" id="test35" value="点击计算1-100偶数和" />
<div id="test36" style="color: red;"></div><br />
</div>
<script type="text/javascript">
document.getElementById("test31").onclick = function(){
for(var i = 1;i < 101;i++){
document.getElementById("test32").innerHTML += (i+',');//innerHTML每输入一个元素,就会把上一个div删除,所以需要用上+=
if(i%10 == 0){
document.getElementById("test32").innerHTML += ("<br>");
}
}
}
document.getElementById("test33").onclick = function(){
var sum = 0;
for(var i = 1;i < 101;i++){
if(i%2 == 1){
sum += i;
}
}
document.getElementById("test34").innerHTML = sum;
}
document.getElementById("test35").onclick = function(){
var sum = 0;
for(var i = 1;i < 101;i++){
if(i%2 == 0){
sum += i;
}
}
document.getElementById("test36").innerHTML = sum;
}
</script>
三.将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个各个位立方之和等于该整数的三位数(个位数立方 + 十位数立方 + 百位数立方 = 这个整数)。
解析:定义三个变量分别提取这个三位数中的个位,十位和百位,然后进行计算判断,注意JS中/号求商不是求余,代码如下:
<div class="pratice4">
<input type="button" name="test41" id="test41" value="点击打印水仙花数" />
<div id="test42" style="color: red;"></div><br />
</div>
<script type="text/javascript">
document.getElementById("test41").onclick = function(){
for(var i = 100; i < 1000;i++){
var bit = parseInt(i/100);
var decade = parseInt((i-bit*100)/10);
var unit = i - bit*100 - decade*10;
if(Math.pow(bit,3)+Math.pow(decade,3)+Math.pow(unit,3) === i){
document.getElementById("test42").innerHTML += (i+',');
}
}
}
</script>
四.输入两个数,求最大公约数和最小公倍数(辗转相除法)
解析:辗转相除法求求最大公约数:设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=q......r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,……如此下去,直到能整除为止。其最后一个为被除数的余数的除数即为(a, b)。例如:a=25,b=15,a/b=1......10,b/10=1......5,10/5=2.......0,最后一个为被除数余数的除数就是5,5就是所求最大公约数(百度)。只需构造函数,相互交换除数和商再次相除,然后对余数进行判断即可,代码如下:
<script type="text/javascript">
function f(a,b){
var temp = b;
while(b > 0){
temp = a%b;
a = b;//最后一步执行后b的值赋给a了,所以最小公倍数为a
b = temp;
}
return a;
}
function g(a,b){
for(i=a;i <= a*b;i ++){
if ((i%a==0)&&(i%b==0))break;
}
return i;
}
document.getElementById("test53").onclick = function(){
var x = +document.getElementById("test51").value;//参考day04笔记的作用域链问题,如果x,y放在外面,函数无法访问
var y = +document.getElementById("test52").value;
if((x%1 == 0)&&(y%1 == 0)){
if(x>y){
document.getElementById("test54").innerHTML = f(x,y);
document.getElementById("test56").innerHTML = g(x,y);
}
else{
document.getElementById("test54").innerHTML = f(y,x);
document.getElementById("test56").innerHTML = g(y,x);
}
}else{
document.getElementById("test54").innerHTML = "输入有误,请重新输入!";
}
}
</script>
五.输入一个日期(年, 月, 日), 计算这一天是这一年的第几天
解析:首先判断这一年是不是闰年,再根据是否是闰年来确定二月的天数,最后将该月前面的月份相加,结果再加上这一天的号即可,注意所有从html获取的值在js中都是字符串,需要将其进行数值化才能参与运算,代码如下:
<div class="practice8">
请输入年月日:
<input type="text" name="test61" id="test61" value="" />年
<input type="text" name="test62" id="test62" value="" />月
<input type="text" name="test63" id="test63" value="" />日
<input type="button" name="test64" id="test64" value="结果" />
这是第<span id="test65" style="color: red;"></span>天<br />
</div>
<script type="text/javascript">
document.getElementById("test64").onclick = function(){
var year = +document.getElementById("test61").value;
var month = +document.getElementById("test62").value;
var days = +document.getElementById("test63").value;
var sum = 0;
var date = [31,28,31,30,31,30,31,31,30,31,30,31];
if((year%4==0&&year%100 !==0)||year%400===0){
date[1] = 29;
}
for (var i = 0;i < month-1;i++) {
sum += date[i];
}
sum += days;
document.getElementById("test65").innerHTML = sum;
}
</script>