1.知识回顾
1.1实践
<script>
var i=0;
for(i=0;i<3;i++){
var score = Number(prompt("请输入第"+(i+1)+"个同学的成绩",""));
if(i==0){
document.write("第一个同学的成绩:"+"<br />");
}else if(i==1){
document.write("第二个同学的成绩:"+"<br />");
}else{
document.write("第三个同学的成绩:"+"<br />");
}
if(score>=90){
document.write(score+"<br />"+"优秀"+"<br /><br />");
}else if(score>=70){
document.write(score+"<br />"+"良"+"<br /><br />");
}else if(score>=60){
document.write(score+"<br />"+"中"+"<br /><br />");
}else{
document.write(score+"<br />"+"差"+"<br /><br />");
}
}
</script>
1.2理论
分支:
if分支:单分支(if),双分支(if...else),多分支(if...else if...else...)
switch分支:switch case break default
循环:
while:固定次数(1.计数变量 2.条件判断 3.循环体 4.变量更新),不定次数
do...while:与while类似,区别是条件不成立时,do...while至少执行一次
for:主要用于固定次数循环
2.循环的使用
2.1 百钱买百鸡问题
公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少可能性?
分析:
设公鸡,母鸡,小鸡的个数分别是x,y,z
可设方程:x+y+z=100 2x+y+0.5z=100
由此可知x,y,z的取值范围
<script>
var i=1;
var m=1;
var x=1;
var num1=0;
var num2=0;
for(i=1;i<48;i++){
for(m=1;m<98;m++){
x = 100 - m -i;
if((2*i+m+(0.5*x))==100){
document.write("公鸡:"+i+"母鸡:"+m+"小鸡:"+x+"<br />");
num1++;
}
/*if((2*i+m+(0.5*x))<=100){
document.write("公鸡:"+i+"母鸡:"+m+"小鸡:"+x+"<br />");
num2++;
}*/
}
}
document.write("正好花100文:"+num1+"<br />");
//document.write("不一定花光100文:"+num2);
</script>
2.2 倒叙输出100以内的偶数
var i=100;
while(i>0){
document.write(i+"<br />");
i--;
i--;
}
for(i=100;i>0;i--){
if(i%2==0){
document.write(i+"<br />")
}
}
2.3 计算1-10类加的和,并输出和大于20时假的值/停止循环(break)
var sum =0;
var flag=0;
for(i=1;i<=10;i++){
sum+=i;
if(sum>20&&flag==0){
flag=1;
document.write(i+"值<br />");
//break;
}
}
document.write(sum);
2.4 计算五个学生的成绩,计算总成绩和平均分,若输入了错误的成绩,则不再计算
<script>
var i = 0;
var avg = 0;
var count=0
var flag = 0;
for(i;i<5;i++){
var score = Number(prompt("",""));
avg += score;
if(score<0||score>100){
flag++;
//document.write("输入错误不能输出总分和平均分");
}else if(score<80){
//continue;
}else{
count++;
}
}
/*if(flag==true){
document.write("总分:"+ avg+"<br />平均分:"+(avg/5));
}*/
document.write("有效成绩个数:"+(5-flag));
document.write("<br />80分以上比例:"+(count/(5-flag)));
</script>
2.5 输入5个人的分数,统计80分以上的比例,要求用continue实现
var count = 0;
for(var i=1;i<=5;i++){
var score = Number(prompt("请输入第"+i+"个学生的分数",""));
if(score<80){
continue;
}
count++;
}
document.write((count/5)*100+"%");
2.6 双层循环的练习
2.6.1 5*5的方阵
/*
5行5列
*****
*****
*****
*****
*****
*/
//外层循环控制行数
/*
for(var i=1;i<=5;i++){
//内存循环控制(列数)每行输出的内容
for(var j=1;j<=5;j++){
document.write("*");
}
document.write("<br>")
}
*/
2.6.2 5*5 三角方阵
/*
5行5列
* 1 1
** 2 2
*** 3 3
**** 4 4
***** 5 5
*/
//外层控制行数
/*for(var i=1;i<=5;i++){
//内层控制列数
for(var j=1;j<=i;j++){
document.write("*");
}
document.write("<br/>");
}*/
2.6.3 输出乘法口诀表
for(var i=1;i<=9;i++){
for(var k=1;k<=i;k++){
document.write(k+"*"+i+"="+(i*k)+" ");
}
document.write("<br />");
}
3. 数组
费曼学习法:对学过的东西向别人表述,确保别人能听懂
3.1 什么是数组(数组就是一组数据)
数组(Array)是有序的元素序列。若将有限个变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把若干元素按有序的形式组织起来的一种形式。这些有序排列的数据元素的集合称为数组。数组是用于储存多个相同类型(强类型语言存储相同类型的数据java,c#。弱类型语言的数组,可以存储各种类型的数据)数据的集合。
数组是有次序的元素序列:数组中的每一个元素都有一个属于自己的编号;编号从0开始,到数组长度减1为止, 被称为下标。
数组的中数据如何存取:通过下标存取,就是区分数组中的每一个数据。
3.2 为什么要用数组
对于存储大量数据的时候, 数组可以方便的批量开辟空间,存储批量数据,不需要一个一个定义变量。
3.3数组的常规使用
3.3.1创建数组:
// 方式一:创建一个空数组,没有空间长度 var 数组名 = new Array(); // 方式二:创建指定长度空间的数组 var 数组名 = new Array(长度数字); // 方式三:创建具有一些初始值的数组 var 数组名 = new Array(数据1,数据2,数据3); // 方式四: 用字面量"[]",创建空数组。**常用** var 数组名 = []; // 方式五: 用字面量"[]",创建有初始值的数组 **常用** var 数组名 = [数据1,数据2,数据3...];
3.3.2 数组的取值和赋值:
数组取值:数组名[下标];
数组赋值(修改):数组名[下标] = 要修改的值;
①如果数组没有存储数据,输出的结果是undefined;
②访问数组长度以外iade空间元素,返回undefined;
③越界设置数据,会动态扩展数组长度;
3.3.3 数组的遍历
使用for循环:
var ary = ["abc",100,2.234,new Date()];
document.write("长度:"+ary.length+"<br/>");
for(var i=0;i<ary.length;i++){
//使用 数组名[下标] 访问每个数组元素
document.write(ary[i]+"<br/>")
}
使用forEach:
//使用for each方式输出数组元素
// 其中i是数组的下标
for(var i in ary){
alert(i+" : "+ary[i]);
}