0


JavaScript上部分--头歌(educoder)实训作业题目及答案


JS简介

第1关: JavaScript基础入门

<!DOCTYPE html>
<html>
    <head>
        <!-- 请在此处编写代码 -->
        <!---------Begin--------->
        <script>
        window.alert("Hello,JavaScript!");
        </script>
        <!---------End--------->
    </head>
    <body>
    </body>
</html>

第2关: JavaScript 与 HTML

<!DOCTYPE html>
<html>
    <!-- 请在此处编写代码 -->
    <!---------Begin--------->
    <head>
        <script>
        console.log("如何在HTML代码中嵌入JavaScript代码");
        </script>
    </head>
    <body>
    </body>
    <!---------End--------->
</html>

第3关: JavaScript 变量

var a = 1;
// 请在此处编写代码
/********** Begin **********/
var b = 100;
/********** End **********/
function variableTest(c) {
    /********** Begin **********/
    var a = 10;
    /********** End **********/
    return a*c+b;

}

JS 数据类型

第1关: JavaScript 数据类型介绍

function objectTest() {
    var a = {name:"myName",id:2};
    var b = [1,true,2];
    var c = 1;
    var d = "1";
    var e = true;
    var f;
    var aType,bType,cType,dType,eType,fType;
    //请在此处编写代码
    /********** Begin **********/
    aType = "object";
    bType = "array";
    cType = "number";
    dType = "string";
    eType = "bool";
    fType = "undefined";
    /********** End **********/
    return aType+","+bType+","+cType+","+dType+","+eType+","+fType;
}

第2关: JavaScript 数据类型转换

function mainJs(args1,args2,args3) {
    // 请在此处编写代码
    /*********Begin***********/
    var a = parseInt(args1);
    var b = parseInt(args2,16);
    var c = parseFloat(args3);
    /*********End***********/
    return a+b+c;
}

JS运算符

第1关: 算术运算符

function mainJs(a,b) {
//请在此处编写代码
/********** Begin **********/
    var a1 = parseInt(a);
    var b1 = parseInt(b);
    var c = a1%b1;
    a = a.toString();
    b = b.toString();
    c = c.toString();
/********** End **********/
    return a+b+c;
}

第2关: 比较和逻辑运算符

function mainJs(a,b) {
//请在此处编写代码
/********** Begin **********/
    if(a > b) {
        return a&&b;
    }
    else {
        return !a;
    }
/********** End **********/
}

第3关: 条件和赋值运算符

function mainJs(a,b) {
//请在此处编写代码
/********** Begin **********/
    return (a>b)?a:b;
/********** End **********/
}

第4关: 运算符的优先级和结合性

function mainJs(a,b) {
    var a = parseInt(a);
    var b = parseInt(b);
    //请在此处编写代码
    /********** Begin **********/
    var c = (--a+b)*b==24?1:0;
    var d = 4;
    var e = (c*=d)+d;
    /********** End **********/
    return e;
}

JS对象

第1关: 对象的创建

function Car(plate,owner) {
    this.plate = plate;
    this.owner = owner;
}

function Job() {};
Job.prototype.company = "myCompany";
Job.prototype.salary = 12000;

function mainJs(a,b,c,d,e) {
    //请在此处编写代码
    /********** Begin **********/
    var student = {name:a,gender:b};
    var myCar = new Car(c,d);
    var myJob =  new Job();
    myJob.company = e;
    /********** End **********/
    return student.name+student.gender+myCar.plate+myCar.owner+myJob.company;
}

第2关: 属性的增删改查

var store = {
    name:"Luma Restaurant",
    location:"No 22,Cot Road",
    accountant:"Vivian Xie",
    day1:3200,
    day2:3200,
    day3:3200,
    day4:3200,
    day5:3200,
    day6:3200,
    day7:3200,
    day8:3200,
    day9:3200,
    day10:3200
}
function reviseAttribute(reviser,date,attValue) {
    //Convert string to integer
    attValue = parseInt(attValue);
    //请在此处编写代码
    /********** Begin **********/
    store["day"+date] = attValue;
    store.accountant = reviser;
    /********** End **********/
    var totalSales =  store["day1"]+store["day2"]+store["day3"]+store["day4"]+store["day5"]+store["day6"]+store["day7"]+store["day8"]+store["day9"]+store["day10"];
    return totalSales+store.accountant;
}

第3关: 属性的检测和枚举

var orange = {
    weight:"200g",
    color:"orange",
    taste:"sour"
};
var car = {
    brand:"Jaguar",
    price:"$80000",
    model:"XFL"
}

