for循环和数组练习
//公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少种可能
var ci =0; for(var g=1;g<50;g++){ for(var m=1;m<100;m++){ for(var x=1;x<100;x++){ if(g*2+m*1+x*(0.5)==100&&g+m+x==100){ ci+=1; console.log("买公鸡"+g+"只,母鸡"+m+"只,小鸡"+x+"只"); } } } } console.log("有"+ci+"种可能");
结果为:
![](https://images2018.cnblogs.com/blog/1413463/201806/1413463-20180622215136432-1159395806.png)
//羽毛球拍15元,球3元,水2元,200元每种至少一个,有多少种可能
js代码为:
var ci=0;
for(var a=1;a<15;a++){
for(var b=1;b<67;b++){
for(var c=1;c<100;c++){
if(a*15+b*3+c*2==100){
ci+=1;
console.log("买羽毛球拍"+a+"副,球"+b+"个,水"+c+"瓶");
}
}
}
}
console.log("有"+ci+"种可能");
结果:
![](https://images2018.cnblogs.com/blog/1413463/201806/1413463-20180622215633589-121145854.png)
有一张0.0001米的纸,对折多少次可以达到珠穆朗玛峰的高度8848
var gao = 0.0001; var c = 0;//对折次数 for(var i = 0;i >= 0;i++){ gao = gao*2;//对折后纸张厚度 c++; console.log(gao); if(gao >= 8848){ break; } } console.log(c); //对折次数
结果:
例子:一个球从100米的高度自由下落,每次落地后反跳回原高度的一半,再落下,求它在第10次落地时,共经过多少米,第10次反弹多高?
js代码:
//方法一 var h=100; var s=0; var s1=0;//上升总路程 var s2=0;//下降总路程 for(var i=1;i<10;++i){ h=h/2;//每次反弹路程 console.log(h); s1=s1+h; s2=s2+h; s=s1+s2+100;//一共经过路程 console.log(s); } console.log("第十次落地时,共经过"+s+"米"); console.log("第十次反弹时高度为:"+h/2+"米");
结果:
//方法二
var h=100; var sum=0; for(var i=1;i<=10;++i){ sum += h;//上来的总高度 h = h/2;//每次反弹多高 // 第十次不需要反弹 if(i!=10){ sum += h;//下来时的高度 } } console.log(sum); console.log(h);//第十次反弹高度
结果:
![](https://images2018.cnblogs.com/blog/1413463/201806/1413463-20180622222945326-52969401.png)
js代码:
var lirun=prompt("请输入利润(单位万元)"); var jiangjin =0; if(lirun<=10){ jiangjin=lirun*0.1; }else if(lirun>10&&lirun<20){ jiangjin=10*0.1+(lirun-10)*0.075; }else if(lirun>=20&&lirun<40){ jiangjin=10*0.1+10*0.075+(lirun-20)*0.05; }else if(lirun>=40&&lirun<60){ jiangjin=10*0.1+10*0.075+20*0.05+(lirun-40)*0.03; }else if(lirun>=60&&lirun<100){ jiangjin=10*0.1+10*0.075+20*0.05+20*0.03+(lirun-60)*0.015; }else{ jiangjin=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(lirun-100)*0.01; } console.log("应该发总奖金:"+jiangjin*10000+"元");
结果例:
例子: 九九乘法口诀表
js代码:
var jieguo=0;//积 //九九表的行 for(var i=1;i<=9;i++){ //九九表的列 for(var j=1;j<=i;j++){ jieguo = i*j;//积 document.write("\t"+i+"*"+j+"="+jieguo);//公式 } document.write("<br>"); }
结果:
例子: 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
js代码:
var str =prompt('输入一串数组'); var arr =str.split(',');
//先把最大与最小值定义为第一个元素 var max =arr[0]; var min =arr[0];
//初始化 var sum =0; var sum1 =0; for(var i=0;i<arr.length;++i){
//选出最大的数组元素 if(max <= +arr[i]){ max=arr[i]; sum =i;//找到最大数组元素下标并存储 }
//选出最小的数组元素 if(min >= +arr[i]){ min=arr[i]; sum1 =i; } } arr[sum]=arr[0];//数组第一个元素与最大的元素交换 arr[0]=max;//最大数存储在第一个元素位置 arr[sum1]=arr[arr.length-1];//数组最后一个元素与最小的元素交换
arr[arr.length-1]=min;//最小的数给数组最后一个元素
alert(arr);
结果:
例子:
输入学生个数,每个学生的学号,姓名,三门课成绩,计算出平均成绩
js代码:
var num =prompt("输入学生的数量"); var stu = []; //记录学生信息 for(var i=0;i<num;i++){ stu[i]=[]; stu[i][0]=prompt( "请输入学生的姓名"); stu[i][1]=prompt( "请输入学生的编号"); stu[i][2]=prompt( "请输入学生的英语成绩"); stu[i][3]=prompt( "请输入学生的数学成绩"); stu[i][4]=prompt( "请输入学生的语文成绩"); } var avg =0; for(var i=0;i<num;++i){ //计算成绩的和 var sum=0; for(var j=2;j<stu[i].length;j++){ sum +=parseInt((stu[i][j]));//总成绩 } avg=sum/(stu[i].length-2);//求平均成绩 stu[i].push(avg);//存储记录平均成绩 alert(stu[i][0]+"的平均成绩:"+avg);//输出每个人的平均成绩
注意:
1.变量的作用域就是在大括号之内
2.写代码方向,易维护,易扩展,易复用
3.在写每个语句时,多写注释