JS循环语句

第1关:while类型
任务描述
质数的定义如下:大于1的自然数,且除了1和本身外没有别的因数。如2、3、5、7。
本关任务:利用循环结构求质数的和。
相关知识
在选择结构中,条件会被测试一次,成立则执行if内语句,结束后回到主线执行下一条语句。循环结构在执行结束后会再次判断条件是否成立,这样一直重复下去直到条件不成立。
本关将介绍while型循环结构。
while类型
while类型的循环结构如下:
while(条件表达式)
{
//条件成立执行里面的语句
}
和条件语句一样,循环语句先判断条件表达式是否成立,如果成立,执行大括号内部的语句块;如果不成立则直接跳过循环体。如下:
在这里插入图片描述
语句块执行结束后,再次回到条件表达式,判断表达式是否成立,成立则执行大括号内语句块,不成立执行循环体外下一句。这个过程会一直重复进行,直到条件表达式不再成立为止,也就是说,大括号内的语句块有可能被执行多次。
在执行大括号内的语句块的过程中,条件表达式内的某些变量的值会被改变,等到下一次执行的时候条件表达式有可能不再成立。这样循环会在有限的次数内结束。
输出100以内的偶数的例子:
var i = 0;
while(i <= 100) {
console.log(i);
i = i+2;//条件表达式里面变量i的值改变了
}
在上面的例子中,条件表达式中的i变量会在循环体内被加上2,这样总会在某个循环时,条件表达式不再成立,循环结束。
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
求出小于等于整数a的所有质数;
计算并返回所有这些质数的和;
具体请参见后续测试样例。
测试说明
测试过程:
平台将读取用户补全后的DoWhile.js;
调用其中的mainJs()方法,并生成若干组测试数据;
接着根据测试结果判断程序是否正确。
以下是测试样例:
测试输入:
20
预期输出:
77
海到无边天作岸,山登绝顶我为峰。 ——林则徐
如果你觉得这一关的内容对你有帮助,请你在下面点赞。
参考代码:

function mainJs(a) {
    a = parseInt(a);
	//请在此处编写代码
	/********** Begin **********/
    var sum=0;
    var i=2;
    while(i<=a){
        var j=2;
        while(j<i){
            if(i%j==0){
                break;
            }
            j++;
        }
        if(j==i){
            sum+=i;
        }
        i++;
    }
    return sum;
	/********** End **********/
}

第2关:do while类型
任务描述
本关任务:完成一个函数,用于计算两个参数之间的所有整数的和。
相关知识
上一关介绍的while型循环结构又被成为“当”型循环结构,本关将介绍“直到”型循环结构:do while。
do while类型
do whle类型会在循环体的末尾判断条件表达式是否成立,也就是说,循环体内的语句至少会执行一次。结构如下:
do
{
//循环体内的语句
}
while(条件表达式);
第一遍循环体内的语句执行结束后,检测条件表达式的返回值,如果返回true将会第二次执行循环体,返回false结束循环,如下:
在这里插入图片描述
还是第一关中的例子,输出100以内的偶数,我们换一种解决方案:
var i = 0;
do{
console.log(i);
i = i+2;
} while(i <= 100);
这种do while循环适合用在循环体至少会被执行一次的场景。
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
求出并返回参数a和b之间的所有整数的和,不包括这两个端点;
具体请参见后续测试样例。
测试说明
测试过程:
平台将读取用户补全后的DoWhileFunction.js;
调用其中的mainJs()方法,并生成若干组测试数据;
接着根据测试结果判断程序是否正确。
以下是测试样例:
测试输入:
1,5
预期输出:
9
海到无边天作岸,山登绝顶我为峰。 ——林则徐
如果你觉得这一关的内容对你有帮助,请你在下面点赞。
参考代码:

function mainJs(a,b) {
    a = parseInt(a);
    b = parseInt(b);
	//请在此处编写代码
	/********** Begin **********/
    var i=a;
    var sum=0;
   do{
       i++;
       if(i<b){
           sum+=i;
       }
   }while(i<b);
    return sum;
	/********** End **********/
}