function mainJs(a) {
    //请在此处编写代码
    /********** Begin **********/
    var result = "";
    if(a in car) {
        for(att in car) {
            result += att;
        }
    }
    else {
        for(att in orange) {
            result += att;
        }
    }
    return result;
    /********** End **********/
}

JS数组

第1关: 数组的创建、读写和长度

var array1 = [1,2,3,"js",4,true,"hello"];
var array2 = [true,true,"java",2.1];
function mainJs(a) {
    //请在此处编写代码
    /********** Begin **********/
    a = parseInt(a);
    if(array1.length == a) {
        return array1[array1.length-1];
    }
    else {
        return array2[array2.length-1];
    }
    /********** End **********/
}

第2关: 数组元素的增减

var testArray = [12,"java","js","c","c++",24,36,"python","c#","css"];
function mainJs(a,b) {
    a = parseInt(a);
    b = parseInt(b);
    //请在此处编写代码
    /********** Begin **********/
    for(var i = 0;i < a;i++) {
        var rearMember = testArray.pop();
        testArray.unshift(rearMember);
    }
    return testArray[b];
    /********** End **********/
}

第3关: 数组的遍历和多维数组

var arr = [1,2,3,4,5,6,7,8,9,0,10,11,12,13,14,15,16,17,18,19,20,21,23,22];
function mainJs(a,b) {
    a = parseInt(a);
    b = parseInt(b);
    //请在此处编写代码
    /********** Begin **********/
    //新建二维数组,行长为a,列长为b
    var multiArr = new Array(a);
    for(var i = 0;i < a;i++) {
        multiArr[i] = new Array(b);
    }
    //依次将原数组的元素放置在二维数组的相应位置上
    var count = 0;
    for(var i = 0;i < a;i++) {//先行
        for(var j = 0;j < b;j++) {//后列
            multiArr[i][j] = arr[count++];
        }
    }
    //返回二维数组
    return multiArr;
    /********** End **********/
}

第4关: 数组的常用方法

function mainJs(myArray) {
    myArray = myArray.split(",");
    //请在此处编写代码
    /********** Begin **********/
    //新建用来存储字符串a位置的数组
    var indexsArrayOfStringa = new Array();
    //新建用来存储字符串b位置的数组
    var indexsArrayOfStringb = new Array();
    //求出参数字符串的长度
    var myArrayLength = myArray.length;
    var index = 0;
    //遍历获得字符串a的所有位置
    while(index < myArrayLength) {
        index = myArray.indexOf("a",index);
        if(index == -1) break;
        indexsArrayOfStringa.push(index++);
    }
    index = 0;
    //遍历获得字符串b的所有位置
    //这两个函数千万不要合在一起写!!!
    while(index < myArrayLength) {
        index = myArray.indexOf("b",index);
        if(index == -1) break;
        indexsArrayOfStringb.push(index++);
    }
    //返回两个数组的和数组
    return indexsArrayOfStringa.concat(indexsArrayOfStringb);
    /********** End **********/
}

第5关: 数组的应用——内排序

function mainJs(a) {
    var arr = a.split(",");
    for(var i = 0;i < arr.length;i++) {
        arr[i] = parseInt(arr[i]);
    }
    //请在此处编写代码
    /********** Begin **********/
    var aLength = arr.length;//待排序数组的长度
    var temp;
    var max = arr[0];
    var maxIndex = 0;
    var indexArr = new Array();//记录最大元素位置的数组
    //进行选择排序
    for(var i = 0;i < aLength-1;i++) {
        for(var j = 1;j < aLength-i;j++) {
            if(arr[j] > max) {//更新最大元素及其索引
                max = arr[j];
                maxIndex = j;
            }
        }
        //记录最大元素所在的位置
        indexArr.push(maxIndex);
        //移动最大元素到索引最大处
        temp = arr[aLength-i-1];
        arr[aLength-i-1] = arr[maxIndex];
        arr[maxIndex] = temp;
        //将最大元素及位置归零
        var max = arr[0];
        var maxIndex = 0;
    }
    return indexArr;
    /*********end*********/
}

JS条件语句

第1关: if-else类型

function mainJs(a) {
    a = parseInt(a);
    //请在此处编写代码
    /********** Begin **********/
    if(a >= 60) {
        return "pass";
    }
    else {
        return "unpass";
    }
    /********** End **********/
}

第2关: switch类型

