JavaScript上部分--头歌(educoder)实训作业题目及答案
目录
JS简介
第1关: JavaScript基础入门
第2关: JavaScript 与 HTML
第3关: JavaScript 变量
JS 数据类型
第1关: JavaScript 数据类型介绍
第2关: JavaScript 数据类型转换
JS运算符
第1关: 算术运算符
第2关: 比较和逻辑运算符
第3关: 条件和赋值运算符
第4关: 运算符的优先级和结合性
JS对象
第1关: 对象的创建
第2关: 属性的增删改查
第3关: 属性的检测和枚举
JS数组
第1关: 数组的创建、读写和长度
第2关: 数组元素的增减
第3关: 数组的遍历和多维数组
第4关: 数组的常用方法
第5关: 数组的应用——内排序
JS条件语句
第1关: if-else类型
第2关: switch类型
第3关: 综合练习
JS循环语句
第1关: while类型
第2关: do while类型
第3关: for类型
第4关: for in类型
第5关: break和continue的区别——break
第6关: break和continue的区别——continue
JS函数
第1关: 用函数语句定义函数
第2关: 用表达式定义函数
第3关: 函数的调用
第4关: 未定义的实参
第5关: 实参对象
第6关: 对象作为参数
第7关: 函数对象
字符串
第1关: 查找字符串的位置
第2关: 求指定位置的字符
第3关: 字符串的截取
第4关: 大小写转换
第5关: 字符串的分割
JS运算符
第1关: 算术运算符
第2关: 比较和逻辑运算符
第3关: 条件和赋值运算符
第4关: 运算符的优先级和结合性
正则表达式
第1关: 字符串字面量
第2关: 字符类
第3关: 重复
第4关: 选择
第5关: 分组
第6关: 引用
第7关: 匹配位置
第8关: 修饰符
第9关: 正则表达式的使用
JS简介
第1关: JavaScript基础入门
window.alert("Hello,JavaScript!");
第2关: JavaScript 与 HTML
console.log("如何在HTML代码中嵌入JavaScript代码");
第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:"000", 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第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第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第5关: 数组的应用——内排序
function mainJs(a) { var arr = a.split(","); for(var i = 0;i 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 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 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:"0", 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字符串
第1关: 查找字符串的位置
function mainJs(a,b) { //请在此处编写代码 /********** Begin **********/ var startIndex = 0; var aLength = a.length;//a的长度 var index = 0; var result = 0; while(startIndex第2关: 求指定位置的字符
function mainJs(a) { //请在此处编写代码 /********** Begin **********/ var result = ""; for(var i = 0;i第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]/; var pattern2 = /[A-Z]([0-9])[A-Z][A-Z]/; /********** 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 **********/ }