第3关:for类型
任务描述
定义“倒数”如下:把一个数的各位的顺序颠倒,如1234的“倒数”是4321。
本关任务:求一个数的“倒数”。
相关知识
while和do while的一个缺点是循环的次数不够直观,需要通过计算表达式何时返回false确定。JavaScript提供了新的循环结构:for型,这种结构把条件表达式和循环次数并列书写,便于控制循环次数。
for型
for型循环的结构如下:
for(初始化;条件表达式;修改值)
{
//条件表达式成立执行的语句块
}
初始化、条件表达式、修改值都操作控制循环次数的变量,初始化对该变量赋一个初值,紧接着执行条件表达式,如果返回true则进入循环体内,否则直接跳过循环体。如下:
在这里插入图片描述
循环体内执行结束后,修改值操作会修改变量的值,紧接着再次执行条件表达式,根据返回值决定是否进入循环体,这个步骤会一直重复进行下去,直到条件表达式返回false,循环结束。
初始化只执行一次,条件表达式在每一次进入循环体之前执行,修改值在每次执行完循环体之后进行。这三个式子都可以没有,但是整个括号内必须有两个分号。
还是以上一关中的输出小于等于100的偶数为例子:
for(var i = 0;i <= 100;i+=2) {
console.log(i);
}
与上一关不同的是,这里变量i的初始化和增加都是在括号内,循环体内只有一句。
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
计算并返回整数a的“倒数”;
具体请参见后续测试样例。
测试说明
测试过程:
平台将读取用户补全后的ForIn.js;
调用其中的mainJs()方法,并生成若干组测试数据;
接着根据测试结果判断程序是否正确。
以下是测试样例:
测试输入:
1234
预期输出:
4321
测试输入:
78
预期输出:
87
海到无边天作岸,山登绝顶我为峰。 —— 林则徐
如果你觉得这一关的内容对你有帮助,请你在下面点赞。
参考代码:

function mainJs(a){
    a = parseInt(a);
	//请在此处编写代码
	/********** Begin **********/
    a=a.toString();
    var num="";
    for(var i=0;i<a.length;i++){
        num+=a[a.length-i-1];
    }
    return num;
	/********** End **********/
}

第4关:for in类型
任务描述
苹果apple有多个属性表示它的产地,比如locationProvince表示省份,这些属性都以location开头,和产地无关的属性都不以location开头。
本关任务:完成一个计算苹果产地的函数。
相关知识
for in型
JavaScript的for in循环主要用于枚举对象的可枚举属性名,可枚举属性的定义请参考《JavaScript学习手册四:JS对象》。
对象类型是键值对的集合,键指的是属性的名字,值指的是属性的值。
for in除了枚举对象自己拥有的可枚举属性外,还会枚举继承的可枚举属性。
var orange = {
color:“orange”,
weight:200,
location:“GanZhou”,
date:“October”
};
for(var att in orange) {
console.log(att);//依次输出color,weight,location,date
}
注意:上述代码中,att 是临时变量,可以是其他名称。
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
求出apple对象所有表示产地的属性的值(这些值都是字符串),然后拼接这些值,并返回;
注意我们有可能通过参数a和b给apple添加新的表示产地的属性,也有可能修改已有的属性的值,所以不要投机取巧哦;
提示:a.indexOf(“location”)的结果如果为0,表示字符串a以location开头;
具体请参见后续测试样例。
测试说明
测试过程:
平台将读取用户补全后的ForInFunction.js;
调用其中的mainJs()方法,并生成若干组测试数据;
接着根据测试结果判断程序是否正确。
以下是测试样例:
测试输入:
locationCounty,米脂县
预期输出:
陕西省榆林市米脂县
海到无边天作岸,山登绝顶我为峰。 —— 林则徐
如果你觉得这一关的内容对你有帮助,请你在下面点赞。
参考代码:

var apple = {
    weight:"200克",
    level:"特级",
    locationProvince:"陕西省",
    locationCity:"榆林市"
}
function mainJs(a,b){
    apple[a]= b;
	//请在此处编写代码
	/********** Begin **********/
    var result="";
    for(var x in apple){
        if(x.indexOf("location")==0){
            result+=apple[x];
        }
    }return result;
    
	/********** End **********/
}