function mainJs(a) {
    a = parseInt(a);
    //请在此处编写代码
    /********** Begin **********/
    var name;
    switch(a) {
        case 82414:name = "Superior";
        break;
        case 59600:name = "Huron";
        break;
        case 58016:name = "Michigan";
        break;
        case 25744:name = "Erie";
        break;
        case 19554:name = "Ontario";
        break;
        default:name = "error";
        break;
    }
    return name;
    /********** End **********/
}

第3关: 综合练习

//判断一个年份是否为闰年
function judgeLeapYear(year) {
    //请在此处编写代码
    /********** Begin **********/
    var tt="年是闰年";
    var ff="年不是闰年";
    if(year%100==0){
        if(year%400==0){
            
            return year+tt;
        }else{
            
            return year+ff;
        }

    }else{
           if(year%4==0){
               return  year+tt;
           }else{
               return year+ff;
           }
    }  
    /********** End **********/
}

//对输入进行规范化处理
function normalizeInput(input) {
    /********** Begin **********/
    var output;
    switch(input){
    case "中共党员":
    case "党员":
    case "共产党员":output="中共党员";
        break;
        case "中共预备党员":
        case "预备党员":output="中共预备党员";
        break;
        case "团员":
        case "共青团员":output="共青党员";
        break;
    case "大众":
    case "市民":
    case "人民": output="群众";
        break;
    default:  output="错误数据";
        break;    
    }
    return output;
    
    /********** End **********/
}

//判断苹果是否为优质品
function evaluateApple(weight,water) {
    /********** Begin **********/
    if(weight>=200 )
    {return "是优质品";}
    else{
        if(water>=0.7)
        {return "是优质品";}
        else
        {return "不是优质品";}
    }
    /********** End **********/
}

JS循环语句

第1关: while类型

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 ++;//除数加1,继续测试是不是质数
        }
        if(j == i) {//还是没有因数,证明这是一个质数
            sum = sum+i;//加在结果里面
        }
        i = i+1;//测试下一个数是不是质数
    }
    return sum;
    /********** End **********/
}

第2关: do while类型

function mainJs(a,b) {
    a = parseInt(a);
    b = parseInt(b);
    //请在此处编写代码
    /********** Begin **********/
    var sum = 0;//结果
    var i = a+1;//从a后面的第一个数开始累加
    while(i < b) {//直到b前面的第一个数
        sum += i;
        i++;//下一个数
    }
    return sum;//返回结果和
   /********** End **********/
}

第3关: for类型

function mainJs(a) {
    a = parseInt(a);
    //请在此处编写代码
    /********** Begin **********/
    var numLen = a.toString().length;//求出是个几位数
    var num = 1;
    var result = 0;
    for(var i = 0;i < numLen;i++) {
        var curNum = a.toString().substring(i,i+1);//取出其中的第i位数
        result = result+curNum*num;
        num = num*10;
    }
    return result;
    /********** End **********/
}

第4关: for in类型

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) {//以location开头的属性
            result += apple[x];//属性的值拼接
        }
    }
    return result;//返回结果
    /********** End **********/
}

第5关: break和continue的区别——break

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,length = arr.length;i < length;i++) {
        var cur = arr[i];//数组的第i个数
        for(var j = 2;j < cur;j++) {
            if(cur%j == 0) break;//不是质数,不需要再测试
        }
        if(j == cur) break;//已经找到了质数cur
    }
    return arr[i];
    /********** End **********/
}

第6关: break和continue的区别——continue

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;
}

JS函数

第1关: 用函数语句定义函数

//请在此处编写代码
/********** Begin **********/
function mainJs(a,b){
    return a+b;
}
/********** End **********/

第2关: 用表达式定义函数

function mainJs(a) {
    a = parseInt(a);
    //请在此处编写代码
    /********** Begin **********/
    var myFunc = function(b) {
        var first = (b-b%100)/100;//求出百位数
        var second = (b%100-b%100%10)/10;//求出十位上的数
        var third = b-first*100-second*10;//求出各位数
        return first+second+third;
    }
    /********** End **********/
    return myFunc(a);
}

第3关: 函数的调用

//求最大值的函数
function getMax(b,c) {
    return b>c?b:c;
}

//求最小值的函数
var getMin = function(b,c) {
    return b>c?c:b;
}

//对象中的求和函数
var myObject = {
    id:1,
    name:"function",
    myFunc:function(b,c) {
        return b+c;
    }
}

function mainJs(a,b,c) {
    a = parseInt(a);
    b = parseInt(b);
    c = parseInt(c);
    //请在此处编写代码
    /********** Begin **********/
    if(a == 1) {
        return getMax(b,c);
    } else if(a == 2) {
        return getMin(b,c);
    } else {
        return myObject.myFunc(b,c);
    }
    /********** End **********/
}