第5关:break和continue的区别——break
任务描述
本关任务:求数组中的质数。
相关知识
前四关介绍了四种循环结构,这些结构都是建立在已知循环次数的基础上。在很多情况下,不能确定循环次数,即循环会在进行到满足某个特定的条件时结束。比如,当数组中出现第二个整数0时,结束元素的输出。这些情况下就需要使用break和continue关键字帮助结束循环。本关介绍关键字break。
break
break的作用是跳出循环,跳过循环体内break下面的所有语句以及剩余的所有循环,而直接执行循环体外下面的第一句。break通常和if条件语句一起使用,表示满足该条件时结束循环。
for(;😉
{
if(条件语句) break;
}
//满足条件时直接跳到这里执行
下面的例子输出一个数组,当遇到数组中第一个负数时,结束输出。
//下面的整个程序将依次输出12,23,满足条件直接执行我这里!
var arr = [12,23,-1,45,2,0,-1];
for(var i = 0;i < arr.length;i++) {
if(arr[i] < 0) break;
console.log(arr[i]);
}
console.log(“满足条件直接执行我这里!”);
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
返回数组arr中第一个质数;
具体请参见后续测试样例。
测试说明
测试过程:
平台将读取用户补全后的BreakContinue;
调用其中的mainJs()方法,并生成若干组测试数据;
接着根据测试结果判断程序是否正确。
以下是测试样例:
测试输入:
9,8,4,1,2
预期输出:
2
海到无边天作岸,山登绝顶我为峰。 ——林则徐
如果你觉得这一关的内容对你有帮助,请你在下面点赞。
参考代码:

function mainJs(a) {
    var arr = a.split(",");
    for(var k = 0,length = arr.length;k < length;k++) {
        arr[k] = parseInt(arr[k]);
    }
	//请在此处编写代码
	/********** Begin **********/
    for(var i=0;i<length;i++){
      var b=arr[i];
	  var j=2;
	 for(var j=2;j<b;j++){
		 if(b%j == 0) break;
	 }
	  if(b==j){
		  break;
	  }
	}return arr[i];
    
	/********** End **********/
}

第6关:break和continue的区别——continue
任务描述
本关任务:计算数组中所有正数或者所有负数的和。
相关知识
上一关介绍了关键字break的使用,continue是一个和break含义十分接近的关键字,本关将详细剖析continue的用法。
continue语句
continue的作用是结束本次循环,即循环体内continue下面的语句不再执行,直接进入下一个循环周期。
比如上一关的例子中,原要求是遇到第一个负数时结束输出。现在把要求改成:输出数组中的所有正数。这个时候就需要用到continue语句。
//只输出所有的正数,程序将依次输出12,23,45,2
var arr = [12,23,-1,45,2,0,-1];
for(var i = 0;i < arr.length;i++) {
if(arr[i] <= 0) continue;
console.log(arr[i]);
}
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
a是一个数字数组,b是非零整数;
如果b为正数,计算a中所有正数的和;如果b是负数,计算a中所有负数的和;
具体请参见后续测试样例。
测试说明
测试过程:
平台将读取用户补全后的BreakContinueFunction.js;
调用其中的mainJs()方法,并生成若干组测试数据;
接着根据测试结果判断程序是否正确。
以下是测试样例(分号前面是数组a,分号后面是b):
测试输入:
-2,1,4,6,-1;1
预期输出:
11
海到无边天作岸,山登绝顶我为峰。 ——林则徐
如果你觉得这一关的内容对你有帮助,请你在下面点赞。
参考代码:

function mainJs(a,b) {
    a = a.split(",");
    for(var i = 0,length = a.length;i < length;i++) {
        a[i] = parseInt(a[i]);
    }
    var sum = 0;
    for(var i = 0,length = a.length;i < length;i++) {
	//请在此处编写代码
	/********** Begin **********/
    if(b>0&&a[i]<0){
        continue;
    }
    if(b<0&&a[i]>0){
        continue;
    }
	/********** End **********/
        sum += a[i];
    }
    return sum;
}
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值