第4关: 未定义的实参

function mainJs(a,b,c,d) {
    //请在此处编写代码
    /********** Begin **********/
    if(a === undefined) {
        a = "green";
    }
    if(b === undefined) {
        b = "green";
    }
    if(c === undefined) {
        c = "red";
    }
    if(d === undefined) {
        d = "yellow";
    }
    return a+"-"+b+"-"+c+"-"+d;
   /********** End **********/
}

第5关: 实参对象

//请在此处编写代码
/********** Begin **********/
function getMax() {
    var aLength = arguments.length;
    var amax = 0;
    for(var i = 0;i < aLength;i++) {
        if(arguments[i] > amax) 
            amax = arguments[i];
    }
    return amax;
}
/********** End **********/

function mainJs(a) {
    a = parseInt(a);
    switch(a) {
        case 1:return getMax(23,21,56,34,89,34,32,11,66,3,9,55,123);
        case 2:return getMax(23,21,56,34,89,34,32);
        case 3:return getMax(23,21,56,34);
        case 4:return getMax(23,21,56,34,89,34,32,11,66,3,9,55,123,8888);
        case 5:return getMax();
        default:break;
    }
}

第6关: 对象作为参数

var park = {
    name:"Leaf Prak",
    location:"Fifth Avenue",
    todayTourists:4000
};

var computer = {
    name:"Levenon",
    price:"$800",
    memory:"8G"
};

var city = {
    name:"HangZhou",
    country:"Chine",
    population:9400000
}

function objectFunction(object) {
   //请在此处编写代码
    /********** Begin **********/
    var result = "";
    for(x in object) {
        result = result+x+":"+object[x]+",";
    }
    return result;
    /********** End **********/
}

function mainJs(a) {
    a = parseInt(a);
    switch(a) {
        case 1:return objectFunction(park);
        case 2:return objectFunction(computer);
        case 3:return objectFunction(city);
        default:break;
    }
}

第7关: 函数对象

//求数组中奇数元素的个数
function getOddNumber(a) {
    var result = 0;
    for(var i = 0;i < a.length;i++) {
        if(a[i]%2 != 0)
            result++;
    }
    return result;
}

//求数组中偶数元素的个数
function getEvenNumber(a) {
    var result = 0;
    for(var i = 0;i < a.length;i++) {
        if(a[i]%2 == 0)
            result++;
    }
    return result;
}

function getNumber(func,a) {
    //请在此处编写代码
    /*********Begin*********/
    return func(a);
    /*********End*********/
}

//测试接口
function mainJs(b,a) {
    a = a.split(",");
    var aLength = a.length;
    for(var i = 0;i < aLength;i++) {
        a[i] = parseInt(a[i]);
    }
    if(b == "getEvenNumber") {
        return getNumber(getEvenNumber,a);
    } else {
        return getNumber(getOddNumber,a);
    }
}

字符串

第1关: 查找字符串的位置

function mainJs(a,b) {
    //请在此处编写代码
    /********** Begin **********/
    var startIndex = 0;
    var aLength = a.length;//a的长度
    var index = 0;
    var result = 0;
    while(startIndex < aLength) {//还没有匹配到末尾
        index = a.indexOf(b,startIndex);//本次匹配的位置
        if(index == -1) {//后面已经没有匹配的子串
            break;//提前结束整个过程
        }
        startIndex = index+1;//下次匹配的起始位置
        result += index;
    }
    return result;
    /*********End*********/
}

第2关: 求指定位置的字符

function mainJs(a) {
    //请在此处编写代码
    /********** Begin **********/
    var result = "";
    for(var i = 0;i < 6;i++) {//遍历,依次获取前六个数字
        result += a.charAt(i);
    }
    return result;
    /********** End **********/
}

第3关: 字符串的截取

function mainJs(a,b) {
    //请在此处编写代码
    /********** Begin **********/
    if(a.indexOf(b) == -1) {//没有杂质字符串直接返回
        return a;
    } else {
        var startIndex = a.indexOf(b);//杂质字符串起始处
        var endIndex = startIndex+b.length;//杂质字符串结束处
        return a.slice(0,startIndex)+a.slice(endIndex);
    }
    /*********End*********/
}

第4关: 大小写转换

function mainJs(a,b) {
    //请在此处编写代码
    /********** Begin **********/
    var str1 = b.toUpperCase();//把b转换为大写
    var aa = a.split(b);//以b为边界分割a为字符串数组
    a = aa.join(str1);//以转换后的b为边界重新连接字符串数组得到新的a
    return a;
    /*********End*********/
}

第5关: 字符串的分割

function mainJs(a) {
    //请在此处编写代码
    /********** Begin **********/
    var spaceArray = a.split(" ");//以space分割
    var commaArray = a.split(",");//以逗号分隔
    return spaceArray.length+commaArray.length-1;
    /*********End*********/
}

JS运算符

第1关: 算术运算符

function mainJs(a,b) {
//请在此处编写代码
/********** Begin **********/
    var a1 = parseInt(a);
    var b1 = parseInt(b);
    var c = a1%b1;
    a = a.toString();
    b = b.toString();
    c = c.toString();
/********** End **********/
    return a+b+c;
}

第2关: 比较和逻辑运算符

function mainJs(a,b) {
//请在此处编写代码
/********** Begin **********/
    if(a > b) {
        return a&&b;
    }
    else {
        return !a;
    }
/********** End **********/
}

第3关: 条件和赋值运算符

function mainJs(a,b) {
//请在此处编写代码
/********** Begin **********/
    return (a>b)?a:b;
/********** End **********/
}

第4关: 运算符的优先级和结合性

function mainJs(a,b) {
    var a = parseInt(a);
    var b = parseInt(b);
    //请在此处编写代码
    /********** Begin **********/
    var c = (--a+b)*b==24?1:0;
    var d = 4;
    var e = (c*=d)+d;
    /********** End **********/
    return e;
}

正则表达式

第1关: 字符串字面量

function mainJs(a) {
    a = a.replace(",","\n");
    //请在此处编写代码
    /********** Begin **********/
    var pattern = /js\n/;
    /********** End **********/
    return pattern.test(a).toString();
}

第2关: 字符类

function mainJs(a) {
    //请在此处编写代码
    /********** Begin **********/
    var pattern1 = /[a-zA-Z][0-9]/;
    var pattern2 = /A[^0-9]/;
    /********** End **********/
    return pattern1.test(a).toString()+","+pattern2.test(a).toString();
}

第3关: 重复

function mainJs(a) {
    //请在此处编写代码
    /********** Begin **********/
    var pattern1 = /\?+/;  
    var pattern2 = /\+{3,3}/;  
    var pattern3 = /\{\}{1,2}/;  
    var pattern4 = /\\{0,1}/;  
    
    
    /********** End **********/
    return pattern1.test(a).toString()+","+pattern2.test(a).toString()+","+pattern3.test(a).toString()+","+pattern4.test(a).toString();
}

第4关: 选择

function mainJs(a) {
    //请在此处编写代码
    /********** Begin **********/
    var pattern1 = /[0-9]{17}([0-9]|X)/;
    var pattern2 = /2(3|4)[0-9]{4}/;
    var pattern3 = /010|02[012345789]/;
    /********** End **********/
    return pattern1.test(a).toString()+","+pattern2.test(a).toString()+","+pattern3.test(a).toString();
}

第5关: 分组

function mainJs(a) {
    //请在此处编写代码
    /********** Begin **********/
    var pattern1 = /(\?\+){2,}/;
    var pattern2 = /\d(\?|\+)\d/;
    /********** End **********/
    return pattern1.test(a).toString()+","+pattern2.test(a).toString();
}

第6关: 引用

function mainJs(a) {
    //请在此处编写代码
    /********** Begin **********/
    var pattern1 = /([0-9]{3})[^0-9]\1/;
    var pattern2 = /[A-Z]([0-9])[A-Z]\1[A-Z]\1/;
    /********** End **********/
    return pattern1.test(a).toString()+","+pattern2.test(a).toString();
}

第7关: 匹配位置

function mainJs(a) {
     //请在此处编写代码
    /********** Begin **********/
     var pattern = /^js\b/;
    /********** End **********/
     return pattern.test(a).toString();
}

第8关: 修饰符

function mainJs(a) {
    //请在此处编写代码
    /********** Begin **********/
    var pattern = /\bshell\b/ig;
    /********** End **********/
    return a.match(pattern);
}

第9关: 正则表达式的使用

function mainJs(a) {
    //请在此处编写代码
    /********** Begin **********/
    var pattern = /[0-9]/g;
    return a.replace(pattern,"");
    /********** End **********/
}


本文转载自: https://blog.csdn.net/qq_35353972/article/details/127229637
版权归原作者 北沐xxx 所有, 如有侵权,请联系我们删除。

“JavaScript上部分--头歌(educoder)实训作业题目及答案”的评论:

还没有评论